From owner-freebsd-arm@freebsd.org Mon Jan 13 15:23:15 2020 Return-Path: Delivered-To: freebsd-arm@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 69CF9227AF6 for ; Mon, 13 Jan 2020 15:23:15 +0000 (UTC) (envelope-from gdotten@gmail.com) Received: from mail-qt1-x831.google.com (mail-qt1-x831.google.com [IPv6:2607:f8b0:4864:20::831]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 47xHR630bwz4f4k for ; Mon, 13 Jan 2020 15:23:14 +0000 (UTC) (envelope-from gdotten@gmail.com) Received: by mail-qt1-x831.google.com with SMTP id v25so9394567qto.7 for ; Mon, 13 Jan 2020 07:23:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=fnvUb46QR+g+rnslw/0jE4AVNb0lQm3VgH96HtHJrww=; b=Jak7YdqElW7CEHwa3s2h9OPjBObHlctX+PAiDab7wqRlIKl8iqkLjAkF1lwDuVUYcs hT4XkeuYeX+HrilQXKyB8+LdXs0wJBvlFhbdqSjxEakx7kVi0g+w4Nl3Nv7STiaGzVVv acJVFBfgL1qRh9Mpfv4aZsxsApXOt32E9/vl9FnTrjj+11fAiNJcyjCVLn/sK1xwJx6O MxPcTtrfN4Zd8IQmH4+4r3ZdPMcSxUCSPXhxwM6QyjDq61vTAsUxRzkgU1MeLP9JkDkO OTDb8Kez9GbQDH/tinTF9w00GvutgxMHJWyudvpC+TY6xpt0dl1KUGzeJwv+qRPADo/9 QCFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=fnvUb46QR+g+rnslw/0jE4AVNb0lQm3VgH96HtHJrww=; b=AASGRChdiMJ6BQWX+4gDOQ5CxlQDEfulFhtIa4zcAgtBFGDLb7DxGSuNeCmjN1enZp 5+ojbdOw8hfUWTbeNFqb52FOJ6TTZcYu+/DYyKQYCl17gi7sRRHywzOHfp01srjPIywN e/ZR7vPCY9V8LbYjxaH0L8TpIraXRUgf6CtiuNYkEuaxFBqLIZuXYUpbNqwTFlQOnprp r+0AA4fNuAxcKe3hdKuw92ckZ01ArVFQYEDctc7Srrl+JYHEnFGMzlVG8QGOJXzmOxNW 5jwx7UgYl75KjwvQxWMpLoal8SEQUm2H0CVUY9wPjPS5XLzBQ5pJJpg1hsq5KZSq/36f HzAg== X-Gm-Message-State: APjAAAVB/p3AgvLCu99YpQW45du+HWDSP0hqwWDgPo8CTmB97dJxj+ih /J8ieUPpXsnKj8/I6kRd4xsU6dKztlaw6J33jlfwvg== X-Google-Smtp-Source: APXvYqwqm24zdNAIuiJm7hDAGcc2oiAfK0kBTJ2zhO0VWGufJLRvteQssPe6vBkpkAMQ39dJ80c6QVD59kYKd9a4Bac= X-Received: by 2002:aed:2e03:: with SMTP id j3mr10727238qtd.365.1578928993035; Mon, 13 Jan 2020 07:23:13 -0800 (PST) MIME-Version: 1.0 References: <20191228161726.9efb08df5b69eaa0a0ff478f@bidouilliste.com> <20191230123322.fa579638df66e3eac3e16c91@bidouilliste.com> <20200111193627.6616bc804ef15bbfa341dea0@bidouilliste.com> In-Reply-To: <20200111193627.6616bc804ef15bbfa341dea0@bidouilliste.com> From: Gary Otten Date: Mon, 13 Jan 2020 10:23:04 -0500 Message-ID: Subject: Re: SPI support for A64-OLinuXino board Allwinner A64 processor To: Emmanuel Vadot Cc: freebsd-arm@freebsd.org X-Rspamd-Queue-Id: 47xHR630bwz4f4k X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20161025 header.b=Jak7YdqE; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of gdotten@gmail.com designates 2607:f8b0:4864:20::831 as permitted sender) smtp.mailfrom=gdotten@gmail.com X-Spamd-Result: default: False [-3.00 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20161025]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4000::/36]; FREEMAIL_FROM(0.00)[gmail.com]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-arm@freebsd.org]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; IP_SCORE_FREEMAIL(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; RCPT_COUNT_TWO(0.00)[2]; RCVD_IN_DNSWL_NONE(0.00)[1.3.8.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.4.6.8.4.0.b.8.f.7.0.6.2.list.dnswl.org : 127.0.5.0]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; IP_SCORE(0.00)[ip: (-9.23), ipnet: 2607:f8b0::/32(-2.10), asn: 15169(-1.84), country: US(-0.05)]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com.dwl.dnswl.org : 127.0.5.0] Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2020 15:23:15 -0000 Thanks for checking. I will do further testing and report my results. On Sat, Jan 11, 2020 at 1:36 PM Emmanuel Vadot wrote: > On Mon, 30 Dec 2019 16:13:41 -0500 > Gary Otten wrote: > > > On Mon, Dec 30, 2019 at 6:33 AM Emmanuel Vadot > > wrote: > > > > > On Sun, 29 Dec 2019 23:40:19 -0500 > > > Gary Otten 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 ? > > > > > > > Yes that is correct, toggling them with gpioctl and seeing the voltage > > swing after setting that pin to OUT with gpioctl. > > > > > > > > > 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. > > > > > > > OK, I was mentioning this on the chance that the gpioctl doesn't work > with > > BANK E because Bank E is set to work with the csi function on the > > A64-OLinuXino board. > > > > > > > > > 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 unfortunately 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. > > > > > > > Yes with SPI enabled in the overlay after a boot, I am still able to set > > the pins to output with gpioctl and see the voltage swing. I must set > the > > pins to output to see the voltage swing. Reloading gpio_aw.ko or running > > spi after that doesn't appear to change the fact that the pins are set > to > > output as I am still able to run gpioctl and see the toggle. > > > > > > 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 ? > > > > > > > On my board the flash isn't populated. I wasn't aware of the uext port > so I > > just soldered wires on to the pads where the flash would have been, and a > > ground. These wires go to my logic analyzer setup to edge detect. For > > testing I used a loopback (short between) MOSI (PC0) /MISO(PC1) > > > > > > > I have this board but I will not have time to do a proper setup to > > > test something for some time. > > > > > > > Ok that would be great. I will also order a pine board today to have > > another board to test on. Any help or advice would be appreciated. I > could > > be making a simple mistake or have the most basic of settings wrong, it > > could be something simple I am overlooking. Is there anyway to read > back > > the configuration of a pin from user land? I wonder if anyone else can > use > > GPIO pins on bank E on the Olimex A64 board, or has a working SPI on this > > board. > > > > Thanks > > I've just tested on my a64-olinuxino using the UEXT port and the > overlay I've just commited (which is the one you wrote). > I've hooked up an spiflash on a breadboard and I can use it properly. > > > > > > > > > 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 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: mem 0x1c68000-0x1c68fff irq 29 on > simplebus0 > > > > > > spibus0: on aw_spi0 > > > > > > spibus0: 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 > > > > > > > > > > > > > > -- > > > Emmanuel Vadot > > > > > > -- > Emmanuel Vadot >