Lines Matching +full:spi +full:- +full:gpio

2  * scf0403.c -- support for DataImage SCF0403 LCD
12 * U-Boot port: Nikita Kiryanov <nikita@compulab.co.il>
14 * SPDX-License-Identifier: GPL-2.0+
18 #include <asm/gpio.h>
19 #include <spi.h>
33 struct spi_slave *spi; member
138 static void scf0403_gpio_reset(unsigned int gpio) in scf0403_gpio_reset() argument
140 if (!gpio_is_valid(gpio)) in scf0403_gpio_reset()
143 gpio_set_value(gpio, 1); in scf0403_gpio_reset()
145 gpio_set_value(gpio, 0); in scf0403_gpio_reset()
147 gpio_set_value(gpio, 1); in scf0403_gpio_reset()
151 static int scf0403_spi_read_rddid(struct spi_slave *spi, u32 *rddid) in scf0403_spi_read_rddid() argument
158 error = spi_set_wordlen(spi, 9); in scf0403_spi_read_rddid()
163 error = spi_xfer(spi, 9, &cmd, NULL, SPI_XFER_ONCE); in scf0403_spi_read_rddid()
170 * According to the datasheet - first parameter is the dummy data. in scf0403_spi_read_rddid()
172 error = spi_xfer(spi, 9, NULL, &dummy_buf, SPI_XFER_ONCE); in scf0403_spi_read_rddid()
176 error = spi_set_wordlen(spi, 8); in scf0403_spi_read_rddid()
181 error = spi_xfer(spi, 8, NULL, &ids_buf, SPI_XFER_ONCE); in scf0403_spi_read_rddid()
190 static int scf0403_spi_transfer(struct spi_slave *spi, struct scf0403_cmd *cmd) in scf0403_spi_transfer() argument
193 u32 command = cmd->cmd; in scf0403_spi_transfer()
196 error = spi_set_wordlen(spi, 9); in scf0403_spi_transfer()
200 error = spi_xfer(spi, 9, &command, NULL, SPI_XFER_ONCE); in scf0403_spi_transfer()
204 for (i = 0; i < cmd->count; i++) { in scf0403_spi_transfer()
205 msg = (cmd->params[i] | 0x100); in scf0403_spi_transfer()
206 error = spi_xfer(spi, 9, &msg, NULL, SPI_XFER_ONCE); in scf0403_spi_transfer()
219 scf0403_gpio_reset(priv->reset_gpio); in scf0403_lcd_init()
221 for (i = 0; i < priv->seq_size; i++) { in scf0403_lcd_init()
222 if (scf0403_spi_transfer(priv->spi, &priv->init_seq[i].cmd) < 0) in scf0403_lcd_init()
223 puts("SPI transfer failed\n"); in scf0403_lcd_init()
225 mdelay(priv->init_seq[i].delay_ms); in scf0403_lcd_init()
229 static int scf0403_request_reset_gpio(unsigned gpio) in scf0403_request_reset_gpio() argument
231 int err = gpio_request(gpio, "lcd reset"); in scf0403_request_reset_gpio()
236 err = gpio_direction_output(gpio, 0); in scf0403_request_reset_gpio()
238 gpio_free(gpio); in scf0403_request_reset_gpio()
250 printf("Failed requesting reset GPIO%d: %d\n", in scf0403_init()
257 priv.spi = spi_setup_slave(3, 0, 1000000, SPI_MODE_0); in scf0403_init()
258 error = spi_claim_bus(priv.spi); in scf0403_init()
265 error = scf0403_spi_read_rddid(priv.spi, &priv.rddid); in scf0403_init()
282 scf0403_spi_transfer(priv.spi, &scf0403_cmd_dison); in scf0403_init()
284 scf0403_spi_transfer(priv.spi, &scf0403_cmd_slpout); in scf0403_init()
285 spi_release_bus(priv.spi); in scf0403_init()
290 spi_release_bus(priv.spi); in scf0403_init()