Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [dtc] Compiling a .dts overlay
@ 2016-05-06 12:17 Oscar Gomez Fuente
  2016-05-06 21:08 ` Peter Seiderer
  2016-05-06 21:20 ` Nicholas Walton
  0 siblings, 2 replies; 9+ messages in thread
From: Oscar Gomez Fuente @ 2016-05-06 12:17 UTC (permalink / raw)
  To: buildroot

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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20160506/c24b270d/attachment.html>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Buildroot] [dtc] Compiling a .dts overlay
  2016-05-06 12:17 [Buildroot] [dtc] Compiling a .dts overlay Oscar Gomez Fuente
@ 2016-05-06 21:08 ` Peter Seiderer
  2016-05-06 21:20 ` Nicholas Walton
  1 sibling, 0 replies; 9+ messages in thread
From: Peter Seiderer @ 2016-05-06 21:08 UTC (permalink / raw)
  To: buildroot

Hello Oscar,

On Fri, 6 May 2016 14:17:32 +0200, Oscar Gomez Fuente <oscargomezf@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
> #
> 

You need to use a overlay enhanced dtc e.g. the one provided with the
Raspberry Pi linux kernel:

./build/linux-9118192d7357b0942885c2c8baf65d5501c12913/scripts/dtc/dtc --version
Version: DTC 1.4.1-g25efc119

./build/linux-9118192d7357b0942885c2c8baf65d5501c12913/scripts/dtc/dtc -@ -I dts -O dtb -o -o tca6424a-overlay.dtb tca6424a-overlay.dts

Not sure if the '-@' is still needed. Only one change needed for your example, see below...

> 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>;

Changed to:

interrupts = <23 2>;

Seems no constants supported (or missing include) and '2' was just some guess...

Regards,
Peter

> };
> 
> };
> };
> };
> -----------
> 
> Anyone could help me how to do this?
> 
> Best regards.
> 
> Oscar Gomez Fuente.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Buildroot] [dtc] Compiling a .dts overlay
  2016-05-06 12:17 [Buildroot] [dtc] Compiling a .dts overlay Oscar Gomez Fuente
  2016-05-06 21:08 ` Peter Seiderer
@ 2016-05-06 21:20 ` Nicholas Walton
  2016-05-09  6:37   ` Oscar Gomez Fuente
  1 sibling, 1 reply; 9+ messages in thread
From: Nicholas Walton @ 2016-05-06 21:20 UTC (permalink / raw)
  To: buildroot

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@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/20160506/2456c74d/attachment.html>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Buildroot] [dtc] Compiling a .dts overlay
  2016-05-06 21:20 ` Nicholas Walton
@ 2016-05-09  6:37   ` Oscar Gomez Fuente
  2016-05-09  9:57     ` Oscar Gomez Fuente
  2016-05-09 20:36     ` Peter Seiderer
  0 siblings, 2 replies; 9+ messages in thread
From: Oscar Gomez Fuente @ 2016-05-09  6:37 UTC (permalink / raw)
  To: buildroot

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@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@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/20160509/f64a8568/attachment.html>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Buildroot] [dtc] Compiling a .dts overlay
  2016-05-09  6:37   ` Oscar Gomez Fuente
@ 2016-05-09  9:57     ` Oscar Gomez Fuente
  2016-05-09 20:46       ` Peter Seiderer
  2016-05-09 20:36     ` Peter Seiderer
  1 sibling, 1 reply; 9+ messages in thread
From: Oscar Gomez Fuente @ 2016-05-09  9:57 UTC (permalink / raw)
  To: buildroot

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?


Best regards.

On 9 May 2016 at 08:37, Oscar Gomez Fuente <oscargomezf@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@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@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/20160509/a88a5d7a/attachment.html>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Buildroot] [dtc] Compiling a .dts overlay
  2016-05-09  6:37   ` Oscar Gomez Fuente
  2016-05-09  9:57     ` Oscar Gomez Fuente
@ 2016-05-09 20:36     ` Peter Seiderer
  1 sibling, 0 replies; 9+ messages in thread
From: Peter Seiderer @ 2016-05-09 20:36 UTC (permalink / raw)
  To: buildroot

Hello Oscar,

On Mon, 9 May 2016 08:37:36 +0200, Oscar Gomez Fuente <oscargomezf@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.
> 
	$ grep -R IRQ_TYPE_LEVEL_LOW linux-9118192d7357b0942885c2c8baf65d5501c12913/arch/arm/boot/dts/include/
	linux-9118192d7357b0942885c2c8baf65d5501c12913/arch/arm/boot/dts/include/dt-bindings/interrupt-controller/irq.h:#define IRQ_TYPE_LEVEL_LOW      8

So 'interrupts = <23 IRQ_TYPE_LEVEL_LOW>;' should translate to 'interrupts = <23 8>;'

> Thank you very much.

Thanks for feedback...

Regards,
Peter

> 
> Best regards.
> 
> Oscar Gomez Fuente
> 
> On 6 May 2016 at 23:20, Nicholas Walton <nicholas.walton@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@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
> >>
> >
> >

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Buildroot] [dtc] Compiling a .dts overlay
  2016-05-09  9:57     ` Oscar Gomez Fuente
@ 2016-05-09 20:46       ` Peter Seiderer
  2016-05-10  7:48         ` Oscar Gomez Fuente
  0 siblings, 1 reply; 9+ messages in thread
From: Peter Seiderer @ 2016-05-09 20:46 UTC (permalink / raw)
  To: buildroot

Hello Oscar,

On Mon, 9 May 2016 11:57:02 +0200, Oscar Gomez Fuente <oscargomezf@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@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@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@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
> >>>
> >>
> >>
> >

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Buildroot] [dtc] Compiling a .dts overlay
  2016-05-09 20:46       ` Peter Seiderer
@ 2016-05-10  7:48         ` Oscar Gomez Fuente
  2016-05-10 11:09           ` Oscar Gomez Fuente
  0 siblings, 1 reply; 9+ messages in thread
From: Oscar Gomez Fuente @ 2016-05-10  7:48 UTC (permalink / raw)
  To: buildroot

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@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@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@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.html>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Buildroot] [dtc] Compiling a .dts overlay
  2016-05-10  7:48         ` Oscar Gomez Fuente
@ 2016-05-10 11:09           ` Oscar Gomez Fuente
  0 siblings, 0 replies; 9+ messages in thread
From: Oscar Gomez Fuente @ 2016-05-10 11:09 UTC (permalink / raw)
  To: buildroot

Hi everyone,

I was reviewing the code of the patch:  http://www.spinics.net/lists/
arm-kernel/msg351168.html

And the problem is I have to configure in the overlay file:
tca6424a-overlay.dtb the reset gpio -> GPIO_ACTIVE_HIGH
instead of GPIO_ACTIVE_LOW

...
tca6424 at 22 {
compatible = "ti,tca6424";
reg = <0x22>;
pinctrl-names = "default";
pinctrl-0 = <&tca6424a_pins>;
interrupt-parent = <&gpio>;
interrupts = <4 2>; //IRQ_TYPE_EDGE_FALLING
reset-gpios = <&gpio 17 0>; //GPIO_ACTIVE_HIGH
};
};
};
};

Because when the gpio is configured as an output by default is set to low,
and then is set to high

+ gpiod_direction_output(reset, 0);
+ udelay(100);
+ gpiod_set_value(reset, 1);
+ udelay(100);

So I get in the reset line:
1111111111111____0000000(100usec)____111111111111111111111111

So my problem is solved.

Best regards.

Oscar Gomez Fuente.

On 10 May 2016 at 09:48, Oscar Gomez Fuente <oscargomezf@gmail.com> wrote:

> 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@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@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@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/546d303d/attachment.html>

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-05-10 11:09 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-06 12:17 [Buildroot] [dtc] Compiling a .dts overlay Oscar Gomez Fuente
2016-05-06 21:08 ` Peter Seiderer
2016-05-06 21:20 ` Nicholas Walton
2016-05-09  6:37   ` Oscar Gomez Fuente
2016-05-09  9:57     ` Oscar Gomez Fuente
2016-05-09 20:46       ` Peter Seiderer
2016-05-10  7:48         ` Oscar Gomez Fuente
2016-05-10 11:09           ` Oscar Gomez Fuente
2016-05-09 20:36     ` Peter Seiderer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox