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

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

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

Or it could be moved back to the i2c_mpc driver and we add stubs for the
functions to get the bus frequency, or use #ifdef's.

Wolfgang.