Hello everyone
my development board is IMX7DSABRE. Linux kernel version is 4.9.88
After MX7D_PAD_LCD_DATA04 and MX7D_PAD_LCD_DATA08 are multiplexed as GPIO functions, the state of the gpio pin cannot be changed through the gpio_set_value function. After the other MX7D_PAD_LCD_DATAn is multiplexed as the gpio function, the state of the gpio pin can be normally controlled. My driver has successfully applied for two IO resources, MX7D_PAD_LCD_DATA04__GPIO3_IO9 and MX7D_PAD_LCD_DATA08__GPIO3_IO13. But they can't control their pin status. Can you verify this problem?
I have confirmed here that MX7D_PAD_LCD_DATA04__GPIO3_IO9 and MX7D_PAD_LCD_DATA08__GPIO3_IO13 are not used elsewhere. Please send me a reply after verification.
Hi Qidong,
I tested it on i.MX7D EVK board, see steps below, please!
-----------------------------------
(1) Add LCD_DATA04/08 pins here
pinctrl_hog_1: hoggrp-1 {
fsl,pins = <
MX7D_PAD_EPDC_BDR0__GPIO2_IO28 0x59 /* headphone detect */
MX7D_PAD_LCD_DATA04__GPIO3_IO9 0X59 /* TEST */
MX7D_PAD_LCD_DATA08__GPIO3_IO13 0x59 /* TEST */
>;
};
(2) Commnet LCD pins IOMUX
/*
pinctrl_lcdif: lcdifgrp {
fsl,pins = <
MX7D_PAD_LCD_DATA00__LCD_DATA0 0x79
MX7D_PAD_LCD_DATA01__LCD_DATA1 0x79
MX7D_PAD_LCD_DATA02__LCD_DATA2 0x79
MX7D_PAD_LCD_DATA03__LCD_DATA3 0x79
MX7D_PAD_LCD_DATA04__LCD_DATA4 0x79
MX7D_PAD_LCD_DATA05__LCD_DATA5 0x79
MX7D_PAD_LCD_DATA06__LCD_DATA6 0x79
MX7D_PAD_LCD_DATA07__LCD_DATA7 0x79
MX7D_PAD_LCD_DATA08__LCD_DATA8 0x79
MX7D_PAD_LCD_DATA09__LCD_DATA9 0x79
MX7D_PAD_LCD_DATA10__LCD_DATA10 0x79
MX7D_PAD_LCD_DATA11__LCD_DATA11 0x79
MX7D_PAD_LCD_DATA12__LCD_DATA12 0x79
MX7D_PAD_LCD_DATA13__LCD_DATA13 0x79
MX7D_PAD_LCD_DATA14__LCD_DATA14 0x79
MX7D_PAD_LCD_DATA15__LCD_DATA15 0x79
MX7D_PAD_LCD_DATA16__LCD_DATA16 0x79
MX7D_PAD_LCD_DATA17__LCD_DATA17 0x79
MX7D_PAD_LCD_DATA18__LCD_DATA18 0x79
MX7D_PAD_LCD_DATA19__LCD_DATA19 0x79
MX7D_PAD_LCD_DATA20__LCD_DATA20 0x79
MX7D_PAD_LCD_DATA21__LCD_DATA21 0x79
MX7D_PAD_LCD_DATA22__LCD_DATA22 0x79
MX7D_PAD_LCD_DATA23__LCD_DATA23 0x79
MX7D_PAD_LCD_CLK__LCD_CLK 0x79
MX7D_PAD_LCD_ENABLE__LCD_ENABLE 0x79
MX7D_PAD_LCD_VSYNC__LCD_VSYNC 0x79
MX7D_PAD_LCD_HSYNC__LCD_HSYNC 0x79
MX7D_PAD_LCD_RESET__LCD_RESET 0x79
>;
};
*/
(3) Remove lcdif node
/*
&lcdif {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lcdif>;
enable-gpio = <&extended_io 7 GPIO_ACTIVE_LOW>;
display = <&display0>;
status = "okay";
display0: display@0 {
bits-per-pixel = <16>;
bus-width = <24>;
display-timings {
native-mode = <&timing0>;
timing0: timing0 {
clock-frequency = <9200000>;
hactive = <480>;
vactive = <272>;
hfront-porch = <8>;
hback-porch = <4>;
hsync-len = <41>;
vback-porch = <2>;
vfront-porch = <4>;
vsync-len = <10>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <1>;
pixelclk-active = <0>;
};
};
};
};
*/
(4) Compiling linux kernel and dts
(5) copy imx7d-sdb.dtb to MFG tools and burn it to SD card.
(6) Try to operation GPIO3_IO09
#cd /sys/class/gpio/
#echo 73 > export
# cd gpio73
# echo "out" > direction
Measure LCD_DATA04 pin's level on RN15 , LOW : 0
# echo 1 > value
Measure LCD_DATA04 pin's level on RN15, HIGH : 3.3V
I just tested LCD_DATA04 pin ,by the same way, you can try to test 08 pin.
Have a nice day!
B.R,
Weidong
Hello Qidong,
I will test it for you next week.
Have a ncie day!
B.R,
Weidong