Message ID | 1414724886-8229-1-git-send-email-Peng.Fan@freescale.com |
---|---|
State | Awaiting Upstream |
Delegated to: | Stefano Babic |
Headers | show |
On Fri, Oct 31, 2014 at 1:08 AM, Peng Fan <Peng.Fan@freescale.com> wrote: > The PFUZ probe failed with the following msg: > " wait_for_sr_state: failed sr=81 cr=a0 state=2020 > i2c_init_transfer: failed for chip 0x8 retry=0 > wait_for_sr_state: failed sr=81 cr=a0 state=2020 > i2c_init_transfer: failed for chip 0x8 retry=1 > wait_for_sr_state: failed sr=81 cr=a0 state=2020 > i2c_init_transfer: failed for chip 0x8 retry=2 > i2c_init_transfer: give up i2c_regs=021a0000 > Can't find PMIC:PFUZE100 " > > board_early_init_f is too early to call i2c related setting, because > init_func_i2c is called after board_early_init_f being invoked. Thus > move setup_i2c into board_init. > > Also PFUZ is connected to I2C bus 0, so change "1" -> "0". > > Using this patch PFUZ can be correctly probed: > "PMIC: PFUZE100 ID=0x11" > > Signed-off-by: Peng Fan <Peng.Fan@freescale.com> Maybe this is a difference between RevA versus RevB board? I have a RevA and PMIC works fine here: U-Boot 2014.10-rc2-17115-g718b923 (Sep 30 2014 - 14:03:24) CPU: Freescale i.MX6SX rev1.0 at 792 MHz Reset cause: WDOG Board: MX6SX SABRE SDB I2C: ready DRAM: 1 GiB MMC: FSL_SDHC: 0 In: serial Out: serial Err: serial PMIC: PFUZE100 ID=0x10 Net: FEC [PRIME] Hit any key to stop autoboot: 0 => => pmic PFUZE100 dump PMIC: PFUZE100 0x00: 00000010 00000000 00000000 00000021 00000000 00000001 0000003f 00000001 0x08: 00000000 0000007f 00000000 00000000 00000000 00000000 00000000 00000081 0x10: 00000000 00000000 0000003f 00000000 00000000 00000000 00000000 00000000 0x18: 00000000 00000000 00000000 00000010 00000000 00000000 00000000 00000000 0x20: 0000002b 0000001b 0000002b 00000008 00000044 00000000 00000000 00000000 0x28: 00000000 00000000 00000000 00000000 00000000 00000000 0000002b 0000001b 0x30: 0000002b 00000008 00000044 00000000 00000000 00000072 00000072 00000072 0x38: 00000008 00000054 00000000 00000000 00000026 00000026 00000026 00000008 0x40: 00000064 00000000 00000000 00000026 00000026 00000026 00000008 00000064 0x48: 00000000 00000000 00000038 00000038 00000038 00000008 00000074 00000000 0x50: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0x58: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0x60: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0x68: 00000000 00000000 00000010 00000006 00000018 0000000e 0000001a 00000010 0x70: 0000001f 0000001c 00000000 00000000 00000000 00000000 00000000 00000000 0x78: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 =>
On 10/31/2014 08:01 PM, Fabio Estevam wrote: > On Fri, Oct 31, 2014 at 1:08 AM, Peng Fan <Peng.Fan@freescale.com> wrote: >> The PFUZ probe failed with the following msg: >> " wait_for_sr_state: failed sr=81 cr=a0 state=2020 >> i2c_init_transfer: failed for chip 0x8 retry=0 >> wait_for_sr_state: failed sr=81 cr=a0 state=2020 >> i2c_init_transfer: failed for chip 0x8 retry=1 >> wait_for_sr_state: failed sr=81 cr=a0 state=2020 >> i2c_init_transfer: failed for chip 0x8 retry=2 >> i2c_init_transfer: give up i2c_regs=021a0000 >> Can't find PMIC:PFUZE100 " >> >> board_early_init_f is too early to call i2c related setting, because >> init_func_i2c is called after board_early_init_f being invoked. Thus >> move setup_i2c into board_init. >> >> Also PFUZ is connected to I2C bus 0, so change "1" -> "0". >> >> Using this patch PFUZ can be correctly probed: >> "PMIC: PFUZE100 ID=0x11" >> >> Signed-off-by: Peng Fan <Peng.Fan@freescale.com> > > Maybe this is a difference between RevA versus RevB board? I checked SCH-27962 REV A and SCH-27962 REV B. There is no different to I2C part. PMIC is connected to the first I2C bus. You can check page 22. > > I have a RevA and PMIC works fine here: I tried on RevA and RevB. Both can not work. The following is the msg on RevA: U-Boot 2014.10-00435-g571bdf1 (Nov 01 2014 - 07:39:47) CPU: Freescale i.MX6SX rev1.0 at 792 MHz Reset cause: POR Board: MX6SX SABRE SDB I2C: ready DRAM: 1 GiB MMC: FSL_SDHC: 0 *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial wait_for_sr_state: failed sr=81 cr=a0 state=2020 i2c_init_transfer: failed for chip 0x8 retry=0 wait_for_sr_state: failed sr=81 cr=a0 state=2020 i2c_init_transfer: failed for chip 0x8 retry=1 wait_for_sr_state: failed sr=81 cr=a0 state=2020 i2c_init_transfer: failed for chip 0x8 retry=2 i2c_init_transfer: give up i2c_regs=021a0000 Can't find PMIC:PFUZE100 Net: FEC [PRIME] Hit any key to stop autoboot: 0 After applying this patch, all is fine. I am not sure whether your board has been reworked. But PMIC is connected to the first I2C bus, thus I think setup_i2c(0,xxxx) is correct, but not setup_i2c(1,xxx). And I think it is too early to call setup_i2c in board_early_init_f. > > U-Boot 2014.10-rc2-17115-g718b923 (Sep 30 2014 - 14:03:24) > > CPU: Freescale i.MX6SX rev1.0 at 792 MHz > Reset cause: WDOG > Board: MX6SX SABRE SDB > I2C: ready > DRAM: 1 GiB > MMC: FSL_SDHC: 0 > In: serial > Out: serial > Err: serial > PMIC: PFUZE100 ID=0x10 > Net: FEC [PRIME] > Hit any key to stop autoboot: 0 > => > > => pmic PFUZE100 dump > PMIC: PFUZE100 > > 0x00: 00000010 00000000 00000000 00000021 00000000 00000001 0000003f 00000001 > 0x08: 00000000 0000007f 00000000 00000000 00000000 00000000 00000000 00000081 > 0x10: 00000000 00000000 0000003f 00000000 00000000 00000000 00000000 00000000 > 0x18: 00000000 00000000 00000000 00000010 00000000 00000000 00000000 00000000 > 0x20: 0000002b 0000001b 0000002b 00000008 00000044 00000000 00000000 00000000 > 0x28: 00000000 00000000 00000000 00000000 00000000 00000000 0000002b 0000001b > 0x30: 0000002b 00000008 00000044 00000000 00000000 00000072 00000072 00000072 > 0x38: 00000008 00000054 00000000 00000000 00000026 00000026 00000026 00000008 > 0x40: 00000064 00000000 00000000 00000026 00000026 00000026 00000008 00000064 > 0x48: 00000000 00000000 00000038 00000038 00000038 00000008 00000074 00000000 > 0x50: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 > 0x58: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 > 0x60: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 > 0x68: 00000000 00000000 00000010 00000006 00000018 0000000e 0000001a 00000010 > 0x70: 0000001f 0000001c 00000000 00000000 00000000 00000000 00000000 00000000 > 0x78: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 > => >
On Fri, Oct 31, 2014 at 10:01 PM, Peng Fan <B51431@freescale.com> wrote: > > > On 10/31/2014 08:01 PM, Fabio Estevam wrote: >> On Fri, Oct 31, 2014 at 1:08 AM, Peng Fan <Peng.Fan@freescale.com> wrote: >>> The PFUZ probe failed with the following msg: >>> " wait_for_sr_state: failed sr=81 cr=a0 state=2020 >>> i2c_init_transfer: failed for chip 0x8 retry=0 >>> wait_for_sr_state: failed sr=81 cr=a0 state=2020 >>> i2c_init_transfer: failed for chip 0x8 retry=1 >>> wait_for_sr_state: failed sr=81 cr=a0 state=2020 >>> i2c_init_transfer: failed for chip 0x8 retry=2 >>> i2c_init_transfer: give up i2c_regs=021a0000 >>> Can't find PMIC:PFUZE100 " >>> >>> board_early_init_f is too early to call i2c related setting, because >>> init_func_i2c is called after board_early_init_f being invoked. Thus >>> move setup_i2c into board_init. >>> >>> Also PFUZ is connected to I2C bus 0, so change "1" -> "0". >>> >>> Using this patch PFUZ can be correctly probed: >>> "PMIC: PFUZE100 ID=0x11" >>> >>> Signed-off-by: Peng Fan <Peng.Fan@freescale.com> >> >> Maybe this is a difference between RevA versus RevB board? > > I checked SCH-27962 REV A and SCH-27962 REV B. There is no different to I2C part. PMIC is connected to the first I2C bus. You can check page 22. You are right. I was surprised that PMIC was working originally. I tested your change and it also works fine here. Thanks!
On Fri, Oct 31, 2014 at 1:08 AM, Peng Fan <Peng.Fan@freescale.com> wrote: > The PFUZ probe failed with the following msg: > " wait_for_sr_state: failed sr=81 cr=a0 state=2020 > i2c_init_transfer: failed for chip 0x8 retry=0 > wait_for_sr_state: failed sr=81 cr=a0 state=2020 > i2c_init_transfer: failed for chip 0x8 retry=1 > wait_for_sr_state: failed sr=81 cr=a0 state=2020 > i2c_init_transfer: failed for chip 0x8 retry=2 > i2c_init_transfer: give up i2c_regs=021a0000 > Can't find PMIC:PFUZE100 " > > board_early_init_f is too early to call i2c related setting, because > init_func_i2c is called after board_early_init_f being invoked. Thus > move setup_i2c into board_init. > > Also PFUZ is connected to I2C bus 0, so change "1" -> "0". > > Using this patch PFUZ can be correctly probed: > "PMIC: PFUZE100 ID=0x11" > > Signed-off-by: Peng Fan <Peng.Fan@freescale.com> Acked-by: Fabio Estevam <fabio.estevam@freescale.com>
Hi Stefano, Would you please help reviewing this patch? On 11/1/2014 8:16 AM, Fabio Estevam wrote: > On Fri, Oct 31, 2014 at 1:08 AM, Peng Fan <Peng.Fan@freescale.com> wrote: >> The PFUZ probe failed with the following msg: >> " wait_for_sr_state: failed sr=81 cr=a0 state=2020 >> i2c_init_transfer: failed for chip 0x8 retry=0 >> wait_for_sr_state: failed sr=81 cr=a0 state=2020 >> i2c_init_transfer: failed for chip 0x8 retry=1 >> wait_for_sr_state: failed sr=81 cr=a0 state=2020 >> i2c_init_transfer: failed for chip 0x8 retry=2 >> i2c_init_transfer: give up i2c_regs=021a0000 >> Can't find PMIC:PFUZE100 " >> >> board_early_init_f is too early to call i2c related setting, because >> init_func_i2c is called after board_early_init_f being invoked. Thus >> move setup_i2c into board_init. >> >> Also PFUZ is connected to I2C bus 0, so change "1" -> "0". >> >> Using this patch PFUZ can be correctly probed: >> "PMIC: PFUZE100 ID=0x11" >> >> Signed-off-by: Peng Fan <Peng.Fan@freescale.com> > > Acked-by: Fabio Estevam <fabio.estevam@freescale.com> > Regards, Peng.
Hi Peng, On 16/11/2014 12:42, Peng Fan wrote: >>> Also PFUZ is connected to I2C bus 0, so change "1" -> "0". >>> >>> Using this patch PFUZ can be correctly probed: >>> "PMIC: PFUZE100 ID=0x11" >>> >>> Signed-off-by: Peng Fan <Peng.Fan@freescale.com> >> >> Acked-by: Fabio Estevam <fabio.estevam@freescale.com> Patch is ok for me, too. Acked-by: Stefano Babic <sbabic@denx.de> Best regards, Stefano Babic
On 31/10/2014 04:08, Peng Fan wrote: > The PFUZ probe failed with the following msg: > " wait_for_sr_state: failed sr=81 cr=a0 state=2020 > i2c_init_transfer: failed for chip 0x8 retry=0 > wait_for_sr_state: failed sr=81 cr=a0 state=2020 > i2c_init_transfer: failed for chip 0x8 retry=1 > wait_for_sr_state: failed sr=81 cr=a0 state=2020 > i2c_init_transfer: failed for chip 0x8 retry=2 > i2c_init_transfer: give up i2c_regs=021a0000 > Can't find PMIC:PFUZE100 " > > board_early_init_f is too early to call i2c related setting, because > init_func_i2c is called after board_early_init_f being invoked. Thus > move setup_i2c into board_init. > > Also PFUZ is connected to I2C bus 0, so change "1" -> "0". > > Using this patch PFUZ can be correctly probed: > "PMIC: PFUZE100 ID=0x11" > > Signed-off-by: Peng Fan <Peng.Fan@freescale.com> > --- Applied to u-boot-imx, thanks ! Best regards, Stefano Babic
diff --git a/board/freescale/mx6sxsabresd/mx6sxsabresd.c b/board/freescale/mx6sxsabresd/mx6sxsabresd.c index 68d3718..256ea29 100644 --- a/board/freescale/mx6sxsabresd/mx6sxsabresd.c +++ b/board/freescale/mx6sxsabresd/mx6sxsabresd.c @@ -243,7 +243,6 @@ int board_phy_config(struct phy_device *phydev) int board_early_init_f(void) { setup_iomux_uart(); - setup_i2c(1, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1); /* Enable PERI_3V3, which is used by SD2, ENET, LVDS, BT */ imx_iomux_v3_setup_multiple_pads(peri_3v3_pads, @@ -277,6 +276,10 @@ int board_init(void) /* Address of boot parameters */ gd->bd->bi_boot_params = PHYS_SDRAM + 0x100; +#ifdef CONFIG_SYS_I2C_MXC + setup_i2c(0, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1); +#endif + return 0; }
The PFUZ probe failed with the following msg: " wait_for_sr_state: failed sr=81 cr=a0 state=2020 i2c_init_transfer: failed for chip 0x8 retry=0 wait_for_sr_state: failed sr=81 cr=a0 state=2020 i2c_init_transfer: failed for chip 0x8 retry=1 wait_for_sr_state: failed sr=81 cr=a0 state=2020 i2c_init_transfer: failed for chip 0x8 retry=2 i2c_init_transfer: give up i2c_regs=021a0000 Can't find PMIC:PFUZE100 " board_early_init_f is too early to call i2c related setting, because init_func_i2c is called after board_early_init_f being invoked. Thus move setup_i2c into board_init. Also PFUZ is connected to I2C bus 0, so change "1" -> "0". Using this patch PFUZ can be correctly probed: "PMIC: PFUZE100 ID=0x11" Signed-off-by: Peng Fan <Peng.Fan@freescale.com> --- board/freescale/mx6sxsabresd/mx6sxsabresd.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)