Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 30 Dec 2019 12:33:22 +0100
From:      Emmanuel Vadot <manu@bidouilliste.com>
To:        Gary Otten <gdotten@gmail.com>
Cc:        freebsd-arm@freebsd.org, ian@freebsd.org
Subject:   Re: SPI support for A64-OLinuXino board Allwinner A64 processor
Message-ID:  <20191230123322.fa579638df66e3eac3e16c91@bidouilliste.com>
In-Reply-To: <CABZQu%2Bg_tRZvj=euDkMTbs4zubB5k1GN%2BT6iidoaxXxBYViwtQ@mail.gmail.com>
References:  <CABZQu%2BivgronnY=ro5CtQoyYR6B=gGFsaryKm%2BgEwubJWx3KzA@mail.gmail.com> <20191228161726.9efb08df5b69eaa0a0ff478f@bidouilliste.com> <CABZQu%2Bg_tRZvj=euDkMTbs4zubB5k1GN%2BT6iidoaxXxBYViwtQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 29 Dec 2019 23:40:19 -0500
Gary Otten <gdotten@gmail.com> wrote:

> Thanks,  Ian Lepore mentioned this too, spigen wasn't loaded.  I have now
> loaded spigen.   The driver appears to be working, but I am not seeing any
> output.
> 
> I can toggle pins PC0,PC1,PC2, PC3 with  gpioctl,  but I don't get anything
> with spi.

 You mean settings them as gpio, toggling them and check the pins on
the uext port ?

> I also had another odd behavior with BANK E. not having any output, using
> gpoictl, I was not able to get any pin on Bank E to toggle. I did turn on
> the voltage regulator as suggested.

 The SPI pins for SPI0 are on BANKC which is always powered on.

> I wonder if FreeBSD is properly setting the configuration registers for
> each port/pin of the the A64.

 I'll not say that the code is bug free but this really should be ok,
especially for such basic pin setting like spi0 where you only have one
pin group.

> Basically letting the A64 know to use alt
> function or general gpio in/out in the proper way for each pin, maybe some
> of the (default?) settings for the more popular pine boards work, but
> don't  work correctly for the Olimex A64 board, or maybe there is some
> setting in the overlays that I am overlooking that need to be set to use an
> alt function or gpio in/out to get the pins to function properly.   If in
> the overlay I have spi0 enabled, should I still be able to toggle the pins
> with gpioctl?  Thanks for the help.

 Yes unfortunatelly the gpio/pinmux code is shared on allwinner and
doesn't have all the needed "protection" so you can toggle a pin even
if it's not in gpio mode. I don't remember if the value is still output
on the physical pin or not.
 Are you using the -sXM version on the board (where you have an spi
flash present on the board) or did you wire something via the uext
port ? If the later what's wired and how ?
 I have this board but I will not have time to do a proper setup to
test something for some time.

> My diagnostics
> ******************************************
> root@:/dev # spi -i
> Device name:   /dev/spigen0.0
> Device mode:   2
> Device speed:  500000
> root@:/dev # spi -d r -m 0 -C '9F 00' -v -c 2
> Binary output of 2 bytes
> 2 command bytes and 2 data bytes read from SPI device
>         |  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F |
>  |
>       0 | 00 00 00 00                                     | ....
>   |
> 
> I
> 
> 
> 
> On Sat, Dec 28, 2019 at 10:44 AM Emmanuel Vadot <manu@bidouilliste.com>
> wrote:
> 
> > On Wed, 25 Dec 2019 19:12:28 -0500
> > Gary Otten <gdotten@gmail.com> wrote:
> >
> > > Thanks,  I have created the following overlay and tried a variety of
> > other
> > > things but I haven't been able to get spigen0.0 to appear in  /dev.
> > >
> > >
> > >
> > > /* $FreeBSD$ */
> > > /dts-v1/;
> > > /plugin/;
> > >
> > > / {
> > >         compatible = "allwinner,sun50i-a64";
> > > };
> > >
> > > &{/soc/spi@1c68000} {
> > >
> > >                 status = "okay";
> > >
> > >                 spigen0: spigen0 {
> > >                 compatible = "freebsd,spigen";
> > >                 reg = <0>;
> > >                 spi-max-frequency = <500000>;
> > >                 status = "okay";
> > >         };
> > >
> > > };
> > >
> > >
> > >
> > > Some diagnostics
> > >
> > > -------------------------------------------------------
> > > On Boot
> > >
> > > Loading DTB overlays: 'sun50i-a64-spi-spidev'
> > > /boot/dtb/overlays/sun50i-a64-spi-spidev.dtbo size=0x15c
> > > applying DTB overlay '/boot/dtb/overlays/sun50i-a64-spi-spidev.dtbo'
> > > ..
> > > ....
> > > .....
> > >
> > > Autoloading module: aw_spi.ko
> > > aw_spi0: <Allwinner SPI> mem 0x1c68000-0x1c68fff irq 29 on simplebus0
> > > spibus0: <OFW SPI bus> on aw_spi0
> > > spibus0: <unknown card> at cs 0 mode 0
> > >
> > >
> > > -------------------------------------------------------
> > > root@:/boot/dtb/overlays # kldstat
> > > Id Refs Address                Size Name
> > >  1    5 0xffff000000000000  144dda8 kernel
> > >  2    1 0xffff000054c00000    41000 aw_spi.ko
> > >
> > >  -------------------------------------------------------
> > > root@:/boot/dtb/overlays # devinfo
> > > ..
> > > ...
> > >   aw_spi0
> > >         spibus0
> > >
> > > -------------------------------------------------------
> > > root@:/boot/dtb/overlays # devinfo
> > >
> > > ....
> > > ......
> > >  Node 0x2f60: spi@1c68000
> > >       Node 0x309c: spigen0
> > > _______________________________________________
> > > freebsd-arm@freebsd.org mailing list
> > > https://lists.freebsd.org/mailman/listinfo/freebsd-arm
> > > To unsubscribe, send any mail to "freebsd-arm-unsubscribe@freebsd.org"
> >
> >  Hi Gary,
> >
> >  You overlay worked for me on the pine64-lts. Here is what I did :
> >  - Use https://github.com/evadot/freebsd/commits/aw_spigen
> >  - aw_spi is autoloaded via devmatch
> >  - kldload spigen (it's not in GENERIC for arm64, maybe we should add it
> > or do some devmatch magic)
> >  - root@pine64-lts:~ # spi -i
> > Device name:   /dev/spigen0.0
> > Device mode:   0
> > Device speed:  500000
> > root@pine64-lts:~ # spi -d r -m 0 -C '9F 00' -v -c 2
> > Binary output of 2 bytes
> > 2 command bytes and 2 data bytes read from SPI device
> >         |  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
> > |                  | 0 | 00 ef 40 18                                     |
> > ..@.             |
> >
> >  Maybe you just forgot to load spigen ?
> >
> > --
> > Emmanuel Vadot <manu@bidouilliste.com> <manu@freebsd.org>
> >


-- 
Emmanuel Vadot <manu@bidouilliste.com>



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