84 lines
1.6 KiB
C
84 lines
1.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (c) 2020, Linaro Limited
|
|
*/
|
|
|
|
#ifndef QCOM_GPI_DMA_H
|
|
#define QCOM_GPI_DMA_H
|
|
|
|
/**
|
|
* enum spi_transfer_cmd - spi transfer commands
|
|
*/
|
|
enum spi_transfer_cmd {
|
|
SPI_TX = 1,
|
|
SPI_RX,
|
|
SPI_DUPLEX,
|
|
};
|
|
|
|
/**
|
|
* struct gpi_spi_config - spi config for peripheral
|
|
*
|
|
* @loopback_en: spi loopback enable when set
|
|
* @clock_pol_high: clock polarity
|
|
* @data_pol_high: data polarity
|
|
* @pack_en: process tx/rx buffers as packed
|
|
* @word_len: spi word length
|
|
* @clk_div: source clock divider
|
|
* @clk_src: serial clock
|
|
* @cmd: spi cmd
|
|
* @fragmentation: keep CS asserted at end of sequence
|
|
* @cs: chip select toggle
|
|
* @set_config: set peripheral config
|
|
* @rx_len: receive length for buffer
|
|
*/
|
|
struct gpi_spi_config {
|
|
u8 set_config;
|
|
u8 loopback_en;
|
|
u8 clock_pol_high;
|
|
u8 data_pol_high;
|
|
u8 pack_en;
|
|
u8 word_len;
|
|
u8 fragmentation;
|
|
u8 cs;
|
|
u32 clk_div;
|
|
u32 clk_src;
|
|
enum spi_transfer_cmd cmd;
|
|
u32 rx_len;
|
|
};
|
|
|
|
enum i2c_op {
|
|
I2C_WRITE = 1,
|
|
I2C_READ,
|
|
};
|
|
|
|
/**
|
|
* struct gpi_i2c_config - i2c config for peripheral
|
|
*
|
|
* @pack_enable: process tx/rx buffers as packed
|
|
* @cycle_count: clock cycles to be sent
|
|
* @high_count: high period of clock
|
|
* @low_count: low period of clock
|
|
* @clk_div: source clock divider
|
|
* @addr: i2c bus address
|
|
* @stretch: stretch the clock at eot
|
|
* @set_config: set peripheral config
|
|
* @rx_len: receive length for buffer
|
|
* @op: i2c cmd
|
|
* @muli-msg: is part of multi i2c r-w msgs
|
|
*/
|
|
struct gpi_i2c_config {
|
|
u8 set_config;
|
|
u8 pack_enable;
|
|
u8 cycle_count;
|
|
u8 high_count;
|
|
u8 low_count;
|
|
u8 addr;
|
|
u8 stretch;
|
|
u16 clk_div;
|
|
u32 rx_len;
|
|
enum i2c_op op;
|
|
bool multi_msg;
|
|
};
|
|
|
|
#endif /* QCOM_GPI_DMA_H */
|