Showing results for 
Show  only  | Search instead for 
Did you mean: 
Registered: ‎12-03-2015

I2C interrupt via GIC block



I have a ZC706 board running Petalinux 2015.2.1. I am trying to interface to an MPU-6050 interial device over the I2C bus.  Due to the lack of PS accessable PMOD connectors on the board my HW eng routed the I2C bus through the PL. Nothing was done to the signals, it is just a route to PMOD 1 - J58..  He tied the I2C interrupt to GIC 0.  I can't get the I2C driver to talk to the MPU.  


This is the modified i2c1 entry from system-top.dts:


&i2c1 {
	status = "okay";
	clock-frequency = <400000>;
	interrupts = <0 0 4>;



This is the original i2c1 entry from zynq-7000.dtsi:


		i2c1: i2c@e0005000 {
			compatible = "cdns,i2c-r1p10";
			status = "disabled";
			clocks = <&clkc 39>;
			interrupt-parent = <&intc>;
			interrupts = <0 48 4>;
			reg = <0xe0005000 0x1000>;
			#address-cells = <1>;
			#size-cells = <0>;



dmesg output: 

i2c /dev entries driver
cdns-i2c e0004000.i2c: 400 kHz mmio e0004000 irq 141
cdns-i2c e0005000.i2c: 400 kHz mmio e0005000 irq 142


When I probe the drivers with i2cdetect -l both i2c driver entries are shown, but when I try to probe the devices i2c-1 never returns. I just get:

# i2cdetect -y -r 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          cdns-i2c e0005000.i2c: timeout waiting on completion
-- cdns-i2c e0005000.i2c: timeout waiting on completion

What should the interrupts entry for i2c1 be? I have tried making it a PPI interrupt, <1 0 4>, but the driver can't even find the device when I do that.

Is what I am trying even possible?




0 Kudos
0 Replies