need to drive some outputs which are connected on gpio-expander. i have PCF8575 and MCP23017 which works pretty well when linux is booted. i need to have ability to drive some of these pins on gpio-expander at bootup.
I am using following u-boot version
-Boot SPL 2023.04-dirty (Oct 02 2024 - 17:58:22 +0530)
Trying to boot from MMC1
U-Boot 2023.04-dirty (Oct 02 2024 - 17:58:22 +0530)
CPU : AM335X-GP rev 2.1
Model: TI AM335x BeagleBone Black-pcf-mcp-r1
DRAM: 512 MiB
Core: 163 devices, 18 uclasses, devicetree: separate
WDT: Started wdt@44e35000 with servicing every 1000ms (60s timeout)
NAND: 0 MiB
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
Loading Environment from FAT... Unable to read "uboot.env" from mmc0:1...
<ethaddr> not set. Validating first E-fuse MAC
Net: eth2: ethernet@4a100000, eth3: usb_ether
Hit any key to stop autoboot: 0
I have updated the device tree as below
i2c1_pins: pinmux_i2c1_pins {
pinctrl-single,pins = <
AM33XX_PADCONF(AM335X_PIN_SPI0_CS0, PIN_INPUT_PULLUP, MUX_MODE2) /*A16 - I2C1_SCLK*/
AM33XX_PADCONF(AM335X_PIN_SPI0_D1, PIN_INPUT_PULLUP, MUX_MODE2) /*B16 - SPI1_SDA*/
>;
};
&i2c1 {
pinctrl-names = "default";
pinctrl-0 = <&i2c1_pins>;
status = "okay";
clock-frequency = <100000>;
gpio@27 {
//compatible = "microchip,mcp23017";
compatible = "microchip,mcp23017";
gpio-controller;
#gpio-cells = <2>;
reg = <0x27>;
};
pcf8575: gpio@20 {
compatible = "nxp,pcf8575";
reg = <0x20>;
gpio-controller;
#gpio-cells = <2>;
};
};
I have enabled pcf8575 and mcp23017 from menuconfig
# CONFIG_HSDK_CREG_GPIO is not set
# CONFIG_KIRKWOOD_GPIO is not set
# CONFIG_LPC32XX_GPIO is not set
# CONFIG_MAX7320_GPIO is not set
CONFIG_MCP230XX_GPIO=y
# CONFIG_MSM_GPIO is not set
# CONFIG_MXC_GPIO is not set
# CONFIG_MXS_GPIO is not set
# CONFIG_NPCM_GPIO is not set
CONFIG_OMAP_GPIO=y
# CONFIG_CMD_PCA953X is not set
CONFIG_PCF8575_GPIO=y
when i probe i2c1 i expect it detects mcp and pcf which are at address 0x27 and 0x20, but i keep getting probe fail, please find what i see as below
=> i2c dev 1
Setting bus to 1
=> i2c probe
Valid chip addresses:Timed out in wait_for_event: status=0000
Check if pads/pull-ups of bus are properly configured
Timed out in wait_for_event: status=0000
Check if pads/pull-ups of bus are properly configured
Timed out in wait_for_event: status=0000
the => dm tree commands shows
=> dm tree
Class Index Probed Driver Name
-----------------------------------------------------------
root 0 [ + ] root_driver root_driver
rsa_mod_ex 0 [ ] mod_exp_sw |-- mod_exp_sw
simple_bus 0 [ + ] simple_bus |-- ocp
simple_bus 1 [ + ] simple_bus | |-- l4_wkup@44c00000
simple_bus 2 [ ] simple_bus | | |-- segment@0
simple_bus 3 [ ] simple_bus | | |-- segment@100000
simple_bus 4 [ + ] simple_bus | | `-- segment@200000
simple_bus 5 [ + ] ti_sysc | | |-- target-module@0
simple_bus 6 [ + ] simple_bus | | | `-- prcm@0
simple_bus 7 [ ] simple_bus | | | |-- clocks
clk 0 [ ] fixed_clock | | | | |-- clock-clk-32768
clk 1 [ ] fixed_clock | | | | |-- clock-clk-rc32k
clk 2 [ ] fixed_clock | | | | |-- clock-virt-19200000
clk 3 [ ] fixed_clock | | | | |-- clock-virt-24000000
clk 4 [ ] fixed_clock | | | | |-- clock-virt-25000000
clk 5 [ ] fixed_clock | | | | |-- clock-virt-26000000
clk 6 [ ] fixed_clock | | | | |-- clock-tclkin
clk 7 [ ] fixed_factor_clock | | | | |-- clock-dpll-ddr-m2-div2
clk 8 [ ] fixed_factor_clock | | | | |-- clock-dpll-per-m2-div4-wkupdm
clk 9 [ ] fixed_factor_clock | | | | |-- clock-dpll-per-m2-div4
clk 10 [ ] fixed_factor_clock | | | | |-- clock-clk-24mhz
clk 11 [ ] fixed_factor_clock | | | | |-- clock-clkdiv32k
clk 12 [ ] fixed_factor_clock | | | | |-- clock-l3-gclk
clk 13 [ ] fixed_factor_clock | | | | |-- clock-dpll-core-m4-div2
clk 14 [ ] fixed_factor_clock | | | | |-- clock-l4-rtc-gclk
clk 15 [ ] fixed_factor_clock | | | | |-- clock-l4hs-gclk
clk 16 [ ] fixed_factor_clock | | | | |-- clock-l3s-gclk
clk 17 [ ] fixed_factor_clock | | | | |-- clock-l4fw-gclk
clk 18 [ ] fixed_factor_clock | | | | |-- clock-l4ls-gclk
clk 19 [ ] fixed_factor_clock | | | | |-- clock-sysclk-div
clk 20 [ ] fixed_factor_clock | | | | |-- clock-cpsw-125mhz-gclk
clk 21 [ ] fixed_factor_clock | | | | `-- clock-mmc
simple_bus 8 [ ] ti_omap4_cm | | | |-- clock@0
clk 22 [ ] ti_ctrl_clk | | | | |-- clock@38
clk 23 [ ] ti_ctrl_clk | | | | |-- clock@1c
clk 24 [ ] ti_ctrl_clk | | | | |-- clock@24
clk 25 [ ] ti_ctrl_clk | | | | |-- clock@120
clk 26 [ ] ti_ctrl_clk | | | | |-- clock@e8
clk 27 [ ] ti_ctrl_clk | | | | |-- clock@0
clk 28 [ ] ti_ctrl_clk | | | | |-- clock@18
clk 29 [ ] ti_ctrl_clk | | | | |-- clock@14c
clk 30 [ ] ti_ctrl_clk | | | | |-- clock@38
clk 31 [ ] ti_ctrl_clk | | | | |-- clock@1c
clk 32 [ ] ti_ctrl_clk | | | | |-- clock@24
clk 33 [ ] ti_ctrl_clk | | | | |-- clock@120
clk 34 [ ] ti_ctrl_clk | | | | |-- clock@e8
clk 35 [ ] ti_ctrl_clk | | | | |-- clock@0
clk 36 [ ] ti_ctrl_clk | | | | |-- clock@18
clk 37 [ ] ti_ctrl_clk | | | | `-- clock@14c
simple_bus 9 [ + ] ti_omap4_cm | | | |-- clock@400
clk 38 [ + ] ti_ctrl_clk | | | | |-- clock@0
clk 39 [ ] ti_ctrl_clk | | | | |-- clock@14
clk 40 [ ] ti_ctrl_clk | | | | |-- clock@b0
clk 41 [ ] ti_ctrl_clk | | | | |-- clock@0
clk 42 [ ] ti_ctrl_clk | | | | |-- clock@14
clk 43 [ ] ti_ctrl_clk | | | | `-- clock@b0
simple_bus 10 [ ] ti_omap4_cm | | | |-- clock@600
clk 44 [ ] ti_ctrl_clk | | | | |-- clock@0
clk 45 [ ] ti_ctrl_clk | | | | `-- clock@0
simple_bus 11 [ ] ti_omap4_cm | | | |-- clock@800
clk 46 [ ] ti_ctrl_clk | | | | |-- clock@0
clk 47 [ ] ti_ctrl_clk | | | | `-- clock@0
simple_bus 12 [ ] ti_omap4_cm | | | |-- clock@900
clk 48 [ ] ti_ctrl_clk | | | | |-- clock@0
clk 49 [ ] ti_ctrl_clk | | | | `-- clock@0
simple_bus 13 [ ] ti_omap4_cm | | | `-- clock@a00
clk 50 [ ] ti_ctrl_clk | | | |-- clock@0
clk 51 [ ] ti_ctrl_clk | | | `-- clock@0
simple_bus 14 [ + ] ti_sysc | | |-- target-module@7000
gpio 0 [ + ] gpio_omap | | | `-- gpio@0
simple_bus 15 [ + ] ti_sysc | | |-- target-module@9000
serial 0 [ + ] omap_serial | | | `-- serial@0
simple_bus 16 [ ] ti_sysc | | |-- target-module@b000
simple_bus 17 [ ] ti_sysc | | |-- target-module@d000
simple_bus 18 [ ] ti_sysc | | |-- target-module@10000
simple_bus 19 [ ] simple_bus | | | `-- scm@0
simple_bus 20 [ ] simple_bus | | | `-- scm_conf@0
simple_bus 21 [ ] simple_bus | | | `-- clocks
clk 52 [ ] fixed_factor_clock | | | |-- clock-adc-tsc-fck
clk 53 [ ] fixed_factor_clock | | | |-- clock-dcan0-fck
clk 54 [ ] fixed_factor_clock | | | |-- clock-dcan1-fck
clk 55 [ ] fixed_factor_clock | | | |-- clock-mcasp0-fck
clk 56 [ ] fixed_factor_clock | | | |-- clock-mcasp1-fck
clk 57 [ ] fixed_factor_clock | | | |-- clock-smartreflex0-fck
clk 58 [ ] fixed_factor_clock | | | |-- clock-smartreflex1-fck
clk 59 [ ] fixed_factor_clock | | | |-- clock-sha0-fck
clk 60 [ ] fixed_factor_clock | | | |-- clock-aes0-fck
clk 61 [ ] fixed_factor_clock | | | `-- clock-rng-fck
simple_bus 22 [ ] ti_sysc | | |-- target-module@35000
simple_bus 23 [ ] ti_sysc | | `-- target-module@3e000
simple_bus 24 [ ] simple_bus | |-- interconnect@48000000
simple_bus 25 [ ] simple_bus | | |-- segment@0
simple_bus 26 [ ] ti_sysc | | | |-- target-module@22000
simple_bus 27 [ ] ti_sysc | | | |-- target-module@24000
simple_bus 28 [ ] ti_sysc | | | |-- target-module@2a000
simple_bus 29 [ ] ti_sysc | | | |-- target-module@30000
simple_bus 30 [ ] ti_sysc | | | |-- target-module@38000
simple_bus 31 [ ] ti_sysc | | | |-- target-module@3c000
simple_bus 32 [ ] ti_sysc | | | |-- target-module@4c000
gpio 1 [ ] gpio_omap | | | | `-- gpio@0
simple_bus 33 [ ] ti_sysc | | | |-- target-module@60000
simple_bus 34 [ ] ti_sysc | | | |-- target-module@80000
simple_bus 35 [ ] ti_sysc | | | |-- target-module@c8000
simple_bus 36 [ ] ti_sysc | | | `-- target-module@ca000
simple_bus 37 [ ] simple_bus | | |-- segment@100000
simple_bus 38 [ ] ti_sysc | | | |-- target-module@9c000
simple_bus 39 [ ] ti_sysc | | | |-- target-module@a0000
simple_bus 40 [ ] ti_sysc | | | |-- target-module@a6000
simple_bus 41 [ ] ti_sysc | | | |-- target-module@a8000
simple_bus 42 [ ] ti_sysc | | | |-- target-module@aa000
simple_bus 43 [ ] ti_sysc | | | |-- target-module@ac000
gpio 2 [ ] gpio_omap | | | | `-- gpio@0
simple_bus 44 [ ] ti_sysc | | | |-- target-module@ae000
gpio 3 [ ] gpio_omap | | | | `-- gpio@0
simple_bus 45 [ ] ti_sysc | | | |-- target-module@cc000
simple_bus 46 [ ] ti_sysc | | | |-- target-module@d0000
simple_bus 47 [ ] ti_sysc | | | `-- target-module@d8000
simple_bus 48 [ ] simple_bus | | |-- segment@200000
simple_bus 49 [ ] simple_bus | | `-- segment@300000
simple_bus 50 [ ] ti_sysc | | |-- target-module@0
simple_bus 51 [ ] ti_sysc | | |-- target-module@2000
simple_bus 52 [ ] ti_sysc | | |-- target-module@4000
simple_bus 53 [ ] ti_sysc | | |-- target-module@e000
simple_bus 54 [ ] ti_sysc | | `-- target-module@10000
simple_bus 55 [ ] simple_bus | |-- interconnect@47c00000
simple_bus 56 [ ] simple_bus | | `-- segment@0
simple_bus 57 [ ] simple_bus | |-- interconnect@4a000000
simple_bus 58 [ ] simple_bus | | `-- segment@0
simple_bus 59 [ ] ti_sysc | | `-- target-module@100000
simple_bus 60 [ ] simple_bus | |-- interconnect@4b140000
simple_bus 61 [ ] simple_bus | | `-- segment@0
simple_bus 62 [ ] ti_sysc | |-- target-module@49000000
simple_bus 63 [ ] ti_sysc | |-- target-module@49800000
simple_bus 64 [ ] ti_sysc | |-- target-module@49900000
simple_bus 65 [ ] ti_sysc | |-- target-module@49a00000
simple_bus 66 [ ] ti_sysc | |-- target-module@47810000
i2c 0 [ ] i2c_omap | |-- i2c@44e0b000
pmic 0 [ ] tps65217 pmic | | `-- tps@24
i2c 1 [ + ] i2c_omap | |-- i2c@4802a000
gpio 4 [ ] mcp230xx | | |-- gpio@27
gpio 5 [ ] gpio_pcf8575 | | `-- gpio@20
i2c 2 [ ] i2c_omap | |-- i2c@4819c000
mmc 0 [ + ] omap_hsmmc | |-- mmc@48060000
blk 0 [ + ] mmc_blk | | |-- mmc@48060000.blk
partition 0 [ + ] blk_partition | | | |-- mmc@48060000.blk:1
partition 1 [ + ] blk_partition | | | `-- mmc@48060000.blk:2
bootdev 0 [ ] mmc_bootdev | | `-- mmc@48060000.bootdev
mmc 1 [ + ] omap_hsmmc | |-- mmc@481d8000
blk 1 [ ] mmc_blk | | |-- mmc@481d8000.blk
bootdev 1 [ ] mmc_bootdev | | `-- mmc@481d8000.bootdev
watchdog 0 [ + ] omap3_wdt | |-- wdt@44e35000
misc 0 [ + ] ti-musb-wrapper | |-- usb@47400000
usb 0 [ + ] ti-musb-peripheral | | |-- usb@47401000
ethernet 1 [ + ] usb_ether | | | `-- usb_ether
bootdev 3 [ ] eth_bootdev | | | `-- usb_ether.bootdev
usb 0 [ ] ti-musb-host | | `-- usb@47401800
ethernet 0 [ + ] eth_cpsw | |-- ethernet@4a100000
bootdev 2 [ ] eth_bootdev | | `-- ethernet@4a100000.bootdev
simple_bus 67 [ ] ti_sysc | |-- target-module@53100000
simple_bus 68 [ ] ti_sysc | |-- target-module@53500000
simple_bus 69 [ ] ti_sysc | `-- target-module@56000000
clk 62 [ ] fixed_clock |-- clk_mcasp0_fixed
bootstd 0 [ ] bootstd_drv |-- bootstd
bootmeth 0 [ ] bootmeth_distro | |-- distro
bootmeth 1 [ ] bootmeth_efi | |-- efi
bootmeth 2 [ ] bootmeth_pxe | |-- pxe
bootmeth 3 [ ] vbe_simple | `-- vbe_simple
timer 0 [ + ] omap_timer `-- timer@0
I have read the registers to check if i2c1 clock is enabled and it is, plus i have tried with different versions of u-boot (2020.1 and with that update dtsi to have 0x158 and 0x15C as address for i2c1 pins)
Is there something i am missing, i assumed this would be seamless but seems something i dont follow.
on same setup i2c dev 0 and i2c probe gives me right data
=> i2c dev 0
Setting bus to 0
=> i2c probe
Valid chip addresses: 24 34 50
would appreciate some help here
-maheshG