Make sure other devices didn't occupy the I2C bus exclusively. This is what
happened on
my Cubieboard2 when I trying to add a mma8451. It didn't work until I
removed the HDMI
module which used the same I2C bus. I'm not clear about the details.

On Wed, Sep 24, 2014 at 11:27 PM, bruce bushby <[email protected]>
wrote:

> 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.
>

-- 
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.

Reply via email to