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.

SK-AM62P-LP: configuring GPIO on boot

Part Number: SK-AM62P-LP

Tool/software:

Hi,

we are developing a linux BSP with kernel 6.6 and we trying to set some GPIO pins to output on Boot. We tried to set the pin state through bootloader device tree and through evm.c, but in every case it dosen't work.
which would be the proper way of doing that.
Bellow is shown the methods that we had used and didn't worked.

through evm.c

diff --git a/board/ti/am62px/evm.c b/board/ti/am62px/evm.c
index a3662fee913..ff0056cf92d 100644
--- a/board/ti/am62px/evm.c
+++ b/board/ti/am62px/evm.c
@@ -92,7 +92,9 @@ void spl_board_init(void)
 int ft_board_setup(void *blob, struct bd_info *bd)
 {
 	int ret = -1;
+	
+        gpio_direction_output(119, 0);
+        
 	if (IS_ENABLED(CONFIG_FDT_SIMPLEFB))
 		ret = fdt_simplefb_enable_and_mem_rsv(blob);

  through bootloader device tree

diff --git a/arch/arm/dts/k3-am62p5-sk.dts b/arch/arm/dts/k3-am62p5-sk.dts
index 474a033d22a..256fa3f100d 100644
--- a/arch/arm/dts/k3-am62p5-sk.dts
+++ b/arch/arm/dts/k3-am62p5-sk.dts
@@ -177,6 +177,14 @@
 
 &main_gpio0 {
 	bootph-all;
+	
+	gpio_71: io_gpio71_out {
+	 	gpio-hog;
+	 	gpios = <71 GPIO_ACTIVE_HIGH>;
+		line-name = "MMC2_SDCD.GPIO0_71";
+	 	output-low;
+	};
+
 };
 
 &main_gpio1 {
@@ -354,8 +362,9 @@
 
 	wlan_en_pins_default: wlan-en-default-pins {
 		pinctrl-single,pins = <
-			AM62PX_IOPAD(0x0124, PIN_INPUT, 7) /* (J25) MMC2_SDCD.GPIO0_71 */
+			AM62PX_IOPAD(0x0124, PIN_OUTPUT, 7) /* (J25) MMC2_SDCD.GPIO0_71 */
 		>;
+		bootph-all;
 	};
 
 	main_dpi_pins_default: main-dpi-default-pins {
@@ -520,6 +529,10 @@
 	};
 };
 
+&gpio_71 {
+	bootph-all;
+};
+
 &main_i2c2 {
 	status = "okay";
 	pinctrl-names = "default";

BR,

  • Hi,

    thank you for your response, we did as mentioned on the link but when turn on the board during u-boot the GPIO0_071 still starts as a input. you can see bellow the mods that we did.

    diff --git a/arch/arm/dts/k3-am62p5-sk.dts b/arch/arm/dts/k3-am62p5-sk.dts
    index 474a033d22a..84e9aa4d808 100644
    --- a/arch/arm/dts/k3-am62p5-sk.dts
    +++ b/arch/arm/dts/k3-am62p5-sk.dts
    @@ -176,7 +176,10 @@
     };
     
     &main_gpio0 {
    -	bootph-all;
    +	//bootph-all;
    +	status = "okay";
    +	pinctrl-names = "default";
    +	pinctrl-0 = <&wlan_en_pins_default>;
     };
     
     &main_gpio1 {
    @@ -354,7 +357,7 @@
     
     	wlan_en_pins_default: wlan-en-default-pins {
     		pinctrl-single,pins = <
    -			AM62PX_IOPAD(0x0124, PIN_INPUT, 7) /* (J25) MMC2_SDCD.GPIO0_71 */
    +			AM62PX_IOPAD(0x0124, PIN_OUTPUT_PULLDOWN, 7) // (J25) MMC2_SDCD.GPIO0_71
     		>;
     	};



    Hit any key to stop autoboot:  0
    => gpio status -a
    Bank gpio@22_:
    gpio@22_0: input: 1 [ ]
    gpio@22_1: input: 1 [ ]
    gpio@22_2: input: 1 [ ]
    gpio@22_3: input: 1 [ ]
    gpio@22_4: input: 0 [ ]
    gpio@22_5: input: 0 [ ]
    gpio@22_6: input: 1 [ ]
    gpio@22_7: input: 1 [ ]
    gpio@22_8: input: 0 [ ]
    gpio@22_9: input: 0 [ ]
    gpio@22_10: input: 0 [ ]
    gpio@22_11: input: 1 [ ]
    gpio@22_12: input: 1 [ ]
    gpio@22_13: input: 0 [ ]
    gpio@22_14: input: 0 [ ]
    gpio@22_15: input: 1 [ ]
    gpio@22_16: input: 1 [ ]
    gpio@22_17: input: 1 [ ]
    gpio@22_18: input: 0 [ ]
    gpio@22_19: input: 0 [ ]
    gpio@22_20: input: 1 [ ]
    gpio@22_21: input: 0 [ ]
    gpio@22_22: input: 0 [ ]
    gpio@22_23: input: 0 [ ]

    Bank gpio@23_:
    gpio@23_0: input: 1 [ ]
    gpio@23_1: input: 0 [ ]
    gpio@23_2: input: 0 [ ]
    gpio@23_3: input: 0 [ ]
    gpio@23_4: input: 0 [ ]
    gpio@23_5: input: 0 [ ]
    gpio@23_6: input: 0 [ ]
    gpio@23_7: input: 0 [ ]
    gpio@23_8: input: 1 [ ]
    gpio@23_9: input: 0 [ ]
    gpio@23_10: input: 0 [ ]
    gpio@23_11: input: 0 [ ]
    gpio@23_12: input: 0 [ ]
    gpio@23_13: input: 0 [ ]
    gpio@23_14: input: 0 [ ]
    gpio@23_15: input: 0 [ ]
    gpio@23_16: input: 1 [ ]
    gpio@23_17: input: 1 [ ]
    gpio@23_18: input: 1 [ ]
    gpio@23_19: input: 1 [ ]
    gpio@23_20: input: 1 [ ]
    gpio@23_21: input: 1 [ ]
    gpio@23_22: input: 1 [ ]
    gpio@23_23: input: 1 [ ]

    Bank gpio@600000_:
    gpio@600000_0: input: 0 [ ]
    gpio@600000_1: input: 0 [ ]
    gpio@600000_2: input: 0 [ ]
    gpio@600000_3: input: 1 [ ]
    gpio@600000_4: input: 1 [ ]
    gpio@600000_5: input: 1 [ ]
    gpio@600000_6: input: 1 [ ]
    gpio@600000_7: input: 1 [ ]
    gpio@600000_8: input: 1 [ ]
    gpio@600000_9: input: 1 [ ]
    gpio@600000_10: input: 1 [ ]
    gpio@600000_11: input: 0 [ ]
    gpio@600000_12: input: 0 [ ]
    gpio@600000_13: input: 0 [ ]
    gpio@600000_14: input: 0 [ ]
    gpio@600000_15: input: 1 [ ]
    gpio@600000_16: input: 1 [ ]
    gpio@600000_17: input: 1 [ ]
    gpio@600000_18: input: 1 [ ]
    gpio@600000_19: input: 1 [ ]
    gpio@600000_20: input: 1 [ ]
    gpio@600000_21: input: 1 [ ]
    gpio@600000_22: input: 1 [ ]
    gpio@600000_23: input: 0 [ ]
    gpio@600000_24: input: 0 [ ]
    gpio@600000_25: input: 0 [ ]
    gpio@600000_26: input: 0 [ ]
    gpio@600000_27: input: 0 [ ]
    gpio@600000_28: input: 0 [ ]
    gpio@600000_29: input: 0 [ ]
    gpio@600000_30: input: 0 [ ]
    gpio@600000_31: input: 0 [ ]
    gpio@600000_32: input: 0 [ ]
    gpio@600000_33: input: 0 [ ]
    gpio@600000_34: input: 0 [ ]
    gpio@600000_35: input: 0 [ ]
    gpio@600000_36: input: 0 [ ]
    gpio@600000_37: input: 0 [ ]
    gpio@600000_38: input: 0 [ ]
    gpio@600000_39: input: 0 [ ]
    gpio@600000_40: input: 0 [ ]
    gpio@600000_41: input: 0 [ ]
    gpio@600000_42: input: 0 [ ]
    gpio@600000_43: input: 0 [ ]
    gpio@600000_44: input: 0 [ ]
    gpio@600000_45: input: 0 [ ]
    gpio@600000_46: input: 0 [ ]
    gpio@600000_47: input: 0 [ ]
    gpio@600000_48: input: 0 [ ]
    gpio@600000_49: input: 0 [ ]
    gpio@600000_50: input: 0 [ ]
    gpio@600000_51: input: 0 [ ]
    gpio@600000_52: input: 0 [ ]
    gpio@600000_53: input: 0 [ ]
    gpio@600000_54: input: 0 [ ]
    gpio@600000_55: input: 0 [ ]
    gpio@600000_56: input: 0 [ ]
    gpio@600000_57: input: 0 [ ]
    gpio@600000_58: input: 0 [ ]
    gpio@600000_59: input: 0 [ ]
    gpio@600000_60: input: 0 [ ]
    gpio@600000_61: input: 0 [ ]
    gpio@600000_62: input: 0 [ ]
    gpio@600000_63: input: 0 [ ]
    gpio@600000_64: input: 0 [ ]
    gpio@600000_65: input: 0 [ ]
    gpio@600000_66: input: 0 [ ]
    gpio@600000_67: input: 0 [ ]
    gpio@600000_68: input: 0 [ ]
    gpio@600000_69: input: 0 [ ]
    gpio@600000_70: input: 0 [ ]
    gpio@600000_71: input: 0 [ ]
    gpio@600000_72: input: 0 [ ]
    gpio@600000_73: input: 0 [ ]
    gpio@600000_74: input: 1 [ ]
    gpio@600000_75: input: 0 [ ]
    gpio@600000_76: input: 0 [ ]
    gpio@600000_77: input: 0 [ ]
    gpio@600000_78: input: 0 [ ]
    gpio@600000_79: input: 0 [ ]
    gpio@600000_80: input: 0 [ ]
    gpio@600000_81: input: 0 [ ]
    gpio@600000_82: input: 0 [ ]
    gpio@600000_83: input: 0 [ ]
    gpio@600000_84: input: 0 [ ]
    gpio@600000_85: input: 1 [ ]
    gpio@600000_86: input: 0 [ ]
    gpio@600000_87: input: 0 [ ]
    gpio@600000_88: input: 0 [ ]
    gpio@600000_89: input: 0 [ ]
    gpio@600000_90: input: 0 [ ]
    gpio@600000_91: input: 0 [ ]

    Is there anything more that needs to be done?

  • Hello,

    This is the correct FAQ that will apply: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1398803/faq-processor-sdk-am62x-how-to-toggle-gpios-and-leds-from-u-boot-command-prompt

    In terms of pinmuxing, when a GPIOs direction is 'input', that means its capable of supporting reading inputs and sending output.

    Thanks,

    Anshu

  • So, even if  I configure the GPIO pin as output on device tree, I still have to stop on u-boot to set the pin as output using gpio set?

  • Hello,

    To my understanding, you would have to use the gpio commands to set to output. You can also try this on the Linux side.

    Thanks,

    Anshu