dc68054305
- Restore 29 recipe symlinks (libdrm, qtbase, dbus, sddm, pipewire, etc.) - Restore 33 patches (KDE, libdrm, mesa, pipewire, sddm, wireplumber) - Restore 20+ local/scripts (audit, lint, test, build helpers) - Restore src/cook/scheduler.rs, status.rs, gnu-config/ - Restore scripts/patch-inclusion-gate.sh, run_mini1.sh, validate-collision-log.sh - Recover TLC source from HEAD (was overwritten by 0.2.3 checkout) - Recover 11 local/docs plans from HEAD (were overwritten) - Recover qt6-wayland-smoke symlink from HEAD - Fix MOTD: remove garbled ASCII art, use clean text - Update version: 0.2.0 -> 0.2.4 in os-release, motd, config - Reduce filesystem_size: 1536 -> 512 MiB - Add ABSOLUTE RULE to AGENTS.md: never delete/ignore packages - Reduce pcid scheme log verbosity: info -> debug
123 lines
2.9 KiB
C
123 lines
2.9 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* OF helpers for DMA request / controller
|
|
*
|
|
* Based on of_gpio.h
|
|
*
|
|
* Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
|
|
*/
|
|
|
|
#ifndef __LINUX_OF_DMA_H
|
|
#define __LINUX_OF_DMA_H
|
|
|
|
#include <linux/of.h>
|
|
#include <linux/dmaengine.h>
|
|
|
|
struct device_node;
|
|
|
|
struct of_dma {
|
|
struct list_head of_dma_controllers;
|
|
struct device_node *of_node;
|
|
struct dma_chan *(*of_dma_xlate)
|
|
(struct of_phandle_args *, struct of_dma *);
|
|
void *(*of_dma_route_allocate)
|
|
(struct of_phandle_args *, struct of_dma *);
|
|
struct dma_router *dma_router;
|
|
void *of_dma_data;
|
|
};
|
|
|
|
struct of_dma_filter_info {
|
|
dma_cap_mask_t dma_cap;
|
|
dma_filter_fn filter_fn;
|
|
};
|
|
|
|
#ifdef CONFIG_DMA_OF
|
|
extern int of_dma_controller_register(struct device_node *np,
|
|
struct dma_chan *(*of_dma_xlate)
|
|
(struct of_phandle_args *, struct of_dma *),
|
|
void *data);
|
|
extern void of_dma_controller_free(struct device_node *np);
|
|
|
|
static void __of_dma_controller_free(void *np)
|
|
{
|
|
of_dma_controller_free(np);
|
|
}
|
|
|
|
static inline int
|
|
devm_of_dma_controller_register(struct device *dev, struct device_node *np,
|
|
struct dma_chan *(*of_dma_xlate)
|
|
(struct of_phandle_args *, struct of_dma *),
|
|
void *data)
|
|
{
|
|
int ret;
|
|
|
|
ret = of_dma_controller_register(np, of_dma_xlate, data);
|
|
if (ret)
|
|
return ret;
|
|
|
|
return devm_add_action_or_reset(dev, __of_dma_controller_free, np);
|
|
}
|
|
|
|
extern int of_dma_router_register(struct device_node *np,
|
|
void *(*of_dma_route_allocate)
|
|
(struct of_phandle_args *, struct of_dma *),
|
|
struct dma_router *dma_router);
|
|
#define of_dma_router_free of_dma_controller_free
|
|
|
|
extern struct dma_chan *of_dma_request_slave_channel(struct device_node *np,
|
|
const char *name);
|
|
extern struct dma_chan *of_dma_simple_xlate(struct of_phandle_args *dma_spec,
|
|
struct of_dma *ofdma);
|
|
extern struct dma_chan *of_dma_xlate_by_chan_id(struct of_phandle_args *dma_spec,
|
|
struct of_dma *ofdma);
|
|
|
|
#else
|
|
static inline int of_dma_controller_register(struct device_node *np,
|
|
struct dma_chan *(*of_dma_xlate)
|
|
(struct of_phandle_args *, struct of_dma *),
|
|
void *data)
|
|
{
|
|
return -ENODEV;
|
|
}
|
|
|
|
static inline void of_dma_controller_free(struct device_node *np)
|
|
{
|
|
}
|
|
|
|
static inline int
|
|
devm_of_dma_controller_register(struct device *dev, struct device_node *np,
|
|
struct dma_chan *(*of_dma_xlate)
|
|
(struct of_phandle_args *, struct of_dma *),
|
|
void *data)
|
|
{
|
|
return -ENODEV;
|
|
}
|
|
|
|
static inline int of_dma_router_register(struct device_node *np,
|
|
void *(*of_dma_route_allocate)
|
|
(struct of_phandle_args *, struct of_dma *),
|
|
struct dma_router *dma_router)
|
|
{
|
|
return -ENODEV;
|
|
}
|
|
|
|
#define of_dma_router_free of_dma_controller_free
|
|
|
|
static inline struct dma_chan *of_dma_request_slave_channel(struct device_node *np,
|
|
const char *name)
|
|
{
|
|
return ERR_PTR(-ENODEV);
|
|
}
|
|
|
|
static inline struct dma_chan *of_dma_simple_xlate(struct of_phandle_args *dma_spec,
|
|
struct of_dma *ofdma)
|
|
{
|
|
return NULL;
|
|
}
|
|
|
|
#define of_dma_xlate_by_chan_id NULL
|
|
|
|
#endif
|
|
|
|
#endif /* __LINUX_OF_DMA_H */
|