Nanopi Neo I2C
lyd mc
alydiomc at yahoo.com
Sat Aug 11 15:26:32 UTC 2018
Hi Ian,
The iic bus seem to be working on linux image. I can detect the device at 0x18.
root at nanopi-neo:~/prog/I2C # i2c -f /dev/iic0 -s
Hardware may not support START/STOP scanning; trying less-reliable read method.
Scanning I2C devices on /dev/iic0: <none found>
some kdump output of above command: 871 i2c CALL ioctl(0x3,I2CRSTCARD,0xbfbfec64)
871 i2c RET ioctl 0
871 i2c CALL ioctl(0x3,I2CSTART,0xbfbfec64)
871 i2c RET ioctl -1 errno 2 No such file or directory
871 i2c CALL ioctl(0x3,I2CSTOP,0xbfbfec64)
871 i2c RET ioctl 0
.<snip> 871 i2c CALL ioctl(0x3,I2CRSTCARD,0xbfbfec64)
871 i2c RET ioctl 0
871 i2c CALL ioctl(0x3,I2CRDWR,0xbfbfec50)
871 i2c RET ioctl -1 errno 2 No such file or directory
871 i2c CALL ioctl(0x3,I2CRSTCARD,0xbfbfec64)
871 i2c RET ioctl 0
871 i2c CALL ioctl(0x3,I2CRDWR,0xbfbfec50)
871 i2c RET ioctl -1 errno 2 No such file or directory
Seems I2CRSTCARD and I2CSTOP are the only working ioctl on me.
I activated i2c0 using below dts code:
i2c at 1c2ac00 {
compatible = "allwinner,sun6i-a31-i2c";
reg = <0x1c2ac00 0x400>;
interrupts = <0x0 0x6 0x4>;
clocks = <0x1d 0x3b>;
resets = <0x1d 0x2e>;
pinctrl-names = "default";
pinctrl-0 = <0x20>;
status = "okay";
#address-cells = <0x1>;
#size-cells = <0x0>;
phandle = <0x41>;
Regards,Alyd
On Saturday, August 11, 2018, 11:04:54 PM GMT+8, Ian Lepore <ian at freebsd.org> wrote:
On Sat, 2018-08-11 at 11:49 +0000, lyd mc via freebsd-arm wrote:
> Hi List,
> Can you help me make I2C work in this board?
> I can detect the controller but cannot access it through iic ioctl.
>
> root at nanopi-neo:~/prog/I2C # dmesg |grep iic
> iichb0: <Allwinner Integrated I2C Bus Controller> mem 0x1c2ac00-
> 0x1c2afff irq 34 on simplebus0
> iicbus0: <OFW I2C bus> on iichb0
> iichb1: <Allwinner Integrated I2C Bus Controller> mem 0x1c2b000-
> 0x1c2b3ff irq 35 on simplebus0
> iicbus1: <OFW I2C bus> on iichb1
> iichb2: <Allwinner Integrated I2C Bus Controller> mem 0x1c2b400-
> 0x1c2b7ff irq 36 on simplebus0
> iicbus2: <OFW I2C bus> on iichb2
> iic0: <I2C generic I/O> on iicbus0
> iic1: <I2C generic I/O> on iicbus1
> iic2: <I2C generic I/O> on iicbus2
>
> kdump output:
>
> 1290 mcp NAMI "/dev/iic0"
> 1290 mcp RET openat 3
> 1290 mcp CALL ioctl(0x3,I2CRDWR,0xbfbfecd4)
> 1290 mcp RET ioctl -1 errno 2 No such file or directory
>
> This seems to work on my RPI.
>
In this case, I wonder if the "errno 2" is not ENOENT, but
rather IIC_ENOACK which has not been translated to a proper errno
before returning. IIC_ENOACK is basically a timeout and can happen if
the slave address is wrong, or if the pinmux is wrong so that the bus
is electrically inactive.
Is the bus working in general? Do any devices show up on a scan with
i2c -f /dev/iic0 -s
-- Ian
More information about the freebsd-arm
mailing list