Lines Matching +full:cap +full:- +full:mmc +full:- +full:highspeed

1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * OpenFirmware bindings for the MMC-over-SPI driver
19 #include <linux/mmc/core.h>
20 #include <linux/mmc/host.h>
22 MODULE_DESCRIPTION("OpenFirmware bindings for the MMC-over-SPI driver");
32 return container_of(dev->platform_data, struct of_mmc_spi, pdata); in to_of_mmc_spi()
36 irqreturn_t (*irqhandler)(int, void *), void *mmc) in of_mmc_spi_init() argument
40 return request_threaded_irq(oms->detect_irq, NULL, irqhandler, in of_mmc_spi_init()
41 IRQF_ONESHOT, dev_name(dev), mmc); in of_mmc_spi_init()
44 static void of_mmc_spi_exit(struct device *dev, void *mmc) in of_mmc_spi_exit() argument
48 free_irq(oms->detect_irq, mmc); in of_mmc_spi_exit()
53 struct mmc_host *mmc = dev_get_drvdata(&spi->dev); in mmc_spi_get_pdata() local
54 struct device *dev = &spi->dev; in mmc_spi_get_pdata()
57 if (dev->platform_data || !dev_fwnode(dev)) in mmc_spi_get_pdata()
58 return dev->platform_data; in mmc_spi_get_pdata()
64 if (mmc_of_parse_voltage(mmc, &oms->pdata.ocr_mask) < 0) in mmc_spi_get_pdata()
67 oms->detect_irq = spi->irq; in mmc_spi_get_pdata()
68 if (oms->detect_irq > 0) { in mmc_spi_get_pdata()
69 oms->pdata.init = of_mmc_spi_init; in mmc_spi_get_pdata()
70 oms->pdata.exit = of_mmc_spi_exit; in mmc_spi_get_pdata()
72 oms->pdata.caps |= MMC_CAP_NEEDS_POLL; in mmc_spi_get_pdata()
74 if (device_property_read_bool(dev, "cap-sd-highspeed")) in mmc_spi_get_pdata()
75 oms->pdata.caps |= MMC_CAP_SD_HIGHSPEED; in mmc_spi_get_pdata()
76 if (device_property_read_bool(dev, "cap-mmc-highspeed")) in mmc_spi_get_pdata()
77 oms->pdata.caps |= MMC_CAP_MMC_HIGHSPEED; in mmc_spi_get_pdata()
79 dev->platform_data = &oms->pdata; in mmc_spi_get_pdata()
80 return dev->platform_data; in mmc_spi_get_pdata()
89 struct device *dev = &spi->dev; in mmc_spi_put_pdata()
92 if (!dev->platform_data || !dev_fwnode(dev)) in mmc_spi_put_pdata()
96 dev->platform_data = NULL; in mmc_spi_put_pdata()