xref: /rk3399_ARM-atf/include/drivers/gpio_spi.h (revision 7e848540159ba8fbb0577c76e4dc0c5bbc542489)
1*3c54570aSAbhi Singh /*
2*3c54570aSAbhi Singh  * Copyright (c) 2025, Arm Limited. All rights reserved.
3*3c54570aSAbhi Singh  *
4*3c54570aSAbhi Singh  * SPDX-License-Identifier: BSD-3-Clause
5*3c54570aSAbhi Singh  */
6*3c54570aSAbhi Singh 
7*3c54570aSAbhi Singh #ifndef GPIO_SPI_H
8*3c54570aSAbhi Singh #define GPIO_SPI_H
9*3c54570aSAbhi Singh 
10*3c54570aSAbhi Singh #include <stdint.h>
11*3c54570aSAbhi Singh 
12*3c54570aSAbhi Singh struct gpio_spi_data {
13*3c54570aSAbhi Singh 	uint8_t cs_gpio, sclk_gpio, mosi_gpio, miso_gpio, reset_gpio;
14*3c54570aSAbhi Singh 	uint32_t spi_delay_us;
15*3c54570aSAbhi Singh 	unsigned int spi_mode;
16*3c54570aSAbhi Singh };
17*3c54570aSAbhi Singh 
18*3c54570aSAbhi Singh struct spi_ops {
19*3c54570aSAbhi Singh 	void (*get_access)(void);
20*3c54570aSAbhi Singh 	void (*start)(void);
21*3c54570aSAbhi Singh 	void (*stop)(void);
22*3c54570aSAbhi Singh 	int (*xfer)(unsigned int bitlen, const void *dout, void *din);
23*3c54570aSAbhi Singh };
24*3c54570aSAbhi Singh 
25*3c54570aSAbhi Singh struct spi_plat {
26*3c54570aSAbhi Singh 	struct gpio_spi_data gpio_data;
27*3c54570aSAbhi Singh 	const struct spi_ops *ops;
28*3c54570aSAbhi Singh };
29*3c54570aSAbhi Singh 
30*3c54570aSAbhi Singh struct spi_plat *gpio_spi_init(struct gpio_spi_data *gpio_spi_data);
31*3c54570aSAbhi Singh 
32*3c54570aSAbhi Singh #endif /* GPIO_SPI_H */
33