All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wolfgang Grandegger <wg@grandegger.com>
To: Grant Likely <grant.likely@secretlab.ca>
Cc: linuxppc-dev@ozlabs.org, devicetree-discuss@ozlabs.org
Subject: Re: [PATCH 5/8] powerpc: i2c-mpc: make I2C bus speed configurable
Date: Wed, 01 Apr 2009 09:51:57 +0200	[thread overview]
Message-ID: <49D31D1D.6020004@grandegger.com> (raw)
In-Reply-To: <fa686aa40903310841x42876819rafe3e8bf24b8646e@mail.gmail.com>

Grant Likely wrote:
> On Tue, Mar 31, 2009 at 6:37 AM, Wolfgang Grandegger <wg@grandegger.com> wrote:
>> This patch makes the I2C bus speed configurable by using the I2C node
>> property "clock-frequency". If the property is not defined, the old
>> fixed clock settings will be used for backward comptibility.
>>
>> The generic I2C clock properties, especially the CPU-specific source
>> clock pre-scaler are defined via the OF match table:
>>
>>  static const struct of_device_id mpc_i2c_of_match[] = {
>>        {.compatible = "fsl,mpc5200b-i2c",
>>         .data = (void *)FSL_I2C_DEV_CLOCK_5200, },
>>        {.compatible = "fsl,mpc5200-i2c",
>>         .data = (void *)FSL_I2C_DEV_CLOCK_5200, },
>>        {.compatible = "fsl,mpc8313-i2c",
>>         .data = (void *)FSL_I2C_DEV_SEPARATE_DFSRR, },
>>        {.compatible = "fsl,mpc8543-i2c",
>>         .data = (void *)(FSL_I2C_DEV_SEPARATE_DFSRR |
>>                          FSL_I2C_DEV_CLOCK_DIV2), },
>>        {.compatible = "fsl,mpc8544-i2c",
>>         .data = (void *)(FSL_I2C_DEV_SEPARATE_DFSRR |
>>                          FSL_I2C_DEV_CLOCK_DIV23), },
>>        /* Backward compatibility */
>>        {.compatible = "fsl-i2c", },
>>        {},
>>  };
> 
> 
> Instead passing in a flag (and using an ugly cast to do it) which is
> then checked inside the mpc_i2c_setclock(), you should do this
> instead:
> 
> struct fsl_i2c_match_data {
>         int static void *(setclock)(struct device_node *node, struct
> mpc_i2c *i2c, u32 clock);
>         int flags;
>         /* Other stuff can go here */
> };
> 
> static const struct of_device_id mpc_i2c_of_match[] = {
>         {.compatible = "fsl,mpc5200b-i2c",
>          .data = (struct fsl_i2c_match_data[]) { .setclock =
> mpc_i2c_setclock_mpc5200, },
>         },
>         {.compatible = "fsl,mpc5200-i2c",
>          .data = (struct fsl_i2c_match_data[]) { .setclock =
> mpc_i2c_setclock_mpc5200, },
>         },
>         {.compatible = "fsl,mpc8313-i2c",
>          .data = (struct fsl_i2c_match_data[]) { .setclock =
> mpc_i2c_setclock_separate_dfsrr, },
>         },
>         {.compatible = "fsl,mpc8543-i2c",
>          .data = (struct fsl_i2c_match_data[]) { .setclock =
> mpc_i2c_setclock_separate_dfsrr, },
>          .flags = FSL_I2C_DEV_CLOCK_DIV2,
>         },
>         {.compatible = "fsl,mpc8544-i2c",
>          .data = (struct fsl_i2c_match_data[]) { .setclock =
> mpc_i2c_setclock_separate_dfsrr, },
>          .flags = FSL_I2C_DEV_CLOCK_DIV23,
>         },
>         /* Backward compatibility */
>         {.compatible = "fsl-i2c",
>          .data = (struct fsl_i2c_match_data[]) { .setclock =
> mpc_i2c_setclock, },
>         },
>         {},
>   };
> 
> 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.

> Also, this ...
> 
>> --- linux-2.6.orig/arch/powerpc/sysdev/fsl_soc.c        2009-03-31 13:25:08.000000000 +0200
>> +++ linux-2.6/arch/powerpc/sysdev/fsl_soc.c     2009-03-31 13:34:40.531721011 +0200
>> +int fsl_i2c_get_fdr(struct device_node *node, u32 i2c_clock, u32 i2c_flags)
>> +{
>> [...]
>> +}
>> +EXPORT_SYMBOL(fsl_i2c_get_fdr);
> 
> ... and this ...
> 
>> --- 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.

Wolfgang.

  reply	other threads:[~2009-04-01  7:51 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-31 12:37 [PATCH 0/8] powerpc: i2c-mpc: make I2C bus speed configurable Wolfgang Grandegger
2009-03-31 12:37 ` [PATCH 1/8] [PATCH 3/4] powerpc/85xx: Move gianfar mdio nodes under the Wolfgang Grandegger
2009-03-31 12:37   ` Wolfgang Grandegger
2009-03-31 12:37 ` [PATCH 2/8] [PATCH 01/28] RTC: Add support for RX8025 chip Wolfgang Grandegger
2009-03-31 12:37   ` Wolfgang Grandegger
2009-03-31 12:37 ` [PATCH 3/8] powerpc/85xx: Add support for the "socrates" board (MPC8544) Wolfgang Grandegger
2009-03-31 12:37   ` Wolfgang Grandegger
2009-03-31 15:57   ` Grant Likely
2009-03-31 15:57     ` Grant Likely
2009-03-31 19:20     ` Wolfgang Grandegger
2009-03-31 12:37 ` [PATCH 4/8] powerpc: i2c-mpc: preserve I2C clocking Wolfgang Grandegger
2009-03-31 12:37   ` Wolfgang Grandegger
2009-03-31 12:37 ` [PATCH 5/8] powerpc: i2c-mpc: make I2C bus speed configurable Wolfgang Grandegger
2009-03-31 12:37   ` Wolfgang Grandegger
2009-03-31 15:41   ` Grant Likely
2009-03-31 15:41     ` Grant Likely
2009-04-01  7:51     ` Wolfgang Grandegger [this message]
2009-04-01 13:30       ` Grant Likely
2009-04-01 13:30         ` Grant Likely
2009-04-01 13:41         ` Wolfgang Grandegger
2009-04-01 13:41           ` Wolfgang Grandegger
2009-04-01 13:55           ` Wolfgang Grandegger
     [not found]           ` <49D36F1F.2050107-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
2009-04-01 13:55             ` Grant Likely
2009-04-01 13:55               ` Grant Likely
     [not found]               ` <fa686aa40904010655i73819214m795939e784889267-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-04-02  6:55                 ` Wolfgang Grandegger
2009-04-02  6:55                   ` Wolfgang Grandegger
2009-03-31 12:37 ` [PATCH 6/8] --- arch/powerpc/boot/dts/socrates.dts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) Wolfgang Grandegger
2009-03-31 12:37   ` Wolfgang Grandegger
2009-03-31 23:04   ` David Gibson
2009-04-01  7:31     ` Wolfgang Grandegger
2009-04-01 11:09       ` David Gibson
2009-04-01 11:09         ` David Gibson
2009-04-01 11:59         ` Wolfgang Grandegger
2009-04-01 23:57           ` David Gibson
2009-04-01 12:30         ` Anton Vorontsov
2009-04-01 23:58           ` David Gibson
2009-03-31 12:37 ` [PATCH 7/8] Re: [PATCH 1/2] NAND: Add support for oob size 128 Wolfgang Grandegger
2009-03-31 12:37   ` Wolfgang Grandegger
2009-03-31 12:37 ` [PATCH 8/8] NAND: Add support for NAND on the Socrates board Wolfgang Grandegger
2009-03-31 12:37   ` Wolfgang Grandegger
2009-03-31 12:49 ` [PATCH 0/8] powerpc: i2c-mpc: make I2C bus speed configurable Wolfgang Grandegger
2009-03-31 16:23   ` Grant Likely

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=49D31D1D.6020004@grandegger.com \
    --to=wg@grandegger.com \
    --cc=devicetree-discuss@ozlabs.org \
    --cc=grant.likely@secretlab.ca \
    --cc=linuxppc-dev@ozlabs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.