Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Dec 2019 10:29:16 -0700
From:      Ian Lepore <ian@freebsd.org>
To:        Nick Kostirya <nikolay.kostirya@i11.co>
Cc:        Milan Obuch <milan@obuch.sk>, freebsd-arm@freebsd.org
Subject:   Re: gpioiic FDT overlays for sun8i-h3
Message-ID:  <78c7d14bb681f8bca11525bf61cf871c6e89c235.camel@freebsd.org>
In-Reply-To: <20191219095935.6fed7431@i11.co>
References:  <20191128152901.39dbeb4d@thinkpad> <20191128062149.577be86eb7dc15ae5805f31a@bidouilliste.com> <20191129153754.28fb5763@thinkpad> <20191129144316.739c8664@zeta.dino.sk> <20191129155431.05d4e14f@thinkpad> <20191129150944.67a2b723a6724c46f7559f96@bidouilliste.com> <0ce78262af1dd3b404b9a85a780933d7e11f008e.camel@freebsd.org> <20191129201244.0bc85b09@thinkpad> <ee0593a31a64ba264d579f7a4548f6b1b6e948fe.camel@freebsd.org> <20191219095935.6fed7431@i11.co>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 2019-12-19 at 09:59 +0200, Nick Kostirya wrote:
> On Mon, 02 Dec 2019 17:04:58 -0700
> Ian Lepore <ian@freebsd.org> wrote:
> 
> > >   
> > 
> > Well, it did turn complicated, but I got it all worked out.
> > 
> > Are you building an image from source code, or using a downloaded
> > snapshot or release image, or what?
> > 
> > If you are building from source, apply the attached patch to your
> > source tree and rebuild the kernel.
> > 
> > If you are using a prebuilt image, then I'll get these changes
> > merged
> > to the stable-12 tree this week, and the next stable-12 snapshot
> > images
> > will include what you need.  I think those images get built every
> > Thursday.
> > 
> > -- Ian
> 
> 
> It doesn't work.
> 
> I missed something. But what it is?
> 
> 
> I use
> FreeBSD-12.1-STABLE-arm-armv7-GENERICSD-20191212-r355610.img
> 
> 
> > grep gpioiic /boot/loader.conf
> 
> gpioiic_load="YES"
> fdt_overlays="sun8i-h3-sid,sun8i-h3-ths,sun8i-h3-opp,sun8i-h3-
> i2c0,sun8i-h3-gpioiic"
> 
> 
> I did make /boot/dtb/overlays/sun8i-h3-gpioiic.dtbo from
> 
> > cat sun8i-h3-gpioiic.dtso
> 
> /dts-v1/;
> /plugin/;
> 
> / {
>         compatible = "allwinner,sun8i-h3";
> };
> 
> &{/soc/pinctrl@1c20800} {
>         gpioiic@0 {
>                 compatible = "allwinner,sun8i-h3,gpioiic";
>                 scl = <0>; /*    GPIO pin 00 (PA0) */
>                 sda = <2>; /*    GPIO pin 02 (PA2) */
>         };
> };
> 
> I see gpioiic in ofwdump:
> > ofwdump -a | grep -B 1 gpio
> 
>     Node 0x1b7c: pinctrl@1c20800
>       Node 0x1c74: gpioiic@0
> 
> 
> But I do not see in /dev and devinfo
> 
> :-(
> 
> Nick.

The gpioiic node needs to be defined at the root of the devicetree, not
under the pinctrl node.  Assuming that all pins are configured as gpios
by default (they are on most SOCs) you probably don't need a pinctrl
node for them at all.  If you do, someone who knows allwinner stuff
better than me would have to provide an example of that part.

To add the gpioiic driver node using pins 0 and 2 like your example, I
think it should be just this:

   /dts-v1/;
   /plugin/;

   / {
       compatible = "allwinner,sun8i-h3";
   };

   &{/} {
       gpioiic@0 {
           compatible = "i2c-gpio";
           scl-gpios =
   <&pio 0 0 GPIO_ACTIVE_HIGH>;
           sdl-gpios = <&pio 0 2
   GPIO_ACTIVE_HIGH>;
   };

That should be enough to attach the i2c bus and the iic driver which
will give you a /dev/iic# node for userland access to the bus.  If you
want to add slave devices that have kernel drivers, they get added as
child nodes within gpioiic@0, like this:

   &{/} {
       gpioiic@0 {
           compatible = "i2c-gpio";
           scl-gpios = <&pio 0 0 GPIO_ACTIVE_HIGH>;
           sdl-gpios = <&pio 0 2 GPIO_ACTIVE_HIGH>;

           eeprom@50 {
               compatible = "atmel,24c512";
               reg = <0x50>;
           };
           rtc@51 {
               compatible="nxp,pcf2127";
               reg = <0x51>;
           };
       };
   };

-- Ian




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?78c7d14bb681f8bca11525bf61cf871c6e89c235.camel>