1 /*
2 * Copyright 2022 NXP
3 * All rights reserved.
4 *
5 * SPDX-License-Identifier: BSD-3-Clause
6 */
7
8 #include "touchpad.h"
9 #include <rtdevice.h>
10
BOARD_Delay(uint32_t ms)11 void BOARD_Delay(uint32_t ms)
12 {
13 //VIDEO_DelayMs(ms);
14 rt_thread_mdelay(ms);
15 }
16
BOARD_LPI2C_Init(LPI2C_Type * base,uint32_t clkSrc_Hz)17 void BOARD_LPI2C_Init(LPI2C_Type *base, uint32_t clkSrc_Hz)
18 {
19 lpi2c_master_config_t lpi2cConfig = {0};
20
21 /*
22 * lpi2cConfig.debugEnable = false;
23 * lpi2cConfig.ignoreAck = false;
24 * lpi2cConfig.pinConfig = kLPI2C_2PinOpenDrain;
25 * lpi2cConfig.baudRate_Hz = 100000U;
26 * lpi2cConfig.busIdleTimeout_ns = 0;
27 * lpi2cConfig.pinLowTimeout_ns = 0;
28 * lpi2cConfig.sdaGlitchFilterWidth_ns = 0;
29 * lpi2cConfig.sclGlitchFilterWidth_ns = 0;
30 */
31 LPI2C_MasterGetDefaultConfig(&lpi2cConfig);
32 LPI2C_MasterInit(base, &lpi2cConfig, clkSrc_Hz);
33 }
34
BOARD_LPI2C_Send(LPI2C_Type * base,uint8_t deviceAddress,uint32_t subAddress,uint8_t subAddressSize,uint8_t * txBuff,uint8_t txBuffSize)35 status_t BOARD_LPI2C_Send(LPI2C_Type *base,
36 uint8_t deviceAddress,
37 uint32_t subAddress,
38 uint8_t subAddressSize,
39 uint8_t *txBuff,
40 uint8_t txBuffSize)
41 {
42 lpi2c_master_transfer_t xfer;
43
44 xfer.flags = kLPI2C_TransferDefaultFlag;
45 xfer.slaveAddress = deviceAddress;
46 xfer.direction = kLPI2C_Write;
47 xfer.subaddress = subAddress;
48 xfer.subaddressSize = subAddressSize;
49 xfer.data = txBuff;
50 xfer.dataSize = txBuffSize;
51
52 return LPI2C_MasterTransferBlocking(base, &xfer);
53 }
54
BOARD_LPI2C_Receive(LPI2C_Type * base,uint8_t deviceAddress,uint32_t subAddress,uint8_t subAddressSize,uint8_t * rxBuff,uint8_t rxBuffSize)55 status_t BOARD_LPI2C_Receive(LPI2C_Type *base,
56 uint8_t deviceAddress,
57 uint32_t subAddress,
58 uint8_t subAddressSize,
59 uint8_t *rxBuff,
60 uint8_t rxBuffSize)
61 {
62 lpi2c_master_transfer_t xfer;
63
64 xfer.flags = kLPI2C_TransferDefaultFlag;
65 xfer.slaveAddress = deviceAddress;
66 xfer.direction = kLPI2C_Read;
67 xfer.subaddress = subAddress;
68 xfer.subaddressSize = subAddressSize;
69 xfer.data = rxBuff;
70 xfer.dataSize = rxBuffSize;
71
72 return LPI2C_MasterTransferBlocking(base, &xfer);
73 }
74
BOARD_LPI2C_SendSCCB(LPI2C_Type * base,uint8_t deviceAddress,uint32_t subAddress,uint8_t subAddressSize,uint8_t * txBuff,uint8_t txBuffSize)75 status_t BOARD_LPI2C_SendSCCB(LPI2C_Type *base,
76 uint8_t deviceAddress,
77 uint32_t subAddress,
78 uint8_t subAddressSize,
79 uint8_t *txBuff,
80 uint8_t txBuffSize)
81 {
82 lpi2c_master_transfer_t xfer;
83
84 xfer.flags = kLPI2C_TransferDefaultFlag;
85 xfer.slaveAddress = deviceAddress;
86 xfer.direction = kLPI2C_Write;
87 xfer.subaddress = subAddress;
88 xfer.subaddressSize = subAddressSize;
89 xfer.data = txBuff;
90 xfer.dataSize = txBuffSize;
91
92 return LPI2C_MasterTransferBlocking(base, &xfer);
93 }
94
BOARD_LPI2C_ReceiveSCCB(LPI2C_Type * base,uint8_t deviceAddress,uint32_t subAddress,uint8_t subAddressSize,uint8_t * rxBuff,uint8_t rxBuffSize)95 status_t BOARD_LPI2C_ReceiveSCCB(LPI2C_Type *base,
96 uint8_t deviceAddress,
97 uint32_t subAddress,
98 uint8_t subAddressSize,
99 uint8_t *rxBuff,
100 uint8_t rxBuffSize)
101 {
102 status_t status;
103 lpi2c_master_transfer_t xfer;
104
105 xfer.flags = kLPI2C_TransferDefaultFlag;
106 xfer.slaveAddress = deviceAddress;
107 xfer.direction = kLPI2C_Write;
108 xfer.subaddress = subAddress;
109 xfer.subaddressSize = subAddressSize;
110 xfer.data = NULL;
111 xfer.dataSize = 0;
112
113 status = LPI2C_MasterTransferBlocking(base, &xfer);
114
115 if (kStatus_Success == status)
116 {
117 xfer.subaddressSize = 0;
118 xfer.direction = kLPI2C_Read;
119 xfer.data = rxBuff;
120 xfer.dataSize = rxBuffSize;
121
122 status = LPI2C_MasterTransferBlocking(base, &xfer);
123 }
124
125 return status;
126 }
127
BOARD_Touch_I2C_Send(uint8_t deviceAddress,uint32_t subAddress,uint8_t subAddressSize,const uint8_t * txBuff,uint8_t txBuffSize)128 status_t BOARD_Touch_I2C_Send(
129 uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, const uint8_t *txBuff, uint8_t txBuffSize)
130 {
131 return BOARD_LPI2C_Send(BOARD_TOUCH_I2C_BASEADDR, deviceAddress, subAddress, subAddressSize, (uint8_t *)txBuff,
132 txBuffSize);
133 }
134
BOARD_Touch_I2C_Receive(uint8_t deviceAddress,uint32_t subAddress,uint8_t subAddressSize,uint8_t * rxBuff,uint8_t rxBuffSize)135 status_t BOARD_Touch_I2C_Receive(
136 uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, uint8_t *rxBuff, uint8_t rxBuffSize)
137 {
138 return BOARD_LPI2C_Receive(BOARD_TOUCH_I2C_BASEADDR, deviceAddress, subAddress, subAddressSize, rxBuff, rxBuffSize);
139 }
140