| 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
| 2 | /* |
| 3 | * Copyright (c) 2020, Linaro Limited |
| 4 | */ |
| 5 | |
| 6 | #ifndef QCOM_GPI_DMA_H |
| 7 | #define QCOM_GPI_DMA_H |
| 8 | |
| 9 | /** |
| 10 | * enum spi_transfer_cmd - spi transfer commands |
| 11 | */ |
| 12 | enum spi_transfer_cmd { |
| 13 | SPI_TX = 1, |
| 14 | SPI_RX, |
| 15 | SPI_DUPLEX, |
| 16 | }; |
| 17 | |
| 18 | /** |
| 19 | * struct gpi_spi_config - spi config for peripheral |
| 20 | * |
| 21 | * @loopback_en: spi loopback enable when set |
| 22 | * @clock_pol_high: clock polarity |
| 23 | * @data_pol_high: data polarity |
| 24 | * @pack_en: process tx/rx buffers as packed |
| 25 | * @word_len: spi word length |
| 26 | * @clk_div: source clock divider |
| 27 | * @clk_src: serial clock |
| 28 | * @cmd: spi cmd |
| 29 | * @fragmentation: keep CS asserted at end of sequence |
| 30 | * @cs: chip select toggle |
| 31 | * @set_config: set peripheral config |
| 32 | * @rx_len: receive length for buffer |
| 33 | */ |
| 34 | struct gpi_spi_config { |
| 35 | u8 set_config; |
| 36 | u8 loopback_en; |
| 37 | u8 clock_pol_high; |
| 38 | u8 data_pol_high; |
| 39 | u8 pack_en; |
| 40 | u8 word_len; |
| 41 | u8 fragmentation; |
| 42 | u8 cs; |
| 43 | u32 clk_div; |
| 44 | u32 clk_src; |
| 45 | enum spi_transfer_cmd cmd; |
| 46 | u32 rx_len; |
| 47 | }; |
| 48 | |
| 49 | enum i2c_op { |
| 50 | I2C_WRITE = 1, |
| 51 | I2C_READ, |
| 52 | }; |
| 53 | |
| 54 | /** |
| 55 | * struct gpi_i2c_config - i2c config for peripheral |
| 56 | * |
| 57 | * @pack_enable: process tx/rx buffers as packed |
| 58 | * @cycle_count: clock cycles to be sent |
| 59 | * @high_count: high period of clock |
| 60 | * @low_count: low period of clock |
| 61 | * @clk_div: source clock divider |
| 62 | * @addr: i2c bus address |
| 63 | * @stretch: stretch the clock at eot |
| 64 | * @set_config: set peripheral config |
| 65 | * @rx_len: receive length for buffer |
| 66 | * @op: i2c cmd |
| 67 | * @muli-msg: is part of multi i2c r-w msgs |
| 68 | */ |
| 69 | struct gpi_i2c_config { |
| 70 | u8 set_config; |
| 71 | u8 pack_enable; |
| 72 | u8 cycle_count; |
| 73 | u8 high_count; |
| 74 | u8 low_count; |
| 75 | u8 addr; |
| 76 | u8 stretch; |
| 77 | u16 clk_div; |
| 78 | u32 rx_len; |
| 79 | enum i2c_op op; |
| 80 | bool multi_msg; |
| 81 | }; |
| 82 | |
| 83 | #endif /* QCOM_GPI_DMA_H */ |
| 84 | |