Quick update in case it help somebody else.
Big thank you to selsinork for some valuable tips and pointers.
As it turns out, you don't need a DTS entry to add an I2C child
node/device. I removed my DTS child node entries in case they were
breaking things, booted the board and then manually added the device
and kernel driver.
Although my driver still doesn't work, I am able to see the debug
messages which is great.
Shell session: First I confirm I can see and query the I2C device
using i2ctools, then instantiate the device and then load the
module...which fails, but at least explains where it's failing.
# lsmod
Module Size Used by Not tainted
#
#
#
# i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- 34 -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- 69 -- -- -- -- -- --
70: -- -- -- -- -- -- -- 77
#
#
#
# i2cget -y 0 0x69 0x75
0x71
#
#
#
# echo mpu9250 0x69 > /sys/bus/i2c/devices/i2c-0/new_device
[ 55.362493] i2c i2c-0: new_device: Instantiated device mpu9250 at 0x69
#
# modprobe inv-mpu-iio
[ 77.347200] inv-mpu-iio 0-0069: Unable to read axis_map_x
[ 77.352699] i2c i2c-0: inv_mpu_probe failed -22
[ 77.357254] inv-mpu-iio: probe of 0-0069 failed with error -5
#
Bruce
On Sat, Sep 20, 2014 at 2:54 PM, bruce bushby <[email protected]> wrote:
> Hi
>
> As a hobby I've been playing with an Olimex A20-SOM and trying to
> attach a Drotek Invensense MPU9250 break out board.
>
> So far my uboot is working and I can boot my build via dhcp + nfs. I
> added the "i2ctools" to the build and I'm able to run "i2cdetect -y 0"
> and I can see my devices on i2c0
>
> #
> # i2cdetect -y 0
> 0 1 2 3 4 5 6 7 8 9 a b c d e f
> 00: -- -- -- -- -- -- -- -- -- -- -- -- --
> 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 30: -- -- -- -- 34 -- -- -- -- -- -- -- -- -- -- --
> 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> 60: -- -- -- -- -- -- -- -- -- 69 -- -- -- -- -- --
> 70: -- -- -- -- -- -- -- 77
> #
>
>
> The drotek breakout board:
> http://www.drotek.fr/shop/en/home/466-imu-10dof-mpu9250-ms5611.html
>
> includes ms5611 altimeter which is why you see address "0x34"
>
>
> A very kind Daniel Baluta provided a patched version of the "inv_mpu"
> drivers enabling them to compile for the 3.16+ kernels. (rather then
> 3.4)
>
> Now I have a module (inv_mpu_iio) that loads....but it is not
> associated with my i2c0 "0x69" device, nor has it created any /sys
> device files:
>
> #
> # lsmod
> Module Size Used by Not tainted
> inv_mpu_iio 62968 0
> #
> # dmesg | grep inv
> [ 1.187348] i2c i2c-0: client [inv_mpu_iio] registered with bus id 0-0069
> [ 22.452739] i2c-core: driver [inv_mpu_iio] registered
> #
>
>
> First question: Does my DTS child node look ok?
>
>
> i2c0: i2c@01c2ac00 {
> pinctrl-names = "default";
> pinctrl-0 = <&i2c0_pins_a>;
> status = "okay";
>
> mpu@69 {
> compatible = "inv_mpu_iio";
> reg = <0x69>;
> };
> };
>
>
> Something has worked because I can cat this file:
> # cat /sys/devices/soc@01c00000/1c2ac00.i2c/i2c-0/0-0069/name
> inv_mpu_iio
> #
>
> This is the driver I am using:
> https://github.com/BruceBushby/inv_mpu
>
>
> "inv_mpu_core.c" ...contains the probe function:
>
> static int inv_mpu_probe(struct i2c_client *client,
> const struct i2c_device_id *id)
> {
> struct inv_mpu_state *st;
> struct iio_dev *indio_dev;
> int result, err;
> pr_debug("Invensense MPU probe started.\n");
>
>
>
>
> Sadly I don't see any "module debug" messages.....even though I've
> enabled various DEBUG in my kernel config:
>
>
> CONFIG_I2C_DEBUG_CORE=y
> CONFIG_I2C_DEBUG_ALGO=y
> CONFIG_I2C_DEBUG_BUS=y
> CONFIG_DYNAMIC_DEBUG=y
> CONFIG_DEBUG_INFO=y
> CONFIG_DEBUG_KERNEL=y
>
>
>
>
> Any ideas?
>
>
>
> Thanks
> Bruce
--
You received this message because you are subscribed to the Google Groups
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.