I tied your suggested change with the following results. Not yet what I am thinking is correct.
U-Boot SPL 2017.09-rc2 (Aug 22 2017 - 00:26:16) DRAM: 512 MiB Trying to boot from MMC1 U-Boot 2017.09-rc2 (Aug 22 2017 - 00:26:16 -0600) Allwinner Technology CPU: Allwinner H3 (SUN8I 1680) Model: Xunlong Orange Pi One DRAM: 512 MiB MMC: SUNXI SD/MMC: 0 *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial Net: phy interface0 eth0: ethernet@1c30000 starting USB... USB0: USB EHCI 1.00 USB1: USB OHCI 1.0 scanning bus 0 for devices... 2 USB Device(s) found scanning usb for storage devices... 0 Storage Device(s) found Hit any key to stop autoboot: 0 switch to partitions #0, OK mmc0 is current device Scanning mmc 0:1... reading /sun8i-h3-orangepi-one.dtb 14504 bytes read in 25 ms (566.4 KiB/s) Found EFI removable media binary efi/boot/bootarm.efi reading efi/boot/bootarm.efi 67356 bytes read in 36 ms (1.8 MiB/s) ## Starting EFI application at 42000000 ... Scanning disks on usb... Scanning disks on mmc... MMC Device 1 not found MMC Device 2 not found MMC Device 3 not found Found 5 disks >> OpenBSD/armv7 BOOTARM 1.0 boot> booting sd0a:/bsd: 3905464+165912+498860 [281342+90+518560+243869]=0x561424 OpenBSD/armv7 booting ... arg0 0xc0861424 arg1 0x0 arg2 0x48000000 Allocating page tables freestart = 0x40862000, free_pages = 128926 (0x0001f79e) IRQ stack: p0x40890000 v0xc0890000 ABT stack: p0x40891000 v0xc0891000 UND stack: p0x40892000 v0xc0892000 SVC stack: p0x40893000 v0xc0893000 Creating L1 page table at 0x40864000 Mapping kernel Constructing L2 page tables undefined page pmap [ using 1044320 bytes of bsd ELF symbol table ] board type: 0 Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. Copyright (c) 1995-2017 OpenBSD. All rights reserved. https://www.OpenBSD.org OpenBSD 6.2-beta (GENERIC) #3: Mon Aug 28 10:18:41 PDT 2017 sysad...@openbsdop1.graf.lan:/usr/src/sys/arch/armv7/compile/GENERIC real mem = 536870912 (512MB) avail mem = 517378048 (493MB) mainbus0 at root: Xunlong Orange Pi One cpu0 at mainbus0: ARM Cortex-A7 r0p5 (ARMv7) cpu0: DC enabled IC enabled WB disabled EABT branch prediction enabled cpu0: 32KB(32b/l,2way) I-cache, 32KB(64b/l,4way) wr-back D-cache cortex0 at mainbus0 sxiccmu0 at mainbus0 psci0 at mainbus0 simplebus0 at mainbus0: "soc" sxiccmu1 at simplebus0 sxipio0 at simplebus0: 94 pins sxipio1 at simplebus0: 12 pins sximmc0 at simplebus0 sdmmc0 at sximmc0: 4-bit, sd high-speed, mmc high-speed, dma ehci0 at simplebus0 usb0 at ehci0: USB revision 2.0 uhub0 at usb0 configuration 1 interface 0 "Generic EHCI root hub" rev 2.00/1.00 addr 1 ehci1 at simplebus0 usb1 at ehci1: USB revision 2.0 uhub1 at usb1 configuration 1 interface 0 "Generic EHCI root hub" rev 2.00/1.00 addr 1 sxidog0 at simplebus0 com0 at simplebus0: ns16550, no working fifo com0: console ampintc0 at simplebus0 nirq 160, ncpu 4 sxirtc0 at simplebus0 A0 mux 7<invalid>- skipping A1 mux 7<invalid>- skipping A2 mux 7<invalid>- skipping A3 mux 7<invalid>- skipping A4 mux 2<uart0>- skipping A5 mux 2<uart0>- skipping A6 mux 7<invalid>- skipping A7 mux 7<invalid>- skipping A8 mux 7<invalid>- skipping A9 mux 7<invalid>- skipping A10 mux 7<invalid>- skipping A11 mux 7<invalid>- skipping A12 mux 7<invalid>- skipping A13 mux 7<invalid>- skipping A14 mux 7<invalid>- skipping A15 mux 7<invalid>- skipping A16 mux 7<invalid>- skipping A17 mux 7<invalid>- skipping A18 mux 7<invalid>- skipping A19 mux 7<invalid>- skipping A20 mux 7<invalid>- skipping A21 mux 7<invalid>- skipping C0 mux 7<invalid>- skipping C1 mux 7<invalid>- skipping C2 mux 7<invalid>- skipping C3 mux 7<invalid>- skipping C4 mux 7<invalid>- skipping C5 mux 7<invalid>- skipping C6 mux 7<invalid>- skipping C7 mux 7<invalid>- skipping C8 mux 7<invalid>- skipping C9 mux 7<invalid>- skipping C10 mux 7<invalid>- skipping C11 mux 7<invalid>- skipping C12 mux 7<invalid>- skipping C13 mux 7<invalid>- skipping C14 mux 7<invalid>- skipping C15 mux 7<invalid>- skipping C16 mux 7<invalid>- skipping D0 mux 7<invalid>- skipping D1 mux 7<invalid>- skipping D2 mux 7<invalid>- skipping D3 mux 7<invalid>- skipping D4 mux 7<invalid>- skipping D5 mux 7<invalid>- skipping D6 mux 7<invalid>- skipping D7 mux 7<invalid>- skipping D8 mux 7<invalid>- skipping D9 mux 7<invalid>- skipping D10 mux 7<invalid>- skipping D11 mux 7<invalid>- skipping D12 mux 7<invalid>- skipping D13 mux 7<invalid>- skipping D14 mux 7<invalid>- skipping D15 mux 7<invalid>- skipping D16 mux 7<invalid>- skipping D17 mux 7<invalid>- skipping E0 mux 7<invalid>- skipping E1 mux 7<invalid>- skipping E2 mux 7<invalid>- skipping E3 mux 7<invalid>- skipping E4 mux 7<invalid>- skipping E5 mux 7<invalid>- skipping E6 mux 7<invalid>- skipping E7 mux 7<invalid>- skipping E8 mux 7<invalid>- skipping E9 mux 7<invalid>- skipping E10 mux 7<invalid>- skipping E11 mux 7<invalid>- skipping E12 mux 7<invalid>- skipping E13 mux 7<invalid>- skipping E14 mux 7<invalid>- skipping E15 mux 7<invalid>- skipping F0 mux 2<mmc0>- skipping F1 mux 2<mmc0>- skipping F2 mux 2<mmc0>- skipping F3 mux 2<mmc0>- skipping F4 mux 2<mmc0>- skipping F5 mux 2<mmc0>- skipping F6 mux 0<gpio_in>- adding G0 mux 7<invalid>- skipping G1 mux 7<invalid>- skipping G2 mux 7<invalid>- skipping G3 mux 7<invalid>- skipping G4 mux 7<invalid>- skipping G5 mux 7<invalid>- skipping G6 mux 7<invalid>- skipping G7 mux 7<invalid>- skipping G8 mux 7<invalid>- skipping G9 mux 7<invalid>- skipping G10 mux 7<invalid>- skipping G11 mux 7<invalid>- skipping G12 mux 7<invalid>- skipping G13 mux 7<invalid>- skipping gpio0 at sxipio0: 32 pins gpio1 at sxipio0: 32 pins gpio2 at sxipio0: 32 pins gpio3 at sxipio0: 32 pins gpio4 at sxipio0: 32 pins gpio5 at sxipio0: 32 pins gpio6 at sxipio0: 32 pins A0 mux 7<invalid>- skipping A1 mux 7<invalid>- skipping A2 mux 7<invalid>- skipping A3 mux 7<invalid>- skipping A4 mux 7<invalid>- skipping A5 mux 7<invalid>- skipping A6 mux 7<invalid>- skipping A7 mux 7<invalid>- skipping A8 mux 7<invalid>- skipping A9 mux 7<invalid>- skipping A10 mux 7<invalid>- skipping A11 mux 7<invalid>- skipping gpio7 at sxipio1: 32 pins agtimer0 at mainbus0: tick rate 24000 KHz scsibus0 at sdmmc0: 2 targets, initiator 0 sd0 at scsibus0 targ 1 lun 0: <SD/MMC, SL16G, 0080> SCSI2 0/direct removable sd0: 15193MB, 512 bytes/sector, 31116288 sectors run0 at uhub1 port 1 configuration 1 interface 0 "Ralink 802.11 n WLAN" rev 2.00/1.01 addr 2 run0: MAC/BBP RT3070 (rev 0x0201), RF RT3020 (MIMO 1T1R), address 00:1f:cf:52:86:52 vscsi0 at root scsibus1 at vscsi0: 256 targets softraid0 at root scsibus2 at softraid0: 256 targets boot device: sd0 root on sd0a (e50fea1f8609b974.a) swap on sd0b dump on sd0b Automatic boot in progress: starting file system checks. /dev/sd0a (e50fea1f8609b974.a): file system is clean; not checking /dev/sd0l (e50fea1f8609b974.l): file system is clean; not checking /dev/sd0d (e50fea1f8609b974.d): file system is clean; not checking /dev/sd0f (e50fea1f8609b974.f): file system is clean; not checking /dev/sd0g (e50fea1f8609b974.g): file system is clean; not checking /dev/sd0h (e50fea1f8609b974.h): file system is clean; not checking /dev/sd0k (e50fea1f8609b974.k): file system is clean; not checking /dev/sd0j (e50fea1f8609b974.j): file system is clean; not checking /dev/sd0e (e50fea1f8609b974.e): file system is clean; not checking setting tty flags pf enabled starting network DHCPREQUEST on run0 to 255.255.255.255 DHCPACK from 192.168.1.253 (cc:5d:4e:ad:f4:0f) bound to 192.168.1.6 -- renewal in 43200 seconds. reordering libraries: done. starting early daemons: syslogd pflogd ntpd. starting RPC daemons:. savecore: no core dump checking quotas: done. clearing /tmp kern.securelevel: 0 -> 1 creating runtime link editor directory cache. preserving editor files. starting network daemons: sshd smtpd sndiod. starting local daemons: cron. Mon Aug 28 10:26:12 PDT 2017 OpenBSD/armv7 (openbsdop1.graf.lan) (console) login: -----Original Message----- From: owner-...@openbsd.org [mailto:owner-...@openbsd.org] On Behalf Of Artturi Alm Sent: Monday, August 28, 2017 7:09 AM To: Mark Kettenis <mark.kette...@xs4all.nl> Cc: arm@openbsd.org Subject: Re: looking for help on gpio setup on orange pi one On Mon, Aug 28, 2017 at 09:32:04AM +0300, Artturi Alm wrote: > On Sat, Aug 26, 2017 at 09:29:31PM +0200, Mark Kettenis wrote: > > > From: "Stephen Graf" <s_g...@telus.net> > > > Date: Sat, 26 Aug 2017 11:58:58 -0700 > > > > > > Thank you again for your suggestions. I tried to follow your > > > example but it did not work out as expected. > > > For some reason the gpioctl set command is not working at secure > > > level 0 and without that it is impossible to do anything with the device later. > > > > You should run the diff that Artturi send in an early mail. That > > produces output like: > > > > i'm almost overtired atm., but after comparing datasheets i decided to > take a quick look at sxipio again, and stumbled upon these shifts. > > sxipio_config_pin: > 337 mux = (config & GPIO_CONFIG_OUTPUT) ? 1 : 0; > 338 off = (pin & 0x7) << 2; > 339 SXICMS4(sc, SXIPIO_CFG(port, pin), 0x7 << off, mux << off); > > sxipio_attach_gpio: > 460 /* Get pin configuration. */ > 461 reg = SXIREAD4(sc, SXIPIO_CFG(port, pin)); > 462 cfg = (reg >> (pin & 0x7)) & 0x7; > > 1:1? > -Artturi > So, i was thinking something like this (untested): diff --git a/sys/dev/fdt/sxipio.c b/sys/dev/fdt/sxipio.c index 643226ecd19..9de710ffd5c 100644 --- a/sys/dev/fdt/sxipio.c +++ b/sys/dev/fdt/sxipio.c @@ -446,7 +446,7 @@ sxipio_attach_gpio(struct device *parent) uint32_t reg; int port, pin; int cfg, state; - int i; + int i, off; for (i = 0; i < sc->sc_npins; i++) { /* Skip pins that have no gpio function. */ @@ -459,7 +459,8 @@ sxipio_attach_gpio(struct device *parent) /* Get pin configuration. */ reg = SXIREAD4(sc, SXIPIO_CFG(port, pin)); - cfg = (reg >> (pin & 0x7)) & 0x7; + off = (pin & 0x7) << 2; + cfg = (reg >> off) & 0x7; /* Skip pins that have been assigned other functions. */ if (cfg != SXIPIO_GPIO_IN && cfg != SXIPIO_GPIO_OUT) just figured how the output below does ie. miss some supposed to be i2c-pins. -Artturi > > > > A0 mux 5<gmac>- skipping > > > A1 mux 2<emac>- skipping > > > A2 mux 5<gmac>- skipping > > > A3 mux 2<emac>- skipping > > > A4 mux 5<gmac>- skipping > > > A5 mux 2<emac>- skipping > > > A6 mux 5<gmac>- skipping > > > A7 mux 2<emac>- skipping > > > A8 mux 5<gmac>- skipping > > > A9 mux 2<emac>- skipping > > > A10 mux 5<gmac>- skipping > > > A11 mux 2<emac>- skipping > > > A12 mux 5<gmac>- skipping > > > A13 mux 2<emac>- skipping > > > A14 mux 5<gmac>- skipping > > > A15 mux 2<emac>- skipping > > > A16 mux 5<gmac>- skipping > > > A17 mux 2<emac>- skipping > > > B0 mux 2<i2c0>- skipping > > > B1 mux 1<gpio_out>- adding > > > B2 mux 0<gpio_in>- adding > > > B3 mux 4<spdif>- skipping > > > B4 mux 2<ir0>- skipping > > > B5 mux 1<gpio_out>- adding > > > B6 mux 0<gpio_in>- adding > > > B7 mux 0<gpio_in>- adding > > > B8 mux 1<gpio_out>- adding > > > B9 mux 0<gpio_in>- adding > > > B10 mux 0<gpio_in>- adding > > > B11 mux 0<gpio_in>- adding > > > B12 mux 0<gpio_in>- adding > > > B13 mux 0<gpio_in>- adding > > > B14 mux 0<gpio_in>- adding > > > B15 mux 0<gpio_in>- adding > > > B16 mux 0<gpio_in>- adding > > > B17 mux 0<gpio_in>- adding > > > B18 mux 0<gpio_in>- adding > > > B19 mux 0<gpio_in>- adding > > > B20 mux 0<gpio_in>- adding > > > B21 mux 0<gpio_in>- adding > > > B22 mux 0<gpio_in>- adding > > > B23 mux 4<invalid>- skipping > > > C0 mux 0<gpio_in>- adding > > > C1 mux 0<gpio_in>- adding > > > C2 mux 0<gpio_in>- adding > > > C3 mux 0<gpio_in>- adding > > > C4 mux 0<gpio_in>- adding > > > C5 mux 0<gpio_in>- adding > > > C6 mux 0<gpio_in>- adding > > > C7 mux 0<gpio_in>- adding > > > C8 mux 0<gpio_in>- adding > > > C9 mux 0<gpio_in>- adding > > > C10 mux 0<gpio_in>- adding > > > C11 mux 0<gpio_in>- adding > > > C12 mux 0<gpio_in>- adding > > > C13 mux 0<gpio_in>- adding > > > C14 mux 0<gpio_in>- adding > > > C15 mux 0<gpio_in>- adding > > > C16 mux 0<gpio_in>- adding > > > C17 mux 0<gpio_in>- adding > > > C18 mux 0<gpio_in>- adding > > > C19 mux 0<gpio_in>- adding > > > C20 mux 0<gpio_in>- adding > > > C21 mux 0<gpio_in>- adding > > > C22 mux 0<gpio_in>- adding > > > C23 mux 0<gpio_in>- adding > > > C24 mux 0<gpio_in>- adding > > > D0 mux 0<gpio_in>- adding > > > D1 mux 0<gpio_in>- adding > > > D2 mux 0<gpio_in>- adding > > > D3 mux 0<gpio_in>- adding > > > D4 mux 0<gpio_in>- adding > > > D5 mux 0<gpio_in>- adding > > > D6 mux 0<gpio_in>- adding > > > D7 mux 0<gpio_in>- adding > > > D8 mux 0<gpio_in>- adding > > > D9 mux 0<gpio_in>- adding > > > D10 mux 0<gpio_in>- adding > > > D11 mux 0<gpio_in>- adding > > > D12 mux 0<gpio_in>- adding > > > D13 mux 0<gpio_in>- adding > > > D14 mux 0<gpio_in>- adding > > > D15 mux 0<gpio_in>- adding > > > D16 mux 0<gpio_in>- adding > > > D17 mux 0<gpio_in>- adding > > > D18 mux 0<gpio_in>- adding > > > D19 mux 0<gpio_in>- adding > > > D20 mux 0<gpio_in>- adding > > > D21 mux 0<gpio_in>- adding > > > D22 mux 0<gpio_in>- adding > > > D23 mux 0<gpio_in>- adding > > > D24 mux 0<gpio_in>- adding > > > D25 mux 0<gpio_in>- adding > > > D26 mux 0<gpio_in>- adding > > > D27 mux 0<gpio_in>- adding > > > E0 mux 0<gpio_in>- adding > > > E1 mux 0<gpio_in>- adding > > > E2 mux 0<gpio_in>- adding > > > E3 mux 0<gpio_in>- adding > > > E4 mux 0<gpio_in>- adding > > > E5 mux 0<gpio_in>- adding > > > E6 mux 0<gpio_in>- adding > > > E7 mux 0<gpio_in>- adding > > > E8 mux 0<gpio_in>- adding > > > E9 mux 0<gpio_in>- adding > > > E10 mux 0<gpio_in>- adding > > > E11 mux 0<gpio_in>- adding > > > F0 mux 2<mmc0>- skipping > > > F1 mux 1<gpio_out>- adding > > > F2 mux 0<gpio_in>- adding > > > F3 mux 4<jtag>- skipping > > > F4 mux 2<mmc0>- skipping > > > F5 mux 1<gpio_out>- adding > > > G0 mux 0<gpio_in>- adding > > > G1 mux 0<gpio_in>- adding > > > G2 mux 0<gpio_in>- adding > > > G3 mux 0<gpio_in>- adding > > > G4 mux 0<gpio_in>- adding > > > G5 mux 0<gpio_in>- adding > > > G6 mux 0<gpio_in>- adding > > > G7 mux 0<gpio_in>- adding > > > G8 mux 0<gpio_in>- adding > > > G9 mux 0<gpio_in>- adding > > > G10 mux 0<gpio_in>- adding > > > G11 mux 0<gpio_in>- adding > > > H0 mux 0<gpio_in>- adding > > > H1 mux 0<gpio_in>- adding > > > H2 mux 0<gpio_in>- adding > > > H3 mux 0<gpio_in>- adding > > > H4 mux 0<gpio_in>- adding > > > H5 mux 0<gpio_in>- adding > > > H6 mux 0<gpio_in>- adding > > > H7 mux 0<gpio_in>- adding > > > H8 mux 0<gpio_in>- adding > > > H9 mux 0<gpio_in>- adding > > > H10 mux 0<gpio_in>- adding > > > H11 mux 0<gpio_in>- adding > > > H12 mux 0<gpio_in>- adding > > > H13 mux 0<gpio_in>- adding > > > H14 mux 0<gpio_in>- adding > > > H15 mux 0<gpio_in>- adding > > > H16 mux 0<gpio_in>- adding > > > H17 mux 0<gpio_in>- adding > > > H18 mux 0<gpio_in>- adding > > > H19 mux 0<gpio_in>- adding > > > H20 mux 0<gpio_in>- adding > > > H21 mux 0<gpio_in>- adding > > > H22 mux 0<gpio_in>- adding > > > H23 mux 0<gpio_in>- adding > > > H24 mux 0<gpio_in>- adding > > > H25 mux 0<gpio_in>- adding > > > H26 mux 0<gpio_in>- adding > > > H27 mux 0<gpio_in>- adding > > > I0 mux 0<gpio_in>- adding > > > I1 mux 0<gpio_in>- adding > > > I2 mux 0<gpio_in>- adding > > > I3 mux 0<gpio_in>- adding > > > I4 mux 0<gpio_in>- adding > > > I5 mux 0<gpio_in>- adding > > > I6 mux 0<gpio_in>- adding > > > I7 mux 0<gpio_in>- adding > > > I8 mux 0<gpio_in>- adding > > > I9 mux 0<gpio_in>- adding > > > I10 mux 0<gpio_in>- adding > > > I11 mux 0<gpio_in>- adding > > > I12 mux 0<gpio_in>- adding > > > I13 mux 0<gpio_in>- adding > > > I14 mux 0<gpio_in>- adding > > > I15 mux 0<gpio_in>- adding > > > I16 mux 0<gpio_in>- adding > > > I17 mux 0<gpio_in>- adding > > > I18 mux 0<gpio_in>- adding > > > I19 mux 0<gpio_in>- adding > > > I20 mux 0<gpio_in>- adding > > > I21 mux 0<gpio_in>- adding > > > > which allows us to see how the pins are configured and whether > > they're made available.