Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static int spi_write_2(struct spi_device *spi,
- u8 *tx_buf0, u8 tx_len0,
- u8 *tx_buf1, u8 tx_len1)
- {
- struct spi_message msg;
- struct spi_transfer xfers[2];
- memset(xfers, 0, sizeof(xfers));
- xfers[0].tx_buf = tx_buf0;
- xfers[0].len = tx_len0;
- xfers[1].tx_buf = tx_buf1;
- xfers[1].len = tx_len1;
- spi_message_init(&msg);
- spi_message_add_tail(&xfers[0], &msg);
- spi_message_add_tail(&xfers[1], &msg);
- return spi_sync(spi, &msg);
- }
- static int spi_write_read(struct spi_device *spi,
- u8 *tx_buf, u8 tx_len,
- u8 *rx_buf, u8 rx_len)
- {
- struct spi_message msg;
- struct spi_transfer xfers[2];
- memset(xfers, 0, sizeof(xfers));
- xfers[0].tx_buf = tx_buf;
- xfers[0].len = tx_len;
- xfers[1].rx_buf = rx_buf;
- xfers[1].len = rx_len;
- spi_message_init(&msg);
- spi_message_add_tail(&xfers[0], &msg);
- spi_message_add_tail(&xfers[1], &msg);
- return spi_sync(spi, &msg);
- }
- static void spi_reg_select(struct spi_device *spi, u8 reg)
- {
- u8 buffer1[4];
- u8 buffer2[0x40];
- buffer1[0] = 0;
- buffer2[0] = reg;
- spi_write_2(spi, buffer1, 1, buffer2, 1);
- }
- static u8 spi_reg_read_offset(struct spi_device *spi, u8 offset)
- {
- u8 buffer_wr[8];
- u8 buffer_rd[0x40];
- buffer_wr[0] = 1 | (offset << 1);
- spi_write_read(spi, buffer_wr, 1, buffer_rd, 1);
- return buffer_rd[0];
- }
- static void spi_reg_write_offset(struct spi_device *spi, u8 reg, u8 val)
- {
- u8 buffer1[8];
- u8 buffer2[0x40];
- buffer1[0] = (reg << 1); // Write
- buffer2[0] = val;
- spi_write_2(spi, buffer1, 1, buffer2, 1);
- }
- static void spi_reg_read_buffer(struct spi_device *spi,
- u8 offset, void *buffer, u8 size)
- {
- u8 buffer_wr[0x10];
- buffer_wr[0] = 1 | (offset << 1);
- spi_write_read(spi, buffer_wr, 1, buffer, size);
- }
- static void spi_reg_write_buffer(struct spi_device *spi, u8 reg, void *buffer, u8 size)
- {
- uint8_t buffer_reg[8];
- buffer_reg[0] = reg << 1;
- spi_write_2(spi, buffer_reg, 1, buffer, size);
- }
- static void spi_reg_mask_offset(struct spi_device *spi, u8 offset, u8 mask0, u8 mask1)
- {
- u8 buffer1[4];
- u8 buffer2[0x40];
- buffer1[0] = 1 | (offset << 1);
- spi_write_read(spi, buffer1, 1, buffer2, 1);
- buffer1[0] = offset << 1;
- buffer2[0] = (buffer2[0] & ~mask1) | (mask0 & mask1);
- spi_write_2(spi, buffer1, 1, buffer2, 1);
- }
- static void spi_codec_hid_initialize(struct spi_device *spi)
- {
- spi_reg_select(spi, 0x67);
- spi_reg_write_offset(spi, 0x24, 0x98);
- spi_reg_select(spi, 0x67);
- spi_reg_write_offset(spi, 0x26, 0x00);
- spi_reg_select(spi, 0x67);
- spi_reg_write_offset(spi, 0x25, 0x43);
- spi_reg_select(spi, 0x67);
- spi_reg_write_offset(spi, 0x24, 0x18);
- spi_reg_select(spi, 0x67);
- spi_reg_write_offset(spi, 0x17, 0x43);
- spi_reg_select(spi, 0x67);
- spi_reg_write_offset(spi, 0x19, 0x69);
- spi_reg_select(spi, 0x67);
- spi_reg_write_offset(spi, 0x1B, 0x80);
- spi_reg_select(spi, 0x67);
- spi_reg_write_offset(spi, 0x27, 0x11);
- spi_reg_select(spi, 0x67);
- spi_reg_write_offset(spi, 0x26, 0xEC);
- spi_reg_select(spi, 0x67);
- spi_reg_write_offset(spi, 0x24, 0x18);
- spi_reg_select(spi, 0x67);
- spi_reg_write_offset(spi, 0x25, 0x53);
- }
- static void spi_codec_ts_initialize(struct spi_device *spi)
- {
- spi_reg_select(spi, 0x67);
- spi_reg_mask_offset(spi, 0x26, 0x80, 0x80);
- spi_reg_select(spi, 0x67);
- spi_reg_mask_offset(spi, 0x24, 0x00, 0x80);
- spi_reg_select(spi, 0x67);
- spi_reg_mask_offset(spi, 0x25, 0x10, 0x3C);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement