[Buildroot] [dtc] Compiling a .dts overlay

Oscar Gomez Fuente oscargomezf at gmail.com
Tue May 10 07:48:35 UTC 2016


Ok Peter,

Thank you very much.

I've got another concern. I've realized that sometimes the i2c device
tca6424a doesn't init correctly and I see these messages in the kernel log :

[    3.638369] pca953x 1-0022: failed reading register
[    3.644342] pca953x: probe of 1-0022 failed with error -

I think I can solve this If I use correctly the reset signal of the
tca6424a. Right now I don't use this signal, It's connected to a pull-up
resistor. Is there anyway to manage this type of reset signals in i2c
devices? I was surfing on the internet and I read this patch for the
gpio-pca953x driver.

http://www.spinics.net/lists/arm-kernel/msg351168.html

I've applied this patch and know I can see the resetsignal  falling and
rising, but now the i2c device always fails in the init. But this patch
isn't committed on linux kernel, so I think it isn't the way to do this.

Does anyone have any suggestion how to manage this type of signal?


Best regards.

Oscar Gomez Fuente.

On 9 May 2016 at 22:46, Peter Seiderer <ps.report at gmx.net> wrote:

> Hello Oscar,
>
> On Mon, 9 May 2016 11:57:02 +0200, Oscar Gomez Fuente <
> oscargomezf at gmail.com> wrote:
>
> > Hi everyone,
> >
> > The dtb overlay loaded fine. I've checked this with the command: vcdbg
> log
> > msg
> > ...
> > 001402.187: Loading 'bcm2710-rpi-3-b.dtb' from SD card
> > 001468.661: dtparam: uart0_clkrate=48000000
> > 001488.609: Loaded overlay 'pi3-disable-bt'
> > 001523.385: Loaded overlay 'tca6424a'
> > ...
> >
> > Now I can see the device: /sys/call/gpiochip488
> >
> > I can access to the 24 pins of my TCA6424A IC [488 to 511]
> >
> > # echo 488 > /sys/class/gpio/export
> > # echo "out" > /sys/class/gpio/gpio488/direction
> > # echo 1 > /sys/class/gpio/gpio488/value
> >
> > But I couldn't see the interrupt in /proc/interrupts:
> >
> > # cat /proc/interrupts
> >            CPU0       CPU1       CPU2       CPU3
> >  16:          0          0          0          0   ARMCTRL  16 Edge
> >  bcm2708_fb dma
> >  20:          0          0          0          0   ARMCTRL  20 Edge
> >  DMA IRQ
> >  21:          0          0          0          0   ARMCTRL  21 Edge
> >  DMA IRQ
> >  24:          0          0          0          0   ARMCTRL  24 Edge
> >  DMA IRQ
> >  32:     424138          0          0          0   ARMCTRL  32 Edge
> >  dwc_otg, dwc_otg_pcd, dwc_otg_hcd:usb1
> >  49:          0          0          0          0   ARMCTRL  49 Edge
> >  3f200000.gpio:bank0
> >  50:          0          0          0          0   ARMCTRL  50 Edge
> >  3f200000.gpio:bank1
> >  65:         14          0          0          0   ARMCTRL  65 Edge
> >  3f00b880.mailbox
> >  66:          2          0          0          0   ARMCTRL  66 Edge
> >  VCHIQ doorbell
> >  75:          1          0          0          0   ARMCTRL  75 Edge
> >  77:        554          0          0          0   ARMCTRL  77 Edge
> >  DMA IRQ
> >  79:       6148          0          0          0   ARMCTRL  79 Edge
> >  3f804000.i2c
> >  80:          0          0          0          0   ARMCTRL  80 Edge
> >  3f204000.spi
> >  82:        136          0          0          0   ARMCTRL  82 Edge
> >  mmc0
> >  83:      10895          0          0          0   ARMCTRL  83 Edge
> >  uart-pl011
> >  84:       9475          0          0          0   ARMCTRL  84 Edge
> >  mmc1
> >  96:          0          0          0          0   ARMCTRL  96 Edge
> >  arch_timer
> >  97:      10595       8874       3133        458   ARMCTRL  97 Edge
> >  arch_timer
> > ...
> >
> > According to my .dts file, I've configured the pin GPIO04 as an input
> > [interrupt]. I think I had to see an interrupt related to tca6424a,
> didn't
> > I? but it didn't appear. I've read the kernel log and I've seen this
> > suspicious message:
> >
> > # dmesg
> > ..
> > [    3.633230] pca953x 1-0022: interrupt support not compiled in
> > ..
> >
> > So I was surfing on the internet and It seems to be you have to select in
> > the kernel the option:
> >
> > Device Drivers > GPIO Support > I2C GPIO expanders > [*] GPIO_PCA953X_IRQ
> >
> > But If you want to select this option you can't select the driver:
> > PCA95[357]x, PCA9698, TCA64xx, and MAX7310 I/O ports like a module. (I
> > don't have any idea why?)
> >
> > Eventually, everything works fine.
> >
> >
> > So this is my final tca6424a-overlay.dts [i2c1 and INT pin connected to
> > GPI04] working fine on my raspberry pi 3B.
> >
> > ---
> > // Definitions for TCA6424A IO Expander from Texas Instruments
> > /dts-v1/;
> > /plugin/;
> > / {
> > compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
> >
> > fragment at 0 {
> > target = <&i2c1>;
> > __overlay__ {
> > status = "okay";
> > };
> > };
> >
> > fragment at 1 {
> > target = <&gpio>;
> > __overlay__ {
> > tca6424_pins: tca6424_pins {
> > brcm,pins = <4>;
> > brcm,function = <0>;
> > };
> > };
> > };
> >
> > fragment at 2 {
> > target = <&i2c1>;
> > __overlay__ {
> > #address-cells = <1>;
> > #size-cells = <0>;
> > tca6424 at 22 {
> > compatible = "ti,tca6424";
> > reg = <0x22>;
> > pinctrl-names = "default";
> > pinctrl-0 = <&tca6424_pins>;
> > interrupt-parent = <&gpio>;
> > interrupts = <4 2>;
> > };
> >
> > };
> > };
> > };
> > ---
> >
> > I would like to place this overlay dts file in
> > https://github.com/raspberrypi/linux.git/arch/arm/boot/dts/overlays
> >
> > Does anyone know how to apply for uploading this overlay dts file, to the
> > person in charge of https://github.com/raspberrypi/linux?
> >
> >
>
> Try to announce it somewhere on RPi forum [1] or create a git(hub) pull
> request against https://github.com/raspberrypi/linux?
>
> But I think chances are higher for a widely available ready to use
> devices/add-on-boards than for individual solutions...
>
> Regards,
> Peter
>
> [1] https://www.raspberrypi.org/forum
>
> > Best regards.
> >
> > On 9 May 2016 at 08:37, Oscar Gomez Fuente <oscargomezf at gmail.com>
> wrote:
> >
> > > Hi,
> > >
> > >
> > > I've tried what told me Peter Seiderer, and it compiled fine: "using
> > > interrupts = <23 2>;". Now I'm going to check if the .dtb file works
> fine.
> > >
> > > Thank you very much.
> > >
> > > Best regards.
> > >
> > > Oscar Gomez Fuente
> > >
> > > On 6 May 2016 at 23:20, Nicholas Walton <nicholas.walton at gmail.com>
> wrote:
> > >
> > >> Plugin overlays are not part of mainline dtc. Try
> > >> https://git.kernel.org/cgit/utils/dtc/dtc.git and the instructions at
> > >>
> https://learn.adafruit.com/introduction-to-the-beaglebone-black-device-tree/compiling-an-overlay
> > >> .
> > >>
> > >> On Fri, May 6, 2016 at 5:17 AM, Oscar Gomez Fuente <
> oscargomezf at gmail.com
> > >> > wrote:
> > >>
> > >>> Hi,
> > >>>
> > >>> I'm working with the latest stable release: 2016.02 and with the
> > >>> raspberry pi 3B.
> > >>>
> > >>> I'm trying to compile my own .dtb overlay, because I need to add the
> IO
> > >>> Expander i2c TCA6424A to my HW. And I would like to know how to do
> this
> > >>> using overlays and device tree.
> > >>>
> > >>> But I've got this error when I tried to compile de .dts file:
> > >>>
> > >>> # dtc -I dts -O dtb -o tca6424a-overlay.dtb tca6424a-overlay.dts
> > >>> Error: tca6424a-overlay.dts:3.2-8 syntax error
> > >>> FATAL ERROR: Unable to parse input tree
> > >>> # dtc -v
> > >>> Version: DTC 1.4.1-g8ead5b66
> > >>> #
> > >>>
> > >>> This is the .dts file:
> > >>> ----------
> > >>> // Definitions for TCA6424A IO Extender from Texas Instruments
> > >>> /dts-v1/;
> > >>> /plugin/;
> > >>> / {
> > >>> compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
> > >>>
> > >>> fragment at 0 {
> > >>> target = <&i2c1>;
> > >>> __overlay__ {
> > >>> status = "okay";
> > >>> };
> > >>> };
> > >>>
> > >>> fragment at 1 {
> > >>> target = <&gpio>;
> > >>> __overlay__ {
> > >>> tca6424_pins: tca6424_pins {
> > >>> brcm,pins = <4>;
> > >>> brcm,function = <0>;
> > >>> };
> > >>> };
> > >>> };
> > >>>
> > >>> fragment at 2 {
> > >>> target = <&i2c1>;
> > >>> __overlay__ {
> > >>> #address-cells = <1>;
> > >>> #size-cells = <0>;
> > >>> tca6424 at 22 {
> > >>> compatible = "ti,tca6424";
> > >>> reg = <0x22>;
> > >>> pinctrl-names = "default";
> > >>> pinctrl-0 = <&tca6424_pins>;
> > >>> interrupt-parent = <&gpio4>;
> > >>> interrupts = <23 IRQ_TYPE_LEVEL_LOW>;
> > >>> };
> > >>>
> > >>> };
> > >>> };
> > >>> };
> > >>> -----------
> > >>>
> > >>> Anyone could help me how to do this?
> > >>>
> > >>> Best regards.
> > >>>
> > >>> Oscar Gomez Fuente.
> > >>>
> > >>> _______________________________________________
> > >>> buildroot mailing list
> > >>> buildroot at busybox.net
> > >>> http://lists.busybox.net/mailman/listinfo/buildroot
> > >>>
> > >>
> > >>
> > >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20160510/56e7d1a5/attachment-0002.html>


More information about the buildroot mailing list