Thread (1 message) 1 message, 1 author, 2008-10-22

Re: Freescale i2c probing (commit 618b26d52)

From: Wolfgang Grandegger <hidden>
Date: 2008-10-22 07:43:12

Possibly related (same subject, not in this thread)

Grant Likely wrote:
On Tue, Oct 21, 2008 at 12:58 PM, Ira Snyder [off-list ref] wrote:
quoted
Hello,

I'm working on a custom board, which is extremely similar to the
mpc8349emds board. I've been using a custom dts file, based on the
mpc834x_mds.dts file.

One of the things that is present on my board are some i2c
temp/voltage/current sensors. I've been working on getting drivers for
them into mainline, see the lm-sensors list for the patches. I also have
adm1031 and adm1032 sensors on the board, which have long been supported
in mainline.

In very recent kernels, probing is intentionally disabled by commit
618b26d52.
That is correct
quoted
Based on the commit message, I examined the
arch/powerpc/boot/dts/tqm85*.dts files. I didn't find anything that
would serve as a useful example for me.

The ePAPR document describing the device tree didn't help either.

Could you please give me a simple example of how to re-enable the
probing? I have 11 i2c devices on my board, and I'd rather not have a
really long kernel command line with tons of "force=" parameters.
Since probing is unreliable on i2c busses we've made the decision not
to support it.  Recommended practice is to list your devices in the
device tree under the i2c bus node; something like this:

                i2c@3000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        cell-index = <0>;
                        compatible = "fsl-i2c";
                        reg = <0x3000 0x100>;
                        interrupts = <43 2>;
                        interrupt-parent = <&mpic>;
                        dfsrr;

                        rtc@68 {
                                compatible = "dallas,ds1337";
                                reg = <0x68>;    /* This is the i2c
address of the device */
                        };
                        rtc@XX { /* replace 'XX' with i2c address */
                                compatible = "ADI,adm1031";
                                reg = <0xXX>;    /* This is the i2c
address of the device */
                        };
                        rtc@YY { /* replace 'YY' with i2c address */
                                compatible = "ADI,adm1032";
                                reg = <0xYY>;
                        };

                        /* etc */

                };


We're not supporting probing any more.  If you *really* want it then
add a property to the i2c bus binding (documented in
arch/powerpc/device-tree/) that turns on probing and post it to the
devicetree-discuss-mnsaURCQ41sdnm+yROfE0A@public.gmane.org and linuxppc-dev-mnsaURCQ41sdnm+yROfE0A@public.gmane.org mailing
lists.  Just look at commit 618b26d52 to see what flag needs to be
turned on when the property is present.  Alternately, get your boot
firmware to do the probing for you and populate the device tree before
booting the kernel.
BTW, the CPM I2C bus driver currently supports configuration of bus
probing via FDT property "linux,i2c-class", which is even enabled by
default:

 http://lxr.linux.no/linux+v2.6.27/drivers/i2c/busses/i2c-cpm.c#L505

I think bus probing should not be allowed and we should not open a
backdoor via FDT property. Device probing might only necessary for old
style I2C device drivers. Please convert them to new style to solve the
problem.

Wolfgang.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help