Lines Matching refs:func

35 	struct sdio_func *func;						\
37 func = dev_to_sdio_func (dev); \
38 return sprintf (buf, format_string, func->field); \
48 struct sdio_func *func = dev_to_sdio_func (dev); in modalias_show() local
51 func->class, func->vendor, func->device); in modalias_show()
64 static const struct sdio_device_id *sdio_match_one(struct sdio_func *func, in sdio_match_one() argument
67 if (id->class != (__u8)SDIO_ANY_ID && id->class != func->class) in sdio_match_one()
69 if (id->vendor != (__u16)SDIO_ANY_ID && id->vendor != func->vendor) in sdio_match_one()
71 if (id->device != (__u16)SDIO_ANY_ID && id->device != func->device) in sdio_match_one()
76 static const struct sdio_device_id *sdio_match_device(struct sdio_func *func, in sdio_match_device() argument
85 if (sdio_match_one(func, ids)) in sdio_match_device()
96 struct sdio_func *func = dev_to_sdio_func(dev); in sdio_bus_match() local
99 if (sdio_match_device(func, sdrv)) in sdio_bus_match()
108 struct sdio_func *func = dev_to_sdio_func(dev); in sdio_bus_uevent() local
111 "SDIO_CLASS=%02X", func->class)) in sdio_bus_uevent()
115 "SDIO_ID=%04X:%04X", func->vendor, func->device)) in sdio_bus_uevent()
120 func->class, func->vendor, func->device)) in sdio_bus_uevent()
129 struct sdio_func *func = dev_to_sdio_func(dev); in sdio_bus_probe() local
133 id = sdio_match_device(func, drv); in sdio_bus_probe()
147 if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD) { in sdio_bus_probe()
155 sdio_claim_host(func); in sdio_bus_probe()
156 ret = sdio_set_block_size(func, 0); in sdio_bus_probe()
157 sdio_release_host(func); in sdio_bus_probe()
161 ret = drv->probe(func, id); in sdio_bus_probe()
168 if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD) in sdio_bus_probe()
177 struct sdio_func *func = dev_to_sdio_func(dev); in sdio_bus_remove() local
180 if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD) in sdio_bus_remove()
183 drv->remove(func); in sdio_bus_remove()
185 if (func->irq_handler) { in sdio_bus_remove()
188 sdio_claim_host(func); in sdio_bus_remove()
189 sdio_release_irq(func); in sdio_bus_remove()
190 sdio_release_host(func); in sdio_bus_remove()
194 if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD) in sdio_bus_remove()
198 if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD) in sdio_bus_remove()
260 struct sdio_func *func = dev_to_sdio_func(dev); in sdio_release_func() local
262 sdio_free_func_cis(func); in sdio_release_func()
264 kfree(func->info); in sdio_release_func()
265 kfree(func->tmpbuf); in sdio_release_func()
266 kfree(func); in sdio_release_func()
274 struct sdio_func *func; in sdio_alloc_func() local
276 func = kzalloc(sizeof(struct sdio_func), GFP_KERNEL); in sdio_alloc_func()
277 if (!func) in sdio_alloc_func()
284 func->tmpbuf = kmalloc(4, GFP_KERNEL); in sdio_alloc_func()
285 if (!func->tmpbuf) { in sdio_alloc_func()
286 kfree(func); in sdio_alloc_func()
290 func->card = card; in sdio_alloc_func()
292 device_initialize(&func->dev); in sdio_alloc_func()
294 func->dev.parent = &card->dev; in sdio_alloc_func()
295 func->dev.bus = &sdio_bus_type; in sdio_alloc_func()
296 func->dev.release = sdio_release_func; in sdio_alloc_func()
298 return func; in sdio_alloc_func()
302 static void sdio_acpi_set_handle(struct sdio_func *func) in sdio_acpi_set_handle() argument
304 struct mmc_host *host = func->card->host; in sdio_acpi_set_handle()
305 u64 addr = ((u64)host->slotno << 16) | func->num; in sdio_acpi_set_handle()
307 acpi_preset_companion(&func->dev, ACPI_COMPANION(host->parent), addr); in sdio_acpi_set_handle()
310 static inline void sdio_acpi_set_handle(struct sdio_func *func) {} in sdio_acpi_set_handle() argument
313 static void sdio_set_of_node(struct sdio_func *func) in sdio_set_of_node() argument
315 struct mmc_host *host = func->card->host; in sdio_set_of_node()
317 func->dev.of_node = mmc_of_find_child_device(host, func->num); in sdio_set_of_node()
323 int sdio_add_func(struct sdio_func *func) in sdio_add_func() argument
327 dev_set_name(&func->dev, "%s:%d", mmc_card_id(func->card), func->num); in sdio_add_func()
329 sdio_set_of_node(func); in sdio_add_func()
330 sdio_acpi_set_handle(func); in sdio_add_func()
331 device_enable_async_suspend(&func->dev); in sdio_add_func()
332 ret = device_add(&func->dev); in sdio_add_func()
334 sdio_func_set_present(func); in sdio_add_func()
345 void sdio_remove_func(struct sdio_func *func) in sdio_remove_func() argument
347 if (!sdio_func_present(func)) in sdio_remove_func()
350 device_del(&func->dev); in sdio_remove_func()
351 of_node_put(func->dev.of_node); in sdio_remove_func()
352 put_device(&func->dev); in sdio_remove_func()