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()
87 struct spi_device *spi = container_of(dev, \
89 return spi_statistics_##field##_show(&spi->statistics, buf); \
292 const struct spi_device *spi = to_spi_device(dev); in spi_match_device() local
304 return !!spi_match_id(sdrv->id_table, spi); in spi_match_device()
306 return strcmp(spi->modalias, drv->name) == 0; in spi_match_device()
311 const struct spi_device *spi = to_spi_device(dev); in spi_uevent() local
318 add_uevent_var(env, "MODALIAS=%s%s", SPI_MODULE_PREFIX, spi->modalias); in spi_uevent()
334 struct spi_device *spi = to_spi_device(dev); in spi_drv_probe() local
342 spi->irq = of_irq_get(dev->of_node, 0); in spi_drv_probe()
343 if (spi->irq == -EPROBE_DEFER) in spi_drv_probe()
345 if (spi->irq < 0) in spi_drv_probe()
346 spi->irq = 0; in spi_drv_probe()
351 ret = sdrv->probe(spi); in spi_drv_probe()
440 struct spi_device *spi; in spi_alloc_device() local
445 spi = kzalloc(sizeof(*spi), GFP_KERNEL); in spi_alloc_device()
446 if (!spi) { in spi_alloc_device()
451 spi->master = master; in spi_alloc_device()
452 spi->dev.parent = &master->dev; in spi_alloc_device()
453 spi->dev.bus = &spi_bus_type; in spi_alloc_device()
454 spi->dev.release = spidev_release; in spi_alloc_device()
455 spi->cs_gpio = -ENOENT; in spi_alloc_device()
457 spin_lock_init(&spi->statistics.lock); in spi_alloc_device()
459 device_initialize(&spi->dev); in spi_alloc_device()
460 return spi; in spi_alloc_device()
464 static void spi_dev_set_name(struct spi_device *spi) in spi_dev_set_name() argument
466 struct acpi_device *adev = ACPI_COMPANION(&spi->dev); in spi_dev_set_name()
469 dev_set_name(&spi->dev, "spi-%s", acpi_dev_name(adev)); in spi_dev_set_name()
473 dev_set_name(&spi->dev, "%s.%u", dev_name(&spi->master->dev), in spi_dev_set_name()
474 spi->chip_select); in spi_dev_set_name()
479 struct spi_device *spi = to_spi_device(dev); in spi_dev_check() local
482 if (spi->master == new_spi->master && in spi_dev_check()
483 spi->chip_select == new_spi->chip_select) in spi_dev_check()
497 int spi_add_device(struct spi_device *spi) in spi_add_device() argument
500 struct spi_master *master = spi->master; in spi_add_device()
505 if (spi->chip_select >= master->num_chipselect) { in spi_add_device()
507 spi->chip_select, in spi_add_device()
513 spi_dev_set_name(spi); in spi_add_device()
521 status = bus_for_each_dev(&spi_bus_type, NULL, spi, spi_dev_check); in spi_add_device()
524 spi->chip_select); in spi_add_device()
529 spi->cs_gpio = master->cs_gpios[spi->chip_select]; in spi_add_device()
535 status = spi_setup(spi); in spi_add_device()
538 dev_name(&spi->dev), status); in spi_add_device()
543 status = device_add(&spi->dev); in spi_add_device()
546 dev_name(&spi->dev), status); in spi_add_device()
548 dev_dbg(dev, "registered child %s\n", dev_name(&spi->dev)); in spi_add_device()
671 static void spi_set_cs(struct spi_device *spi, bool enable) in spi_set_cs() argument
673 if (spi->mode & SPI_CS_HIGH) in spi_set_cs()
676 if (gpio_is_valid(spi->cs_gpio)) in spi_set_cs()
677 gpio_set_value(spi->cs_gpio, !enable); in spi_set_cs()
678 else if (spi->master->set_cs) in spi_set_cs()
679 spi->master->set_cs(spi, !enable); in spi_set_cs()
772 if (!master->can_dma(master, msg->spi, xfer)) in __spi_map_msg()
819 if (!master->can_dma(master, msg->spi, xfer)) in __spi_unmap_msg()
926 struct spi_statistics *stats = &msg->spi->statistics; in spi_transfer_one_message()
928 spi_set_cs(msg->spi, true); in spi_transfer_one_message()
942 ret = master->transfer_one(master, msg->spi, xfer); in spi_transfer_one_message()
948 dev_err(&msg->spi->dev, in spi_transfer_one_message()
967 dev_err(&msg->spi->dev, in spi_transfer_one_message()
973 dev_err(&msg->spi->dev, in spi_transfer_one_message()
991 spi_set_cs(msg->spi, false); in spi_transfer_one_message()
993 spi_set_cs(msg->spi, true); in spi_transfer_one_message()
1002 spi_set_cs(msg->spi, false); in spi_transfer_one_message()
1356 static int __spi_queued_transfer(struct spi_device *spi, in __spi_queued_transfer() argument
1360 struct spi_master *master = spi->master; in __spi_queued_transfer()
1387 static int spi_queued_transfer(struct spi_device *spi, struct spi_message *msg) in spi_queued_transfer() argument
1389 return __spi_queued_transfer(spi, msg, true); in spi_queued_transfer()
1427 struct spi_device *spi; in of_register_spi_device() local
1432 spi = spi_alloc_device(master); in of_register_spi_device()
1433 if (!spi) { in of_register_spi_device()
1441 rc = of_modalias_node(nc, spi->modalias, in of_register_spi_device()
1442 sizeof(spi->modalias)); in of_register_spi_device()
1456 spi->chip_select = value; in of_register_spi_device()
1460 spi->mode |= SPI_CPHA; in of_register_spi_device()
1462 spi->mode |= SPI_CPOL; in of_register_spi_device()
1464 spi->mode |= SPI_CS_HIGH; in of_register_spi_device()
1466 spi->mode |= SPI_3WIRE; in of_register_spi_device()
1468 spi->mode |= SPI_LSB_FIRST; in of_register_spi_device()
1476 spi->mode |= SPI_TX_DUAL; in of_register_spi_device()
1479 spi->mode |= SPI_TX_QUAD; in of_register_spi_device()
1494 spi->mode |= SPI_RX_DUAL; in of_register_spi_device()
1497 spi->mode |= SPI_RX_QUAD; in of_register_spi_device()
1514 spi->max_speed_hz = value; in of_register_spi_device()
1518 spi->dev.of_node = nc; in of_register_spi_device()
1521 rc = spi_add_device(spi); in of_register_spi_device()
1528 return spi; in of_register_spi_device()
1531 spi_dev_put(spi); in of_register_spi_device()
1544 struct spi_device *spi; in of_register_spi_devices() local
1551 spi = of_register_spi_device(master, nc); in of_register_spi_devices()
1552 if (IS_ERR(spi)) in of_register_spi_devices()
1564 struct spi_device *spi = data; in acpi_spi_add_resource() local
1571 spi->chip_select = sb->device_selection; in acpi_spi_add_resource()
1572 spi->max_speed_hz = sb->connection_speed; in acpi_spi_add_resource()
1575 spi->mode |= SPI_CPHA; in acpi_spi_add_resource()
1577 spi->mode |= SPI_CPOL; in acpi_spi_add_resource()
1579 spi->mode |= SPI_CS_HIGH; in acpi_spi_add_resource()
1581 } else if (spi->irq < 0) { in acpi_spi_add_resource()
1585 spi->irq = r.start; in acpi_spi_add_resource()
1598 struct spi_device *spi; in acpi_spi_add_device() local
1606 spi = spi_alloc_device(master); in acpi_spi_add_device()
1607 if (!spi) { in acpi_spi_add_device()
1613 ACPI_COMPANION_SET(&spi->dev, adev); in acpi_spi_add_device()
1614 spi->irq = -1; in acpi_spi_add_device()
1618 acpi_spi_add_resource, spi); in acpi_spi_add_device()
1621 if (ret < 0 || !spi->max_speed_hz) { in acpi_spi_add_device()
1622 spi_dev_put(spi); in acpi_spi_add_device()
1627 strlcpy(spi->modalias, acpi_device_hid(adev), sizeof(spi->modalias)); in acpi_spi_add_device()
1628 if (spi_add_device(spi)) { in acpi_spi_add_device()
1632 spi_dev_put(spi); in acpi_spi_add_device()
2035 int spi_setup(struct spi_device *spi) in spi_setup() argument
2042 if (((spi->mode & SPI_TX_DUAL) && (spi->mode & SPI_TX_QUAD)) || in spi_setup()
2043 ((spi->mode & SPI_RX_DUAL) && (spi->mode & SPI_RX_QUAD))) { in spi_setup()
2044 dev_err(&spi->dev, in spi_setup()
2050 if ((spi->mode & SPI_3WIRE) && (spi->mode & in spi_setup()
2056 bad_bits = spi->mode & ~spi->master->mode_bits; in spi_setup()
2060 dev_warn(&spi->dev, in spi_setup()
2063 spi->mode &= ~ugly_bits; in spi_setup()
2067 dev_err(&spi->dev, "setup: unsupported mode bits %x\n", in spi_setup()
2072 if (!spi->bits_per_word) in spi_setup()
2073 spi->bits_per_word = 8; in spi_setup()
2075 status = __spi_validate_bits_per_word(spi->master, spi->bits_per_word); in spi_setup()
2079 if (!spi->max_speed_hz) in spi_setup()
2080 spi->max_speed_hz = spi->master->max_speed_hz; in spi_setup()
2082 if (spi->master->setup) in spi_setup()
2083 status = spi->master->setup(spi); in spi_setup()
2085 spi_set_cs(spi, false); in spi_setup()
2087 dev_dbg(&spi->dev, "setup mode %d, %s%s%s%s%u bits/w, %u Hz max --> %d\n", in spi_setup()
2088 (int) (spi->mode & (SPI_CPOL | SPI_CPHA)), in spi_setup()
2089 (spi->mode & SPI_CS_HIGH) ? "cs_high, " : "", in spi_setup()
2090 (spi->mode & SPI_LSB_FIRST) ? "lsb, " : "", in spi_setup()
2091 (spi->mode & SPI_3WIRE) ? "3wire, " : "", in spi_setup()
2092 (spi->mode & SPI_LOOP) ? "loopback, " : "", in spi_setup()
2093 spi->bits_per_word, spi->max_speed_hz, in spi_setup()
2100 static int __spi_validate(struct spi_device *spi, struct spi_message *message) in __spi_validate() argument
2102 struct spi_master *master = spi->master; in __spi_validate()
2115 || (spi->mode & SPI_3WIRE)) { in __spi_validate()
2138 xfer->bits_per_word = spi->bits_per_word; in __spi_validate()
2141 xfer->speed_hz = spi->max_speed_hz; in __spi_validate()
2185 !(spi->mode & (SPI_TX_DUAL | SPI_TX_QUAD))) in __spi_validate()
2188 !(spi->mode & SPI_TX_QUAD)) in __spi_validate()
2198 !(spi->mode & (SPI_RX_DUAL | SPI_RX_QUAD))) in __spi_validate()
2201 !(spi->mode & SPI_RX_QUAD)) in __spi_validate()
2211 static int __spi_async(struct spi_device *spi, struct spi_message *message) in __spi_async() argument
2213 struct spi_master *master = spi->master; in __spi_async()
2215 message->spi = spi; in __spi_async()
2218 SPI_STATISTICS_INCREMENT_FIELD(&spi->statistics, spi_async); in __spi_async()
2222 return master->transfer(spi, message); in __spi_async()
2256 int spi_async(struct spi_device *spi, struct spi_message *message) in spi_async() argument
2258 struct spi_master *master = spi->master; in spi_async()
2262 ret = __spi_validate(spi, message); in spi_async()
2271 ret = __spi_async(spi, message); in spi_async()
2310 int spi_async_locked(struct spi_device *spi, struct spi_message *message) in spi_async_locked() argument
2312 struct spi_master *master = spi->master; in spi_async_locked()
2316 ret = __spi_validate(spi, message); in spi_async_locked()
2322 ret = __spi_async(spi, message); in spi_async_locked()
2344 static int __spi_sync(struct spi_device *spi, struct spi_message *message, in __spi_sync() argument
2349 struct spi_master *master = spi->master; in __spi_sync()
2352 status = __spi_validate(spi, message); in __spi_sync()
2358 message->spi = spi; in __spi_sync()
2361 SPI_STATISTICS_INCREMENT_FIELD(&spi->statistics, spi_sync); in __spi_sync()
2376 status = __spi_queued_transfer(spi, message, false); in __spi_sync()
2380 status = spi_async_locked(spi, message); in __spi_sync()
2393 SPI_STATISTICS_INCREMENT_FIELD(&spi->statistics, in __spi_sync()
2426 int spi_sync(struct spi_device *spi, struct spi_message *message) in spi_sync() argument
2428 return __spi_sync(spi, message, 0); in spi_sync()
2448 int spi_sync_locked(struct spi_device *spi, struct spi_message *message) in spi_sync_locked() argument
2450 return __spi_sync(spi, message, 1); in spi_sync_locked()
2534 int spi_write_then_read(struct spi_device *spi, in spi_write_then_read() argument
2575 status = spi_sync(spi, &message); in spi_write_then_read()
2628 struct spi_device *spi; in of_spi_notify() local
2636 spi = of_register_spi_device(master, rd->dn); in of_spi_notify()
2639 if (IS_ERR(spi)) { in of_spi_notify()
2642 return notifier_from_errno(PTR_ERR(spi)); in of_spi_notify()
2648 spi = of_find_spi_device_by_node(rd->dn); in of_spi_notify()
2649 if (spi == NULL) in of_spi_notify()
2653 spi_unregister_device(spi); in of_spi_notify()
2656 put_device(&spi->dev); in of_spi_notify()