This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM3354: Adding touch screen support for AR1021 through device tree.

Part Number: AM3354

Hello all,

I'm wondering if anyone out there has some insight into my issue. As the title says, I am trying to add support for a touchscreen device to a custom board that is very closely modeled after the beaglebone black. The custom board has the AM3354 and a touch screen controller made by microchip called an AR1021. I have added the drivers for the AR1021 to my kernel, added a pinmux for i2c and a GPIO interrupt pin, and have added device tree nodes for the i2c bus and AR1021 respectively. When I boot the board I can see that the ar1021 driver is loaded using lsmod and dmesg is reporting back this message.

Fullscreen
1
[ 13.082424] input: ar1021 I2C Touchscreen as /devices/platform/ocp/44c00000.interconnect/44c00000.interconnect:segment@200000/44e0b000.target-module/44e0b000.i2c/i2c-0/0-004d/input/input0
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

However, I still get no response from the touch screen controller. I am thinking it is maybe because my interrupt pin is not set up correctly or being recognized, according to our schematic the GPIO interrupt pin should be GPIO2_4 and the i2c bus should be i2c0. Below are my pinmux and device tree nodes.

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
ar1021_pins_default: ar1021_pins_default {
pinctrl-single,pins = <
AM33XX_IOPAD(0x898, PIN_INPUT_PULLUP | MUX_MODE7) /* (U6) gpmc_wen.gpio2[4] */
>;
};
i2c0_pins_default: i2c0_pins_default {
pinctrl-single,pins = <
AM33XX_IOPAD(0x98c, PIN_INPUT_PULLUP | MUX_MODE0) /* (C16) I2C0_SCL.I2C0_SCL */
AM33XX_IOPAD(0x988, PIN_INPUT_PULLUP | MUX_MODE0) /* (C17) I2C0_SDA.I2C0_SDA */
>;
};
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
&i2c0 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&i2c0_pins_default>;
clock-frequency = <100000>;
#address-cells = <1>;
#size-cells = <0>;
ar1021: ar1021@4d {
#address-cells = <1>;
#size-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&ar1021_pins_default>;
compatible = "microchip,ar1021-i2c";
reg = <0x4d>;
interrupt-parent = <&gpio2>;
interrupts = <4 IRQ_TYPE_LEVEL_HIGH>;
};
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX