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.

PROCESSOR-SDK-AM64X: Method to Control GPIO from bootloader at bootup

Part Number: PROCESSOR-SDK-AM64X
Other Parts Discussed in Thread: DA8XX

Tool/software:

Hi,

SDK version : 10_01_10_04

We have customized hardware design based on AM64x GP EVM and in that we need to set GPIO0_53 pin to high from bootloader at bootup.

Please provide method / API to control GPIO from bootloader.

I have added following changes in bootloader. 

file : arch/arm/dts/k3-am642-evm.dts

+ controlsignals_pins_default: controlsignals-default-pins {
+ pinctrl-single,pins = <
+ AM64X_IOPAD(0x00d8, PIN_OUTPUT_PULLDOWN, 7) /* (W13) PRG1_PRU0_GPO8.GPIO0_53 */
+ >;
+ };


&main_gpio0 {
bootph-all;
+ pinctrl-names = "default";
+ pinctrl-0 = <&controlsignals_pins_default>;
+ status = "okay";
};

Command response from u-boot prompt.

=> gpio status -a

gpio status command display nothing.


=> gpio set 565
GPIO: '565' not found
Command 'gpio' failed: Error -22
=>
=>

Please provide method to control from u-boot prompt as well as API to control during code execution.

Regards,

Sharad

  • Hello Sharad,

    In the U-Boot config file, you'll have to enable CONFIG_DA8XX_GPIO which is the U-Boot GPIO driver. Try checking 'gpio status -a' afterwards.

    If you want to edit the evm.c file, there isn't an example readily available. You can look at some implementations on other device: https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/board/ti?h=ti-u-boot-2024.04

    Best Regards,

    Anshu

  • Hi,

    In configs/am64x_evm_r5_defconfig , "CONFIG_DA8XX_GPIO " already enabled. Do we need to add same in "configs/am64x_evm_a53_defconfig".

    Also what about following error:

    => gpio set 565
    GPIO: '565' not found
    Command 'gpio' failed: Error -22
    =>

    Regards,

    Sharad

  • Hello Sharad,

    Yes, it should be for the A53 as well.

    That error means it wasn't able to find that GPIO. I'm not exactly sure how the GPIO list is formatted.

    For another device (not AM64x) its output is this:

    => gpio status -a
    Bank gpio@4201000_:
    gpio@4201000_0: input: 0 [ ]
    gpio@4201000_1: input: 0 [ ]
    gpio@4201000_2: input: 0 [ ]
    gpio@4201000_3: input: 0 [ ]
    gpio@4201000_4: input: 0 [ ]
    gpio@4201000_5: input: 1 [ ]
    gpio@4201000_6: input: 0 [ ]
    gpio@4201000_7: input: 0 [ ]
    gpio@4201000_8: input: 0 [ ]
    gpio@4201000_9: input: 1 [ ]
    gpio@4201000_10: input: 0 [ ]
    gpio@4201000_11: input: 1 [ ]
    gpio@4201000_12: input: 0 [ ]
    gpio@4201000_13: input: 0 [ ]
    gpio@4201000_14: input: 0 [ ]
    gpio@4201000_15: input: 0 [ ]
    gpio@4201000_16: input: 0 [ ]
    gpio@4201000_17: input: 1 [ ]
    gpio@4201000_18: input: 1 [ ]
    gpio@4201000_19: input: 1 [ ]
    gpio@4201000_20: input: 1 [ ]
    gpio@4201000_21: input: 0 [ ]
    gpio@4201000_22: input: 0 [ ]
    gpio@4201000_23: input: 0 [ ]
    
    Bank gpio@22_:
    gpio@22_0: input: 1 [ ]
    gpio@22_1: input: 1 [ ]
    gpio@22_2: input: 1 [ ]
    gpio@22_3: output: 1 [ ]
    gpio@22_4: input: 0 [ ]
    gpio@22_5: input: 0 [ ]
    gpio@22_6: input: 0 [ ]
    gpio@22_7: input: 1 [ ]
    gpio@22_8: input: 1 [ ]
    gpio@22_9: input: 1 [ ]
    gpio@22_10: input: 1 [ ]
    gpio@22_11: input: 1 [ ]
    gpio@22_12: input: 1 [ ]
    gpio@22_13: input: 0 [ ]
    gpio@22_14: input: 0 [ ]
    gpio@22_15: input: 0 [ ]
    gpio@22_16: input: 1 [ ]
    gpio@22_17: input: 0 [ ]
    gpio@22_18: input: 0 [ ]
    gpio@22_19: input: 0 [ ]
    gpio@22_20: input: 1 [ ]
    gpio@22_21: input: 1 [ ]
    gpio@22_22: input: 1 [ ]
    gpio@22_23: input: 0 [ ]
    
    Bank gpio@600000_:
    gpio@600000_0: output: 0 [ ]
    gpio@600000_1: output: 0 [ ]
    gpio@600000_2: output: 0 [ ]
    gpio@600000_3: output: 1 [ ]
    gpio@600000_4: output: 1 [ ]
    gpio@600000_5: output: 1 [ ]
    gpio@600000_6: output: 1 [ ]
    gpio@600000_7: output: 1 [ ]
    gpio@600000_8: output: 1 [ ]
    gpio@600000_9: output: 1 [ ]
    gpio@600000_10: output: 1 [ ]
    gpio@600000_11: output: 0 [ ]
    gpio@600000_12: output: 0 [ ]
    gpio@600000_13: output: 0 [ ]
    gpio@600000_14: output: 1 [ ]
    gpio@600000_15: output: 1 [ ]
    gpio@600000_16: output: 1 [ ]
    gpio@600000_17: output: 1 [ ]
    gpio@600000_18: output: 1 [ ]
    gpio@600000_19: output: 1 [ ]
    gpio@600000_20: output: 1 [ ]
    gpio@600000_21: output: 1 [ ]
    gpio@600000_22: output: 1 [ ]
    gpio@600000_23: output: 0 [ ]
    gpio@600000_24: output: 0 [ ]
    gpio@600000_25: output: 0 [ ]
    gpio@600000_26: output: 0 [ ]
    gpio@600000_27: output: 0 [ ]
    gpio@600000_28: output: 0 [ ]
    gpio@600000_29: output: 0 [ ]
    gpio@600000_30: output: 0 [ ]
    gpio@600000_31: output: 0 [ ]
    gpio@600000_32: input: 0 [ ]
    gpio@600000_33: input: 0 [ ]
    gpio@600000_34: input: 0 [ ]
    gpio@600000_35: input: 1 [ ]
    gpio@600000_36: input: 0 [ ]
    gpio@600000_37: input: 1 [ ]
    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: 1 [ ]
    gpio@600000_44: input: 1 [ ]
    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: 1 [ ]
    gpio@600000_66: input: 1 [ ]
    gpio@600000_67: input: 1 [ ]
    gpio@600000_68: input: 1 [ ]
    gpio@600000_69: input: 0 [ ]
    gpio@600000_70: input: 1 [ ]
    gpio@600000_71: input: 0 [ ]
    gpio@600000_72: input: 0 [ ]
    gpio@600000_73: input: 0 [ ]
    gpio@600000_74: input: 0 [ ]
    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 [ ]
    
    Bank gpio@601000_:
    gpio@601000_0: output: 0 [ ]
    gpio@601000_1: output: 0 [ ]
    gpio@601000_2: output: 0 [ ]
    gpio@601000_3: output: 0 [ ]
    gpio@601000_4: output: 0 [ ]
    gpio@601000_5: output: 0 [ ]
    gpio@601000_6: output: 0 [ ]
    gpio@601000_7: output: 1 [ ]
    gpio@601000_8: output: 0 [ ]
    gpio@601000_9: output: 0 [ ]
    gpio@601000_10: output: 0 [ ]
    gpio@601000_11: output: 0 [ ]
    gpio@601000_12: output: 0 [ ]
    gpio@601000_13: output: 1 [ ]
    gpio@601000_14: output: 0 [ ]
    gpio@601000_15: output: 0 [ ]
    gpio@601000_16: output: 0 [ ]
    gpio@601000_17: output: 0 [ ]
    gpio@601000_18: output: 0 [ ]
    gpio@601000_19: output: 0 [ ]
    gpio@601000_20: output: 1 [ ]
    gpio@601000_21: output: 0 [ ]
    gpio@601000_22: output: 0 [ ]
    gpio@601000_23: output: 0 [ ]
    gpio@601000_24: output: 0 [ ]
    gpio@601000_25: output: 0 [ ]
    gpio@601000_26: output: 1 [ ]
    gpio@601000_27: output: 1 [ ]
    gpio@601000_28: output: 1 [ ]
    gpio@601000_29: output: 1 [ ]
    gpio@601000_30: output: 0 [ ]
    gpio@601000_31: output: 0 [ ]
    gpio@601000_32: input: 1 [ ]
    gpio@601000_33: input: 1 [ ]
    gpio@601000_34: input: 1 [ ]
    gpio@601000_35: input: 1 [ ]
    gpio@601000_36: input: 1 [ ]
    gpio@601000_37: input: 1 [ ]
    gpio@601000_38: input: 1 [ ]
    gpio@601000_39: input: 1 [ ]
    gpio@601000_40: input: 0 [ ]
    gpio@601000_41: input: 1 [ ]
    gpio@601000_42: input: 1 [ ]
    gpio@601000_43: input: 1 [ ]
    gpio@601000_44: input: 1 [ ]
    gpio@601000_45: input: 1 [ ]
    gpio@601000_46: input: 1 [ ]
    gpio@601000_47: input: 1 [ ]
    gpio@601000_48: input: 0 [ ]
    gpio@601000_49: output: 0 [x] led-0.gpios
    gpio@601000_50: input: 0 [ ]
    gpio@601000_51: input: 0 [ ]
    => 

    Best Regards,

    Anshu