| /linux/drivers/clk/ |
| H A D | clk-devres.c | 137 struct clk_bulk_devres *devres = res; in devm_clk_bulk_release() local 139 clk_bulk_put(devres->num_clks, devres->clks); in devm_clk_bulk_release() 145 struct clk_bulk_devres *devres; in __devm_clk_bulk_get() local 148 devres = devres_alloc(devm_clk_bulk_release, in __devm_clk_bulk_get() 149 sizeof(*devres), GFP_KERNEL); in __devm_clk_bulk_get() 150 if (!devres) in __devm_clk_bulk_get() 158 devres->clks = clks; in __devm_clk_bulk_get() 159 devres->num_clks = num_clks; in __devm_clk_bulk_get() 160 devres_add(dev, devres); in __devm_clk_bulk_get() 162 devres_free(devres); in __devm_clk_bulk_get() [all …]
|
| /linux/drivers/base/ |
| H A D | devres.c | 26 struct devres { struct 100 if (unlikely(check_add_overflow(sizeof(struct devres), in check_dr_size() 110 static __always_inline struct devres *alloc_dr(dr_release_t release, in alloc_dr() 114 struct devres *dr; in alloc_dr() 125 memset(dr, 0, offsetof(struct devres, data)); in alloc_dr() 165 struct devres *dr; in __devres_alloc_node() 205 struct devres *dr = container_of(node, struct devres, node); in devres_for_each_res() 226 struct devres *dr = container_of(res, struct devres, data); in devres_free() 245 struct devres *dr = container_of(res, struct devres, data); in devres_add() 254 static struct devres *find_dr(struct device *dev, dr_release_t release, in find_dr() [all …]
|
| H A D | Kconfig | 145 This option enables kernel parameter devres.log. If set to 146 non-zero, devres debug messages are printed. Select this if 147 you are having a problem with devres or want to debug 148 resource management for a managed device. devres.log can be
|
| H A D | Makefile | 6 cpu.o firmware.o init.o map.o devres.o \
|
| /linux/drivers/interconnect/ |
| H A D | bulk.c | 126 struct icc_bulk_devres *devres = res; in devm_icc_bulk_release() local 128 icc_bulk_put(devres->num_paths, devres->paths); in devm_icc_bulk_release() 141 struct icc_bulk_devres *devres; in devm_of_icc_bulk_get() local 144 devres = devres_alloc(devm_icc_bulk_release, sizeof(*devres), GFP_KERNEL); in devm_of_icc_bulk_get() 145 if (!devres) in devm_of_icc_bulk_get() 150 devres->paths = paths; in devm_of_icc_bulk_get() 151 devres->num_paths = num_paths; in devm_of_icc_bulk_get() 152 devres_add(dev, devres); in devm_of_icc_bulk_get() 154 devres_free(devres); in devm_of_icc_bulk_get()
|
| /linux/Documentation/driver-api/driver-model/ |
| H A D | devres.rst | 13 3. Devres Group : Group devres'es and release them together 22 devres came up while trying to convert libata to use iomap. Each 50 devres is basically linked list of arbitrarily sized memory areas 51 associated with a struct device. Each devres entry is associated with 52 a release function. A devres can be released in several ways. No 53 matter what, all devres entries are released on driver detach. On 55 devres entry is freed. 58 drivers using devres. For example, coherent DMA memory is acquired 133 devres. Complexity is shifted from less maintained low level drivers 148 Devres entries can be grouped using devres group. When a group is [all …]
|
| H A D | index.rst | 12 devres
|
| /linux/Documentation/translations/zh_CN/driver-api/phy/ |
| H A D | phy.rst | 120 获取 PHY 后使用 devres 将设备与 PHY 关联。在驱动程序分离时,将在 121 devres 数据上调用 release 函数并释放 devres 数据。当 phy 是可选 177 联的 devres。
|
| /linux/drivers/hwtracing/intel_th/ |
| H A D | core.c | 635 struct resource *devres = th->resource; in intel_th_subdevice_alloc() local 649 res[r].end = resource_size(&devres[bar]) - 1; in intel_th_subdevice_alloc() 653 res[r].start += devres[bar].start; in intel_th_subdevice_alloc() 654 res[r].end += devres[bar].start; in intel_th_subdevice_alloc() 876 struct resource *devres, unsigned int ndevres) in intel_th_alloc() argument 902 switch (devres[r].flags & IORESOURCE_TYPE_BITS) { in intel_th_alloc() 904 th->resource[nr_mmios++] = devres[r]; in intel_th_alloc() 907 err = devm_request_irq(dev, devres[r].start, in intel_th_alloc() 914 th->irq = devres[r].start; in intel_th_alloc() 919 devres[r].flags); in intel_th_alloc()
|
| /linux/Documentation/driver-api/firmware/ |
| H A D | firmware_cache.rst | 26 * The firmware cache is setup by adding a devres entry for each device that 36 criteria the firmware cache is setup by adding a devres entry for the 39 * The firmware devres entry is maintained throughout the lifetime of the
|
| /linux/drivers/reset/ |
| H A D | core.c | 1222 struct reset_control_bulk_devres *devres = res; in devm_reset_control_bulk_release() local 1224 reset_control_bulk_put(devres->num_rstcs, devres->rstcs); in devm_reset_control_bulk_release() 1229 struct reset_control_bulk_devres *devres = res; in devm_reset_control_bulk_release_deasserted() local 1231 reset_control_bulk_assert(devres->num_rstcs, devres->rstcs); in devm_reset_control_bulk_release_deasserted() 1232 reset_control_bulk_put(devres->num_rstcs, devres->rstcs); in devm_reset_control_bulk_release_deasserted()
|
| /linux/drivers/iommu/riscv/ |
| H A D | iommu.c | 57 struct riscv_iommu_devres *devres = res; in riscv_iommu_devres_pages_release() local 59 iommu_free_pages(devres->addr); in riscv_iommu_devres_pages_release() 64 struct riscv_iommu_devres *devres = res; in riscv_iommu_devres_pages_match() local 67 return devres->addr == target->addr; in riscv_iommu_devres_pages_match() 73 struct riscv_iommu_devres *devres; in riscv_iommu_get_pages() local 81 devres = devres_alloc(riscv_iommu_devres_pages_release, in riscv_iommu_get_pages() 84 if (unlikely(!devres)) { in riscv_iommu_get_pages() 89 devres->addr = addr; in riscv_iommu_get_pages() 91 devres_add(iommu->dev, devres); in riscv_iommu_get_pages() 98 struct riscv_iommu_devres devres = { .addr = addr }; in riscv_iommu_free_pages() local [all …]
|
| /linux/rust/kernel/pci/ |
| H A D | irq.rs | 10 devres, 159 devres::register(dev.as_ref(), irq_vecs, GFP_KERNEL)?; in register()
|
| H A D | io.rs | 9 devres::Devres,
|
| /linux/drivers/spmi/ |
| H A D | Makefile | 5 obj-$(CONFIG_SPMI) += spmi.o spmi-devres.o
|
| /linux/Documentation/translations/zh_CN/driver-api/gpio/ |
| H A D | index.rst | 59 drivers/gpio/gpiolib-devres.c
|
| /linux/kernel/irq/ |
| H A D | Makefile | 3 obj-y := irqdesc.o handle.o manage.o spurious.o resend.o chip.o dummychip.o devres.o kexec.o
|
| /linux/drivers/hid/ |
| H A D | wacom_sys.c | 1252 struct wacom_sysfs_group_devres *devres = res; in wacom_devm_sysfs_group_release() local 1253 struct kobject *kobj = devres->root; in wacom_devm_sysfs_group_release() 1256 __func__, devres->group->name); in wacom_devm_sysfs_group_release() 1257 sysfs_remove_group(kobj, devres->group); in wacom_devm_sysfs_group_release() 1264 struct wacom_sysfs_group_devres *devres; in __wacom_devm_sysfs_create_group() local 1267 devres = devres_alloc(wacom_devm_sysfs_group_release, in __wacom_devm_sysfs_create_group() 1270 if (!devres) in __wacom_devm_sysfs_create_group() 1273 devres->group = group; in __wacom_devm_sysfs_create_group() 1274 devres->root = root; in __wacom_devm_sysfs_create_group() 1276 error = sysfs_create_group(devres->root, group); in __wacom_devm_sysfs_create_group() [all …]
|
| /linux/samples/rust/ |
| H A D | rust_i2c_client.rs | 74 devres::Devres,
|
| H A D | rust_driver_pci.rs | 7 use kernel::{c_str, device::Core, devres::Devres, pci, prelude::*, sync::aref::ARef};
|
| H A D | rust_driver_auxiliary.rs | 10 devres::Devres,
|
| /linux/drivers/gpu/nova-core/ |
| H A D | driver.rs | 7 devres::Devres,
|
| /linux/drivers/pwm/ |
| H A D | pwm_th1520.rs | 28 devres, 96 iomem: devres::Devres<IoMem<TH1520_PWM_REG_SIZE>>,
|
| /linux/drivers/pci/ |
| H A D | Makefile | 8 setup-bus.o vc.o mmap.o devres.o
|
| /linux/Documentation/hwmon/ |
| H A D | submitting-patches.rst | 94 * Use devres functions whenever possible to allocate resources. For rationale 95 and supported functions, please see Documentation/driver-api/driver-model/devres.rst. 96 If a function is not supported by devres, consider using devm_add_action().
|