Lines Matching refs:func

36 	struct sdio_func *func;						\
38 func = dev_to_sdio_func (dev); \
43 sdio_config_attr(class, "0x%02x\n", func->class);
44 sdio_config_attr(vendor, "0x%04x\n", func->vendor);
45 sdio_config_attr(device, "0x%04x\n", func->device);
46 sdio_config_attr(revision, "%u.%u\n", func->major_rev, func->minor_rev);
47 sdio_config_attr(modalias, "sdio:c%02Xv%04Xd%04X\n", func->class, func->vendor, func->device);
52 struct sdio_func *func = dev_to_sdio_func(dev); \
54 if (num > func->num_info) \
56 if (!func->info[num - 1][0]) \
58 return sysfs_emit(buf, "%s\n", func->info[num - 1]); \
81 static const struct sdio_device_id *sdio_match_one(struct sdio_func *func,
84 if (id->class != (__u8)SDIO_ANY_ID && id->class != func->class)
86 if (id->vendor != (__u16)SDIO_ANY_ID && id->vendor != func->vendor)
88 if (id->device != (__u16)SDIO_ANY_ID && id->device != func->device)
93 static const struct sdio_device_id *sdio_match_device(struct sdio_func *func,
102 if (sdio_match_one(func, ids))
113 struct sdio_func *func = dev_to_sdio_func(dev);
116 if (sdio_match_device(func, sdrv))
125 const struct sdio_func *func = dev_to_sdio_func(dev);
129 "SDIO_CLASS=%02X", func->class))
133 "SDIO_ID=%04X:%04X", func->vendor, func->device))
137 "SDIO_REVISION=%u.%u", func->major_rev, func->minor_rev))
140 for (i = 0; i < func->num_info; i++) {
141 if (add_uevent_var(env, "SDIO_INFO%u=%s", i+1, func->info[i]))
147 func->class, func->vendor, func->device))
156 struct sdio_func *func = dev_to_sdio_func(dev);
160 id = sdio_match_device(func, drv);
168 atomic_inc(&func->card->sdio_funcs_probed);
176 if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD) {
184 sdio_claim_host(func);
185 if (mmc_card_removed(func->card))
188 ret = sdio_set_block_size(func, 0);
189 sdio_release_host(func);
193 ret = drv->probe(func, id);
200 atomic_dec(&func->card->sdio_funcs_probed);
201 if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD)
210 struct sdio_func *func = dev_to_sdio_func(dev);
213 if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD)
216 drv->remove(func);
217 atomic_dec(&func->card->sdio_funcs_probed);
219 if (func->irq_handler) {
222 sdio_claim_host(func);
223 sdio_release_irq(func);
224 sdio_release_host(func);
228 if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD)
232 if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD)
292 struct sdio_func *func = dev_to_sdio_func(dev);
294 if (!(func->card->quirks & MMC_QUIRK_NONSTD_SDIO))
295 sdio_free_func_cis(func);
301 put_device(&func->card->dev);
303 kfree(func->info);
304 kfree(func->tmpbuf);
305 kfree(func);
313 struct sdio_func *func;
315 func = kzalloc(sizeof(struct sdio_func), GFP_KERNEL);
316 if (!func)
323 func->tmpbuf = kmalloc(4, GFP_KERNEL);
324 if (!func->tmpbuf) {
325 kfree(func);
329 func->card = card;
331 device_initialize(&func->dev);
337 get_device(&func->card->dev);
339 func->dev.parent = &card->dev;
340 func->dev.bus = &sdio_bus_type;
341 func->dev.release = sdio_release_func;
343 return func;
347 static void sdio_acpi_set_handle(struct sdio_func *func)
349 struct mmc_host *host = func->card->host;
350 u64 addr = ((u64)host->slotno << 16) | func->num;
352 acpi_preset_companion(&func->dev, ACPI_COMPANION(host->parent), addr);
355 static inline void sdio_acpi_set_handle(struct sdio_func *func) {}
358 static void sdio_set_of_node(struct sdio_func *func)
360 struct mmc_host *host = func->card->host;
362 func->dev.of_node = mmc_of_find_child_device(host, func->num);
368 int sdio_add_func(struct sdio_func *func)
372 dev_set_name(&func->dev, "%s:%d", mmc_card_id(func->card), func->num);
374 sdio_set_of_node(func);
375 sdio_acpi_set_handle(func);
376 device_enable_async_suspend(&func->dev);
377 ret = device_add(&func->dev);
379 sdio_func_set_present(func);
390 void sdio_remove_func(struct sdio_func *func)
392 if (sdio_func_present(func))
393 device_del(&func->dev);
395 of_node_put(func->dev.of_node);
396 put_device(&func->dev);