Lines Matching refs:spi
46 struct spi_device *spi = to_spi_device(dev); in spidev_release() local
49 if (spi->master->cleanup) in spidev_release()
50 spi->master->cleanup(spi); in spidev_release()
52 spi_master_put(spi->master); in spidev_release()
53 kfree(spi); in spidev_release()
59 const struct spi_device *spi = to_spi_device(dev); in modalias_show() local
66 return sprintf(buf, "%s%s\n", SPI_MODULE_PREFIX, spi->modalias); in modalias_show()
101 const struct spi_device *spi = to_spi_device(dev); in spi_match_device() local
113 return !!spi_match_id(sdrv->id_table, spi); in spi_match_device()
115 return strcmp(spi->modalias, drv->name) == 0; in spi_match_device()
120 const struct spi_device *spi = to_spi_device(dev); in spi_uevent() local
127 add_uevent_var(env, "MODALIAS=%s%s", SPI_MODULE_PREFIX, spi->modalias); in spi_uevent()
236 struct spi_device *spi; in spi_alloc_device() local
241 spi = kzalloc(sizeof(*spi), GFP_KERNEL); in spi_alloc_device()
242 if (!spi) { in spi_alloc_device()
247 spi->master = master; in spi_alloc_device()
248 spi->dev.parent = &master->dev; in spi_alloc_device()
249 spi->dev.bus = &spi_bus_type; in spi_alloc_device()
250 spi->dev.release = spidev_release; in spi_alloc_device()
251 spi->cs_gpio = -ENOENT; in spi_alloc_device()
252 device_initialize(&spi->dev); in spi_alloc_device()
253 return spi; in spi_alloc_device()
257 static void spi_dev_set_name(struct spi_device *spi) in spi_dev_set_name() argument
259 struct acpi_device *adev = ACPI_COMPANION(&spi->dev); in spi_dev_set_name()
262 dev_set_name(&spi->dev, "spi-%s", acpi_dev_name(adev)); in spi_dev_set_name()
266 dev_set_name(&spi->dev, "%s.%u", dev_name(&spi->master->dev), in spi_dev_set_name()
267 spi->chip_select); in spi_dev_set_name()
272 struct spi_device *spi = to_spi_device(dev); in spi_dev_check() local
275 if (spi->master == new_spi->master && in spi_dev_check()
276 spi->chip_select == new_spi->chip_select) in spi_dev_check()
290 int spi_add_device(struct spi_device *spi) in spi_add_device() argument
293 struct spi_master *master = spi->master; in spi_add_device()
298 if (spi->chip_select >= master->num_chipselect) { in spi_add_device()
300 spi->chip_select, in spi_add_device()
306 spi_dev_set_name(spi); in spi_add_device()
314 status = bus_for_each_dev(&spi_bus_type, NULL, spi, spi_dev_check); in spi_add_device()
317 spi->chip_select); in spi_add_device()
322 spi->cs_gpio = master->cs_gpios[spi->chip_select]; in spi_add_device()
328 status = spi_setup(spi); in spi_add_device()
331 dev_name(&spi->dev), status); in spi_add_device()
336 status = device_add(&spi->dev); in spi_add_device()
339 dev_name(&spi->dev), status); in spi_add_device()
341 dev_dbg(dev, "registered child %s\n", dev_name(&spi->dev)); in spi_add_device()
462 static void spi_set_cs(struct spi_device *spi, bool enable) in spi_set_cs() argument
464 if (spi->mode & SPI_CS_HIGH) in spi_set_cs()
467 if (spi->cs_gpio >= 0) in spi_set_cs()
468 gpio_set_value(spi->cs_gpio, !enable); in spi_set_cs()
469 else if (spi->master->set_cs) in spi_set_cs()
470 spi->master->set_cs(spi, !enable); in spi_set_cs()
546 if (!master->can_dma(master, msg->spi, xfer)) in __spi_map_msg()
595 if (!master->can_dma(master, msg->spi, xfer)) in spi_unmap_msg()
683 spi_set_cs(msg->spi, true); in spi_transfer_one_message()
691 ret = master->transfer_one(master, msg->spi, xfer); in spi_transfer_one_message()
693 dev_err(&msg->spi->dev, in spi_transfer_one_message()
708 dev_err(&msg->spi->dev, in spi_transfer_one_message()
714 dev_err(&msg->spi->dev, in spi_transfer_one_message()
732 spi_set_cs(msg->spi, false); in spi_transfer_one_message()
734 spi_set_cs(msg->spi, true); in spi_transfer_one_message()
743 spi_set_cs(msg->spi, false); in spi_transfer_one_message()
1095 static int __spi_queued_transfer(struct spi_device *spi, in __spi_queued_transfer() argument
1099 struct spi_master *master = spi->master; in __spi_queued_transfer()
1124 static int spi_queued_transfer(struct spi_device *spi, struct spi_message *msg) in spi_queued_transfer() argument
1126 return __spi_queued_transfer(spi, msg, true); in spi_queued_transfer()
1164 struct spi_device *spi; in of_register_spi_device() local
1169 spi = spi_alloc_device(master); in of_register_spi_device()
1170 if (!spi) { in of_register_spi_device()
1178 rc = of_modalias_node(nc, spi->modalias, in of_register_spi_device()
1179 sizeof(spi->modalias)); in of_register_spi_device()
1193 spi->chip_select = value; in of_register_spi_device()
1197 spi->mode |= SPI_CPHA; in of_register_spi_device()
1199 spi->mode |= SPI_CPOL; in of_register_spi_device()
1201 spi->mode |= SPI_CS_HIGH; in of_register_spi_device()
1203 spi->mode |= SPI_3WIRE; in of_register_spi_device()
1205 spi->mode |= SPI_LSB_FIRST; in of_register_spi_device()
1213 spi->mode |= SPI_TX_DUAL; in of_register_spi_device()
1216 spi->mode |= SPI_TX_QUAD; in of_register_spi_device()
1231 spi->mode |= SPI_RX_DUAL; in of_register_spi_device()
1234 spi->mode |= SPI_RX_QUAD; in of_register_spi_device()
1251 spi->max_speed_hz = value; in of_register_spi_device()
1254 spi->irq = irq_of_parse_and_map(nc, 0); in of_register_spi_device()
1258 spi->dev.of_node = nc; in of_register_spi_device()
1261 rc = spi_add_device(spi); in of_register_spi_device()
1268 return spi; in of_register_spi_device()
1271 spi_dev_put(spi); in of_register_spi_device()
1284 struct spi_device *spi; in of_register_spi_devices() local
1291 spi = of_register_spi_device(master, nc); in of_register_spi_devices()
1292 if (IS_ERR(spi)) in of_register_spi_devices()
1304 struct spi_device *spi = data; in acpi_spi_add_resource() local
1311 spi->chip_select = sb->device_selection; in acpi_spi_add_resource()
1312 spi->max_speed_hz = sb->connection_speed; in acpi_spi_add_resource()
1315 spi->mode |= SPI_CPHA; in acpi_spi_add_resource()
1317 spi->mode |= SPI_CPOL; in acpi_spi_add_resource()
1319 spi->mode |= SPI_CS_HIGH; in acpi_spi_add_resource()
1321 } else if (spi->irq < 0) { in acpi_spi_add_resource()
1325 spi->irq = r.start; in acpi_spi_add_resource()
1338 struct spi_device *spi; in acpi_spi_add_device() local
1346 spi = spi_alloc_device(master); in acpi_spi_add_device()
1347 if (!spi) { in acpi_spi_add_device()
1353 ACPI_COMPANION_SET(&spi->dev, adev); in acpi_spi_add_device()
1354 spi->irq = -1; in acpi_spi_add_device()
1358 acpi_spi_add_resource, spi); in acpi_spi_add_device()
1361 if (ret < 0 || !spi->max_speed_hz) { in acpi_spi_add_device()
1362 spi_dev_put(spi); in acpi_spi_add_device()
1367 strlcpy(spi->modalias, acpi_device_hid(adev), sizeof(spi->modalias)); in acpi_spi_add_device()
1368 if (spi_add_device(spi)) { in acpi_spi_add_device()
1372 spi_dev_put(spi); in acpi_spi_add_device()
1750 int spi_setup(struct spi_device *spi) in spi_setup() argument
1757 if (((spi->mode & SPI_TX_DUAL) && (spi->mode & SPI_TX_QUAD)) || in spi_setup()
1758 ((spi->mode & SPI_RX_DUAL) && (spi->mode & SPI_RX_QUAD))) { in spi_setup()
1759 dev_err(&spi->dev, in spi_setup()
1765 if ((spi->mode & SPI_3WIRE) && (spi->mode & in spi_setup()
1771 bad_bits = spi->mode & ~spi->master->mode_bits; in spi_setup()
1775 dev_warn(&spi->dev, in spi_setup()
1778 spi->mode &= ~ugly_bits; in spi_setup()
1782 dev_err(&spi->dev, "setup: unsupported mode bits %x\n", in spi_setup()
1787 if (!spi->bits_per_word) in spi_setup()
1788 spi->bits_per_word = 8; in spi_setup()
1790 if (!spi->max_speed_hz) in spi_setup()
1791 spi->max_speed_hz = spi->master->max_speed_hz; in spi_setup()
1793 spi_set_cs(spi, false); in spi_setup()
1795 if (spi->master->setup) in spi_setup()
1796 status = spi->master->setup(spi); in spi_setup()
1798 dev_dbg(&spi->dev, "setup mode %d, %s%s%s%s%u bits/w, %u Hz max --> %d\n", in spi_setup()
1799 (int) (spi->mode & (SPI_CPOL | SPI_CPHA)), in spi_setup()
1800 (spi->mode & SPI_CS_HIGH) ? "cs_high, " : "", in spi_setup()
1801 (spi->mode & SPI_LSB_FIRST) ? "lsb, " : "", in spi_setup()
1802 (spi->mode & SPI_3WIRE) ? "3wire, " : "", in spi_setup()
1803 (spi->mode & SPI_LOOP) ? "loopback, " : "", in spi_setup()
1804 spi->bits_per_word, spi->max_speed_hz, in spi_setup()
1811 static int __spi_validate(struct spi_device *spi, struct spi_message *message) in __spi_validate() argument
1813 struct spi_master *master = spi->master; in __spi_validate()
1826 || (spi->mode & SPI_3WIRE)) { in __spi_validate()
1848 xfer->bits_per_word = spi->bits_per_word; in __spi_validate()
1851 xfer->speed_hz = spi->max_speed_hz; in __spi_validate()
1899 !(spi->mode & (SPI_TX_DUAL | SPI_TX_QUAD))) in __spi_validate()
1902 !(spi->mode & SPI_TX_QUAD)) in __spi_validate()
1912 !(spi->mode & (SPI_RX_DUAL | SPI_RX_QUAD))) in __spi_validate()
1915 !(spi->mode & SPI_RX_QUAD)) in __spi_validate()
1925 static int __spi_async(struct spi_device *spi, struct spi_message *message) in __spi_async() argument
1927 struct spi_master *master = spi->master; in __spi_async()
1929 message->spi = spi; in __spi_async()
1933 return master->transfer(spi, message); in __spi_async()
1965 int spi_async(struct spi_device *spi, struct spi_message *message) in spi_async() argument
1967 struct spi_master *master = spi->master; in spi_async()
1971 ret = __spi_validate(spi, message); in spi_async()
1980 ret = __spi_async(spi, message); in spi_async()
2017 int spi_async_locked(struct spi_device *spi, struct spi_message *message) in spi_async_locked() argument
2019 struct spi_master *master = spi->master; in spi_async_locked()
2023 ret = __spi_validate(spi, message); in spi_async_locked()
2029 ret = __spi_async(spi, message); in spi_async_locked()
2051 static int __spi_sync(struct spi_device *spi, struct spi_message *message, in __spi_sync() argument
2056 struct spi_master *master = spi->master; in __spi_sync()
2059 status = __spi_validate(spi, message); in __spi_sync()
2065 message->spi = spi; in __spi_sync()
2080 status = __spi_queued_transfer(spi, message, false); in __spi_sync()
2084 status = spi_async_locked(spi, message); in __spi_sync()
2125 int spi_sync(struct spi_device *spi, struct spi_message *message) in spi_sync() argument
2127 return __spi_sync(spi, message, 0); in spi_sync()
2147 int spi_sync_locked(struct spi_device *spi, struct spi_message *message) in spi_sync_locked() argument
2149 return __spi_sync(spi, message, 1); in spi_sync_locked()
2231 int spi_write_then_read(struct spi_device *spi, in spi_write_then_read() argument
2272 status = spi_sync(spi, &message); in spi_write_then_read()
2325 struct spi_device *spi; in of_spi_notify() local
2333 spi = of_register_spi_device(master, rd->dn); in of_spi_notify()
2336 if (IS_ERR(spi)) { in of_spi_notify()
2339 return notifier_from_errno(PTR_ERR(spi)); in of_spi_notify()
2345 spi = of_find_spi_device_by_node(rd->dn); in of_spi_notify()
2346 if (spi == NULL) in of_spi_notify()
2350 spi_unregister_device(spi); in of_spi_notify()
2353 put_device(&spi->dev); in of_spi_notify()