[U-Boot] soft-i2c and i2c-gpio issues with at91

Matt Wood mattwood2000 at gmail.com
Tue May 26 19:23:06 CEST 2015


Thank you Simon.  Getting there, but now I get a data abort and system
reset when trying to set the i2c bus.  I need to chase this down, but if
you have any suggestions I'd appreciate it.

Below is the output of dm tree and dm uclass.

Thanks, Matt.

U-Boot> i2c dev 3
Setting bus to 3
data abort
pc : [<3ff714a0>]          lr : [<3ff7148c>]
reloc pc : [<26f194a0>]    lr : [<26f1948c>]
sp : 3fb52168  ip : 0000001f     fp : 00000000
r10: 00000003  r9 : 3fb57ee0     r8 : 3ffa5588
r7 : 3ff92ff4  r6 : 3fb581c8     r5 : 0000001f  r4 : 00000000
r3 : 00000001  r2 : 00000000     r1 : 80000000  r0 : ea000016
Flags: nzCv  IRQs off  FIQs off  Mode SVC_32
Resetting CPU ...

resetting ...
RomBOOT

U-Boot> dm tree
 Class       Probed   Name
----------------------------------------
 root        [ + ]    root_driver
 simple_bus  [   ]    |-- ahb
 simple_bus  [   ]    |   `-- apb
 simple_bus  [   ]    |       `-- pinctrl at fc06a000
 gpio        [   ]    |           |-- gpio at fc06a000
 gpio        [   ]    |           |-- gpio at fc06b000
 gpio        [   ]    |           |-- gpio at fc06c000
 gpio        [   ]    |           `-- gpio at fc06d000
 i2c         [   ]    `-- gpio-i2c at 1

U-Boot> dm uclass
uclass 0: root
- * root_driver @ 3fb58028, seq 0, (req -1)

Cannot find uclass for id 1: please add the UCLASS_DRIVER() declaration for
this UCLASS_... id
Cannot find uclass for id 2: please add the UCLASS_DRIVER() declaration for
this UCLASS_... id
Cannot find uclass for id 3: please add the UCLASS_DRIVER() declaration for
this UCLASS_... id
Cannot find uclass for id 4: please add the UCLASS_DRIVER() declaration for
this UCLASS_... id
Cannot find uclass for id 5: please add the UCLASS_DRIVER() declaration for
this UCLASS_... id
Cannot find uclass for id 6: please add the UCLASS_DRIVER() declaration for
this UCLASS_... id
Cannot find uclass for id 7: please add the UCLASS_DRIVER() declaration for
this UCLASS_... id
Cannot find uclass for id 8: please add the UCLASS_DRIVER() declaration for
this UCLASS_... id
uclass 9: simple_bus
-   ahb @ 3fb580a0
-   apb @ 3fb580f8
-   pinctrl at fc06a000 @ 3fb58150

uclass 10: gpio
-   gpio at fc06a000 @ 3fb581c8
-   gpio at fc06b000 @ 3fb58220
-   gpio at fc06c000 @ 3fb58278
-   gpio at fc06d000 @ 3fb582d0

Cannot find uclass for id 11: please add the UCLASS_DRIVER() declaration
for this UCLASS_... id
Cannot find uclass for id 12: please add the UCLASS_DRIVER() declaration
for this UCLASS_... id
Cannot find uclass for id 13: please add the UCLASS_DRIVER() declaration
for this UCLASS_... id
Cannot find uclass for id 14: please add the UCLASS_DRIVER() declaration
for this UCLASS_... id
Cannot find uclass for id 15: please add the UCLASS_DRIVER() declaration
for this UCLASS_... id
Cannot find uclass for id 16: please add the UCLASS_DRIVER() declaration
for this UCLASS_... id
uclass 17: i2c
-   gpio-i2c at 1 @ 3fb58348, seq -1, (req 3)

uclass 18: i2c_generic
Cannot find uclass for id 19: please add the UCLASS_DRIVER() declaration
for this UCLASS_... id
Cannot find uclass for id 20: please add the UCLASS_DRIVER() declaration
for this UCLASS_... id
Cannot find uclass for id 21: please add the UCLASS_DRIVER() declaration
for this UCLASS_... id
Cannot find uclass for id 22: please add the UCLASS_DRIVER() declaration
for this UCLASS_... id
Cannot find uclass for id 23: please add the UCLASS_DRIVER() declaration
for this UCLASS_... id
Cannot find uclass for id 24: please add the UCLASS_DRIVER() declaration
for this UCLASS_... id
Cannot find uclass for id 25: please add the UCLASS_DRIVER() declaration
for this UCLASS_... id
Cannot find uclass for id 26: please add the UCLASS_DRIVER() declaration
for this UCLASS_... id
Cannot find uclass for id 27: please add the UCLASS_DRIVER() declaration
for this UCLASS_... id
Cannot find uclass for id 28: please add the UCLASS_DRIVER() declaration
for this UCLASS_... id
Cannot find uclass for id 29: please add the UCLASS_DRIVER() declaration
for this UCLASS_... id
Cannot find uclass for id 30: please add the UCLASS_DRIVER() declaration
for this UCLASS_... id
Cannot find uclass for id 31: please add the UCLASS_DRIVER() declaration
for this UCLASS_... id

On Tue, May 26, 2015 at 10:41 AM, Simon Glass <sjg at chromium.org> wrote:

> Hi Matt,
>
> On 26 May 2015 at 08:33, Matt Wood <mattwood2000 at gmail.com> wrote:
> > Hi Simon, yes I currently have i2c-gpio enabled.  Below is the output of
> > both commands.  Looks like the GPIO driver is not setup as you suspected.
> > However I'm confused on what specifically is needed to enable it.  Are
> you
> > talking about a DT entry?  In looking at other DTS files I did not see
> > anything in particular that called out GPIO.  Can you point me to what
> I'm
> > missing?
>
> Looking at the kernel device tree files it looks like the GPIO node is
> hidden inside ahb/apb/pinctrl. Since they are all compatible with
> 'simple-bus' it should still work.
>
> But you will need to create an of_match entry in at91_gpio.c. See
> s5p_gpio.c for an example. You should add the compatible ID referenced
> in the pioA node of your device tree.
>
> Then you should see GPIO nodes in your driver model tree. Without
> these i2c cannot use GPIO.
>
> Regards,
> Simon
>
> >
> > Thanks, Matt.
> >
> > U-Boot> dm tree
> >  Class       Probed   Name
> > ----------------------------------------
> >  root        [ + ]    root_driver
> >  simple_bus  [   ]    |-- ahb
> >  simple_bus  [   ]    |   `-- apb
> >  simple_bus  [   ]    |       `-- pinctrl at fc06a000
> >  i2c         [   ]    `-- soft-i2c at 1
> > U-Boot> dm uclass
> > uclass 0: root
> > - * root_driver @ 3fb58028, seq 0, (req -1)
> >
> > Cannot find uclass for id 1: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 2: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 3: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 4: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 5: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 6: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 7: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 8: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > uclass 9: simple_bus
> > -   ahb @ 3fb580a0
> > -   apb @ 3fb580f8
> > -   pinctrl at fc06a000 @ 3fb58150
> >
> > uclass 10: gpio
> > Cannot find uclass for id 11: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 12: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 13: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 14: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 15: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 16: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > uclass 17: i2c
> > -   soft-i2c at 1 @ 3fb581c8, seq -1, (req 0)
> >
> > uclass 18: i2c_generic
> > Cannot find uclass for id 19: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 20: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 21: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 22: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 23: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 24: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 25: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 26: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 27: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 28: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 29: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 30: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> > Cannot find uclass for id 31: please add the UCLASS_DRIVER() declaration
> for
> > this UCLASS_... id
> >
> > On Tue, May 26, 2015 at 9:47 AM, Simon Glass <sjg at chromium.org> wrote:
> >>
> >> (adding Przemyslaw who uses the I2C GPIO driver)
> >>
> >> Hi,
> >>
> >> On 25 May 2015 at 22:30, Heiko Schocher <hs at denx.de> wrote:
> >> > Hello Matt,
> >> >
> >> > Am 22.05.2015 16:35, schrieb Matt Wood:
> >> >>
> >> >> Hi all, I am trying to get a bitbanged i2c port working with u-boot
> on
> >> >> an
> >> >> Atmel SAMA5D3 platform.  I have added DT bindings to support the I2C
> >> >> drivers however when I try to select the bus on the u-boot command
> line
> >> >> I
> >> >> consistently get an error in gpio-uclass:
> >> >
> >> >
> >> > I am not sure, if DM is supported on this plattform yet, I added
> >> > Andreas Biesmann (AT91) and Simon Glass (DM) to Cc, maybe one of them
> >> > can help you here ...
> >> >
> >> > bye,
> >> > Heiko
> >> >
> >> >>
> >> >> _gpio_request_by_name_nodev: uclass_get_device_by_of_offset failed
> >> >>
> >> >> _gpio_request_by_name_nodev: Node 'soft-i2c at 1', property 'gpios',
> >> >> failed
> >> >> to
> >> >> request GPIO index 0: -19
> >> >>
> >> >> Each driver always fails at the get_dev_by_offset routine.
> >> >>
> >> >> I suspect some issue with the way the GPIO is defined or is not setup
> >> >> correctly.  Has anyone seen this or have any advice on where to look?
> >> >>
> >> >> This is the relevant part of the device tree:
> >> >>
> >> >> aliases {
> >> >>
> >> >>                  i2c0 = "/soft-i2c at 1";
> >> >>
> >> >> };
> >> >>
> >> >>
> >> >> soft-i2c at 1 {
> >> >>
> >> >>                  #address-cells = <1>;
> >> >>
> >> >>                  #size-cells = <0>;
> >> >>
> >> >> /*              compatible = "soft-i2c"; */
> >> >>
> >> >>                  compatible = "i2c-gpio";
> >> >>
> >> >> /*              clock-frequency = <100000>; */
> >> >>
> >> >> /*              pinctrl-names = "default";
> >> >>
> >> >>                  pinctrl-0 = <&pinctrl_soft_i2c>; */
> >> >>
> >> >>                  /* Define the proper GPIO pins */
> >> >>
> >> >>
> >> >> /*
> >> >>
> >> >>
> >> >>                  clock-pin = <&pioA 31 0>;
> >> >>
> >> >>                  data-pin = <&pioA 30 0>; */
> >> >>
> >> >>                  gpios = <&pioA 30 0     /* SDA */
> >> >>
> >> >>                           &pioA 31 0>;   /* SCL */
> >> >>
> >> >>
> >> >>                  i2c-gpio,sda-open-drain;
> >> >>
> >> >>                  i2c-gpio,scl-open-drain;
> >> >>
> >> >>                  i2c-gpio,delay-us =<3>;
> >> >>
> >> >>
> >> >>          };
> >> >>
> >> >> };
> >>
> >> Can you post the output of 'dm tree' and 'dm uclass'? I wonder if your
> >> GPIO driver is not connected up properly?
> >>
> >> Are you using i2c-gpio.c? That driver should work as is on any
> >> platform with only device tree additions.
> >>
> >> Regards,
> >> Simon
> >
> >
>


More information about the U-Boot mailing list