[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