Lines Matching refs:spi
314 static int s3c64xx_spi_prepare_transfer(struct spi_master *spi) in s3c64xx_spi_prepare_transfer() argument
316 struct s3c64xx_spi_driver_data *sdd = spi_master_get_devdata(spi); in s3c64xx_spi_prepare_transfer()
334 spi->dma_rx = sdd->rx_dma.ch; in s3c64xx_spi_prepare_transfer()
343 spi->dma_tx = sdd->tx_dma.ch; in s3c64xx_spi_prepare_transfer()
354 static int s3c64xx_spi_unprepare_transfer(struct spi_master *spi) in s3c64xx_spi_unprepare_transfer() argument
356 struct s3c64xx_spi_driver_data *sdd = spi_master_get_devdata(spi); in s3c64xx_spi_unprepare_transfer()
368 struct spi_device *spi, in s3c64xx_spi_can_dma() argument
377 struct spi_device *spi, in enable_datapath() argument
652 struct spi_device *spi = msg->spi; in s3c64xx_spi_prepare_message() local
653 struct s3c64xx_spi_csinfo *cs = spi->controller_data; in s3c64xx_spi_prepare_message()
656 if (sdd->cur_speed != spi->max_speed_hz in s3c64xx_spi_prepare_message()
657 || sdd->cur_mode != spi->mode in s3c64xx_spi_prepare_message()
658 || sdd->cur_bpw != spi->bits_per_word) { in s3c64xx_spi_prepare_message()
659 sdd->cur_bpw = spi->bits_per_word; in s3c64xx_spi_prepare_message()
660 sdd->cur_speed = spi->max_speed_hz; in s3c64xx_spi_prepare_message()
661 sdd->cur_mode = spi->mode; in s3c64xx_spi_prepare_message()
672 struct spi_device *spi, in s3c64xx_spi_transfer_one() argument
707 enable_datapath(sdd, spi, xfer, use_dma); in s3c64xx_spi_transfer_one()
725 dev_err(&spi->dev, "I/O Error: rx-%d tx-%d res:rx-%c tx-%c len-%d\n", in s3c64xx_spi_transfer_one()
747 struct spi_device *spi) in s3c64xx_get_slave_ctrldata() argument
753 slave_np = spi->dev.of_node; in s3c64xx_get_slave_ctrldata()
755 dev_err(&spi->dev, "device node not found\n"); in s3c64xx_get_slave_ctrldata()
761 dev_err(&spi->dev, "child node 'controller-data' not found\n"); in s3c64xx_get_slave_ctrldata()
783 static int s3c64xx_spi_setup(struct spi_device *spi) in s3c64xx_spi_setup() argument
785 struct s3c64xx_spi_csinfo *cs = spi->controller_data; in s3c64xx_spi_setup()
790 sdd = spi_master_get_devdata(spi->master); in s3c64xx_spi_setup()
791 if (spi->dev.of_node) { in s3c64xx_spi_setup()
792 cs = s3c64xx_get_slave_ctrldata(spi); in s3c64xx_spi_setup()
793 spi->controller_data = cs; in s3c64xx_spi_setup()
800 spi->cs_gpio = cs->line; in s3c64xx_spi_setup()
804 dev_err(&spi->dev, "No CS for SPI(%d)\n", spi->chip_select); in s3c64xx_spi_setup()
808 if (!spi_get_ctldata(spi)) { in s3c64xx_spi_setup()
809 if (gpio_is_valid(spi->cs_gpio)) { in s3c64xx_spi_setup()
810 err = gpio_request_one(spi->cs_gpio, GPIOF_OUT_INIT_HIGH, in s3c64xx_spi_setup()
811 dev_name(&spi->dev)); in s3c64xx_spi_setup()
813 dev_err(&spi->dev, in s3c64xx_spi_setup()
815 spi->cs_gpio, err); in s3c64xx_spi_setup()
820 spi_set_ctldata(spi, cs); in s3c64xx_spi_setup()
834 if (spi->max_speed_hz > speed) in s3c64xx_spi_setup()
835 spi->max_speed_hz = speed; in s3c64xx_spi_setup()
837 psr = clk_get_rate(sdd->src_clk) / 2 / spi->max_speed_hz - 1; in s3c64xx_spi_setup()
843 if (spi->max_speed_hz < speed) { in s3c64xx_spi_setup()
853 if (spi->max_speed_hz >= speed) { in s3c64xx_spi_setup()
854 spi->max_speed_hz = speed; in s3c64xx_spi_setup()
856 dev_err(&spi->dev, "Can't set %dHz transfer speed\n", in s3c64xx_spi_setup()
857 spi->max_speed_hz); in s3c64xx_spi_setup()
876 if (gpio_is_valid(spi->cs_gpio)) in s3c64xx_spi_setup()
877 gpio_free(spi->cs_gpio); in s3c64xx_spi_setup()
878 spi_set_ctldata(spi, NULL); in s3c64xx_spi_setup()
881 if (spi->dev.of_node) in s3c64xx_spi_setup()
887 static void s3c64xx_spi_cleanup(struct spi_device *spi) in s3c64xx_spi_cleanup() argument
889 struct s3c64xx_spi_csinfo *cs = spi_get_ctldata(spi); in s3c64xx_spi_cleanup()
891 if (gpio_is_valid(spi->cs_gpio)) { in s3c64xx_spi_cleanup()
892 gpio_free(spi->cs_gpio); in s3c64xx_spi_cleanup()
893 if (spi->dev.of_node) in s3c64xx_spi_cleanup()
901 spi->cs_gpio = -ENOENT; in s3c64xx_spi_cleanup()
905 spi_set_ctldata(spi, NULL); in s3c64xx_spi_cleanup()
911 struct spi_master *spi = sdd->master; in s3c64xx_spi_irq() local
918 dev_err(&spi->dev, "RX overrun\n"); in s3c64xx_spi_irq()
922 dev_err(&spi->dev, "RX underrun\n"); in s3c64xx_spi_irq()
926 dev_err(&spi->dev, "TX overrun\n"); in s3c64xx_spi_irq()
930 dev_err(&spi->dev, "TX underrun\n"); in s3c64xx_spi_irq()