Subject: Re: [PATCH 5/8] powerpc: i2c-mpc: make I2C bus speed configurable

From: Wolfgang Grandegger <[email-masked]>
Date: Wed, 01 Apr 2009 15:55:07 +0200

Wolfgang Grandegger wrote:
> Grant Likely wrote:
>> On Wed, Apr 1, 2009 at 1:51 AM, Wolfgang Grandegger <[email-masked]> wrote:
>>> Grant Likely wrote:
>>>> The table definition is more verbose this way, but I think it results
>>>> in more understandable and easier to extend code.  It also adds lets
>>>> the compiler do more type checking for you.
>>> OK but I don't like the callback function to do the settings. We need
>>> backward compatibility with old DTS files including the ugly "dfsrr"
>>> property, right? Then it seems consequent to continue using i2c->flags
>>> for that purpose and not to introduce another method. If we don't need
>>> backward compatibility, we could drop the flags completely and just use
>>> callback functions.
>> I don't understand why you don't like it.  It's an elegant solution
>> and it simplifies the code somewhat.  After grabbing the callback
>> pointer the compatibility code can simply override it.  But I won't
>> belabor the point or oppose the patch if you stick with the flags
>> pointer.
> 
> I changed my mind ;-). Have a look to PATCH v2 I sent out a few minutes ago.
> 
>>>>> --- linux-2.6.orig/arch/powerpc/platforms/52xx/mpc52xx_common.c 2009-03-31 13:25:08.000000000 +0200
>>>>> +++ linux-2.6/arch/powerpc/platforms/52xx/mpc52xx_common.c      2009-03-31 13:28:54.309718526 +0200
>>>>> +int fsl_i2c_get_fdr(struct device_node *node, u32 i2c_clock, u32 i2c_flags)
>>>>> +{
>>>>> [...]
>>>>> +}
>>>>> +EXPORT_SYMBOL(fsl_i2c_get_fdr);
>>>> does not work on a multiplatform kernel.  Both 8xxx and 52xx support
>>>> can be selected at the same time.
>>> OK, then we need different functions including stubs.
>> I've been thinking about this more.  These tables are only ever going
>> to be used by the i2c_mpc driver and so really they are a part of the
>> i2c_mpc driver itself.  Putting them into common code doesn't make any
>> sense because it is not common code.  I will not merge a patch that
>> puts them into mpc5200 common code.
> 
> It's not common code, I agree. How about putting it into mpc52xx_i2c.c
> and use:
> 
>   $ cat Makefile
>   obj-$(CONFIG_I2C_MPC) += mpc52xx_i2c.o

That not a good idea either. I just checked the I2C interface of the
MPC512x and it can use the same table then the MPC5200B.

Wolfgang.