[i2c] [PATCH] i2c-pxa: fastmode support

2008-07-31 Thread Jonathan Cameron
From: Jonathan Cameron <[EMAIL PROTECTED]>

Add fast_mode option to i2c_pxa_platform_data and use it to set the ICR_FM bit
appropriately when i2c_pxa_reset is called. Parameter called fast_mode rather
than frequency as this driver is also used for the i2c_pxa_pwr bus which has
different normal and fast frequencies.

Signed-off-by: Jonathan Cameron <[EMAIL PROTECTED]>
--
This is basically a repost of the original patch with use_pio and fast_mode 
converted
to bit fields as suggested / agreed by Eric Miao and Ben Dooks.

Patch is against 2.6.27-rc1

 drivers/i2c/busses/i2c-pxa.c|6 --
 include/asm-arm/arch-pxa/i2c.h  |3 ++-
 include/asm-arm/arch-pxa/pxa-regs.h |1 +
 3 files changed, 7 insertions(+), 3 deletions(-)

diff -uprN -X a/Documentation/dontdiff a/include/asm-arm/arch-pxa/pxa-regs.h 
b/include/asm-arm/arch-pxa/pxa-regs.h
--- a/include/asm-arm/arch-pxa/pxa-regs.h   2008-07-31 12:02:51.0 
+0100
+++ b/include/asm-arm/arch-pxa/pxa-regs.h   2008-07-31 12:34:44.0 
+0100
@@ -448,6 +448,7 @@
 #define ICR_ALDIE  (1 << 12)  /* enable arbitration interrupt */
 #define ICR_SADIE  (1 << 13)  /* slave address detected int enable 
*/
 #define ICR_UR (1 << 14)  /* unit reset */
+#define ICR_FM (1 << 15)  /* fast mode */
 
 #define ISR_RWM(1 << 0)   /* read/write mode */
 #define ISR_ACKNAK (1 << 1)   /* ack/nak status */
diff -uprN -X a/Documentation/dontdiff a/include/asm-arm/arch-pxa/i2c.h 
b/include/asm-arm/arch-pxa/i2c.h
--- a/include/asm-arm/arch-pxa/i2c.h2008-07-31 12:00:05.0 +0100
+++ b/include/asm-arm/arch-pxa/i2c.h2008-07-31 16:01:28.0 +0100
@@ -65,7 +65,8 @@ struct i2c_pxa_platform_data {
unsigned intslave_addr;
struct i2c_slave_client *slave;
unsigned intclass;
-   int use_pio;
+   int use_pio:1;
+   int fast_mode:1;
 };
 
 extern void pxa_set_i2c_info(struct i2c_pxa_platform_data *info);
diff -uprN -X a/Documentation/dontdiff a/drivers/i2c/busses/i2c-pxa.c 
b/drivers/i2c/busses/i2c-pxa.c
--- a/drivers/i2c/busses/i2c-pxa.c  2008-07-31 12:02:42.0 +0100
+++ b/drivers/i2c/busses/i2c-pxa.c  2008-07-31 16:10:43.0 +0100
@@ -65,7 +65,8 @@ struct pxa_i2c {
unsigned long   iosize;
 
int irq;
-   int use_pio;
+   int use_pio:1;
+   int fast_mode:1;
 };
 
 #define _IBMR(i2c) ((i2c)->reg_base + 0)
@@ -364,7 +365,7 @@ static void i2c_pxa_reset(struct pxa_i2c
writel(i2c->slave_addr, _ISAR(i2c));
 
/* set control register values */
-   writel(I2C_ICR_INIT, _ICR(i2c));
+   writel(I2C_ICR_INIT | (i2c->fast_mode ? ICR_FM : 0), _ICR(i2c));
 
 #ifdef CONFIG_I2C_PXA_SLAVE
dev_info(&i2c->adap.dev, "Enabling slave mode\n");
@@ -1013,6 +1014,7 @@ static int i2c_pxa_probe(struct platform
if (plat) {
i2c->adap.class = plat->class;
i2c->use_pio = plat->use_pio;
+   i2c->fast_mode = plat->fast_mode;
}
 
if (i2c->use_pio) {

___
i2c mailing list
i2c@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/i2c


Re: [i2c] [PATCH] i2c-pxa: fastmode support

2008-07-31 Thread Eric Miao
> This is basically a repost of the original patch with use_pio and fast_mode 
> converted
> to bit fields as suggested / agreed by Eric Miao and Ben Dooks.
>

It's generally better to use "unsigned int" for bit field please. Otherwise OK.

___
i2c mailing list
i2c@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/i2c


Re: [i2c] [PATCH] i2c-pxa: fastmode support

2008-08-01 Thread Ben Dooks
On Thu, Jul 31, 2008 at 04:56:53PM +0100, Jonathan Cameron wrote:
> From: Jonathan Cameron <[EMAIL PROTECTED]>
> 
> Add fast_mode option to i2c_pxa_platform_data and use it to set the ICR_FM bit
> appropriately when i2c_pxa_reset is called. Parameter called fast_mode rather
> than frequency as this driver is also used for the i2c_pxa_pwr bus which has
> different normal and fast frequencies.
> 
> Signed-off-by: Jonathan Cameron <[EMAIL PROTECTED]>
> --
> This is basically a repost of the original patch with use_pio and fast_mode 
> converted
> to bit fields as suggested / agreed by Eric Miao and Ben Dooks.

please ensure your descriptions are wrapped to less than 77 characters
per line.
 
> Patch is against 2.6.27-rc1
> 
>  drivers/i2c/busses/i2c-pxa.c|6 --
>  include/asm-arm/arch-pxa/i2c.h  |3 ++-
>  include/asm-arm/arch-pxa/pxa-regs.h |1 +
>  3 files changed, 7 insertions(+), 3 deletions(-)
> 
> diff -uprN -X a/Documentation/dontdiff a/include/asm-arm/arch-pxa/pxa-regs.h 
> b/include/asm-arm/arch-pxa/pxa-regs.h
> --- a/include/asm-arm/arch-pxa/pxa-regs.h 2008-07-31 12:02:51.0 
> +0100
> +++ b/include/asm-arm/arch-pxa/pxa-regs.h 2008-07-31 12:34:44.0 
> +0100
> @@ -448,6 +448,7 @@
>  #define ICR_ALDIE(1 << 12)  /* enable arbitration interrupt */
>  #define ICR_SADIE(1 << 13)  /* slave address detected int enable 
> */
>  #define ICR_UR   (1 << 14)  /* unit reset */
> +#define ICR_FM   (1 << 15)  /* fast mode */
>  
>  #define ISR_RWM  (1 << 0)   /* read/write mode */
>  #define ISR_ACKNAK   (1 << 1)   /* ack/nak status */
> diff -uprN -X a/Documentation/dontdiff a/include/asm-arm/arch-pxa/i2c.h 
> b/include/asm-arm/arch-pxa/i2c.h
> --- a/include/asm-arm/arch-pxa/i2c.h  2008-07-31 12:00:05.0 +0100
> +++ b/include/asm-arm/arch-pxa/i2c.h  2008-07-31 16:01:28.0 +0100
> @@ -65,7 +65,8 @@ struct i2c_pxa_platform_data {
>   unsigned intslave_addr;
>   struct i2c_slave_client *slave;
>   unsigned intclass;
> - int use_pio;
> + int use_pio:1;
> + int fast_mode:1;
>  };
>  
>  extern void pxa_set_i2c_info(struct i2c_pxa_platform_data *info);
> diff -uprN -X a/Documentation/dontdiff a/drivers/i2c/busses/i2c-pxa.c 
> b/drivers/i2c/busses/i2c-pxa.c
> --- a/drivers/i2c/busses/i2c-pxa.c2008-07-31 12:02:42.0 +0100
> +++ b/drivers/i2c/busses/i2c-pxa.c2008-07-31 16:10:43.0 +0100
> @@ -65,7 +65,8 @@ struct pxa_i2c {
>   unsigned long   iosize;
>  
>   int irq;
> - int use_pio;
> + int use_pio:1;
> + int fast_mode:1;
>  };

Please use unsigned int for bitfields, and a space between the
name and the :1 would be nice.
  
>  #define _IBMR(i2c)   ((i2c)->reg_base + 0)
> @@ -364,7 +365,7 @@ static void i2c_pxa_reset(struct pxa_i2c
>   writel(i2c->slave_addr, _ISAR(i2c));
>  
>   /* set control register values */
> - writel(I2C_ICR_INIT, _ICR(i2c));
> + writel(I2C_ICR_INIT | (i2c->fast_mode ? ICR_FM : 0), _ICR(i2c));
>  
>  #ifdef CONFIG_I2C_PXA_SLAVE
>   dev_info(&i2c->adap.dev, "Enabling slave mode\n");
> @@ -1013,6 +1014,7 @@ static int i2c_pxa_probe(struct platform
>   if (plat) {
>   i2c->adap.class = plat->class;
>   i2c->use_pio = plat->use_pio;
> + i2c->fast_mode = plat->fast_mode;
>   }
>  
>   if (i2c->use_pio) {

-- 
-- 
Ben

Q:  What's a light-year?
A:  One-third less calories than a regular year.


___
i2c mailing list
i2c@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/i2c


Re: [i2c] [PATCH] i2c-pxa: fastmode support

2008-08-01 Thread Jonathan Cameron
Eric Miao wrote:
>> This is basically a repost of the original patch with use_pio and fast_mode 
>> converted
>> to bit fields as suggested / agreed by Eric Miao and Ben Dooks.
>>
> 
> It's generally better to use "unsigned int" for bit field please. Otherwise 
> OK.
Good point! Concept of a 1 bit signed integer is a bit odd to say the least ;)

Patch repost with that (and Ben's point about description length) fixed shortly.

Cheers,
--
Jonathan Cameron


___
i2c mailing list
i2c@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/i2c


Re: [i2c] [PATCH] i2c-pxa: fastmode support

2008-08-01 Thread Jonathan Cameron
Ben Dooks wrote:
> On Thu, Jul 31, 2008 at 04:56:53PM +0100, Jonathan Cameron wrote:
>> From: Jonathan Cameron <[EMAIL PROTECTED]>
>>
>> Add fast_mode option to i2c_pxa_platform_data and use it to set the ICR_FM 
>> bit
>> appropriately when i2c_pxa_reset is called. Parameter called fast_mode rather
>> than frequency as this driver is also used for the i2c_pxa_pwr bus which has
>> different normal and fast frequencies.
>>
>> Signed-off-by: Jonathan Cameron <[EMAIL PROTECTED]>
>> --
>> This is basically a repost of the original patch with use_pio and fast_mode 
>> converted
>> to bit fields as suggested / agreed by Eric Miao and Ben Dooks.
> 
> please ensure your descriptions are wrapped to less than 77 characters
> per line.
Will do, sorry about that bit of carelessness.
  
>>  extern void pxa_set_i2c_info(struct i2c_pxa_platform_data *info);
>> diff -uprN -X a/Documentation/dontdiff a/drivers/i2c/busses/i2c-pxa.c 
>> b/drivers/i2c/busses/i2c-pxa.c
>> --- a/drivers/i2c/busses/i2c-pxa.c   2008-07-31 12:02:42.0 +0100
>> +++ b/drivers/i2c/busses/i2c-pxa.c   2008-07-31 16:10:43.0 +0100
>> @@ -65,7 +65,8 @@ struct pxa_i2c {
>>  unsigned long   iosize;
>>  
>>  int irq;
>> -int use_pio;
>> +int use_pio:1;
>> +int fast_mode:1;
>>  };
> 
> Please use unsigned int for bitfields, and a space between the
> name and the :1 would be nice.
On this point, which is the standard way of doing this?
I'd normally go for a space before the colon, but it appears to be an
open issue from point of view of coding standards(and checkpatch throws a 
wobbly)

Not something I care about that much either way and I'm guessing by the would be
nice that you don't either. I'll repost the patch without.

Thanks for the comments,

--
Jonathan Cameron


___
i2c mailing list
i2c@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/i2c


Re: [i2c] [PATCH] i2c-pxa: fastmode support

2008-08-01 Thread Russell King - ARM Linux
On Fri, Aug 01, 2008 at 11:06:12AM +0100, Jonathan Cameron wrote:
> Ben Dooks wrote:
> > On Thu, Jul 31, 2008 at 04:56:53PM +0100, Jonathan Cameron wrote:
> >> From: Jonathan Cameron <[EMAIL PROTECTED]>
> >>
> >> Add fast_mode option to i2c_pxa_platform_data and use it to set the ICR_FM 
> >> bit
> >> appropriately when i2c_pxa_reset is called. Parameter called fast_mode 
> >> rather
> >> than frequency as this driver is also used for the i2c_pxa_pwr bus which 
> >> has
> >> different normal and fast frequencies.
> >>
> >> Signed-off-by: Jonathan Cameron <[EMAIL PROTECTED]>
> >> --
> >> This is basically a repost of the original patch with use_pio and 
> >> fast_mode converted
> >> to bit fields as suggested / agreed by Eric Miao and Ben Dooks.
> > 
> > please ensure your descriptions are wrapped to less than 77 characters
> > per line.
> Will do, sorry about that bit of carelessness.

Less than 72 is preferable - because tools (eg, git log) commonly prefix
the comments with one tab.

> Not something I care about that much either way and I'm guessing by
> the would be nice that you don't either. I'll repost the patch without.

Preferred without the space.

___
i2c mailing list
i2c@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/i2c


Re: [i2c] [PATCH] i2c-pxa: fastmode support

2008-08-01 Thread Jonathan Cameron
Russell King - ARM Linux wrote:
> On Fri, Aug 01, 2008 at 11:06:12AM +0100, Jonathan Cameron wrote:
>> Ben Dooks wrote:
>>> On Thu, Jul 31, 2008 at 04:56:53PM +0100, Jonathan Cameron wrote:
 From: Jonathan Cameron <[EMAIL PROTECTED]>

 Add fast_mode option to i2c_pxa_platform_data and use it to set the ICR_FM 
 bit
 appropriately when i2c_pxa_reset is called. Parameter called fast_mode 
 rather
 than frequency as this driver is also used for the i2c_pxa_pwr bus which 
 has
 different normal and fast frequencies.

 Signed-off-by: Jonathan Cameron <[EMAIL PROTECTED]>
 --
 This is basically a repost of the original patch with use_pio and 
 fast_mode converted
 to bit fields as suggested / agreed by Eric Miao and Ben Dooks.
>>> please ensure your descriptions are wrapped to less than 77 characters
>>> per line.
>> Will do, sorry about that bit of carelessness.
> 
> Less than 72 is preferable - because tools (eg, git log) commonly prefix
> the comments with one tab.
Doh, emails crossed. I'll repost with 72 character limit in a sec!
> 
>> Not something I care about that much either way and I'm guessing by
>> the would be nice that you don't either. I'll repost the patch without.
> 
> Preferred without the space.
Thanks for clearing that up.
--
Jonathan


___
i2c mailing list
i2c@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/i2c


[i2c] [PATCH] i2c-pxa: fastmode support (format cleanups)

2008-08-01 Thread Jonathan Cameron
From: Jonathan Cameron <[EMAIL PROTECTED]>

Add fast_mode option to i2c_pxa_platform_data and use it to set the
ICR_FM bit appropriately when i2c_pxa_reset is called. Parameter
called fast_mode rather than frequency as this driver is also used
for the i2c_pxa_pwr bus which has different normal and fast frequencies.

Signed-off-by: Jonathan Cameron <[EMAIL PROTECTED]>

--
This is basically a repost of the original patch with use_pio and
fast_mode converted to bit fields as suggested / agreed by Eric Miao and
Ben Dooks.

 drivers/i2c/busses/i2c-pxa.c|6 --
 include/asm-arm/arch-pxa/i2c.h  |3 ++-
 include/asm-arm/arch-pxa/pxa-regs.h |1 +
 3 files changed, 7 insertions(+), 3 deletions(-)

--- a/drivers/i2c/busses/i2c-pxa.c  2008-07-31 12:02:42.0 +0100
+++ b/drivers/i2c/busses/i2c-pxa.c  2008-08-01 10:50:38.0 +0100
@@ -65,7 +65,8 @@ struct pxa_i2c {
unsigned long   iosize;
 
int irq;
-   int use_pio;
+   unsigned intuse_pio:1;
+   unsigned intfast_mode:1;
 };
 
 #define _IBMR(i2c) ((i2c)->reg_base + 0)
@@ -364,7 +365,7 @@ static void i2c_pxa_reset(struct pxa_i2c
writel(i2c->slave_addr, _ISAR(i2c));
 
/* set control register values */
-   writel(I2C_ICR_INIT, _ICR(i2c));
+   writel(I2C_ICR_INIT | (i2c->fast_mode ? ICR_FM : 0), _ICR(i2c));
 
 #ifdef CONFIG_I2C_PXA_SLAVE
dev_info(&i2c->adap.dev, "Enabling slave mode\n");
@@ -1013,6 +1014,7 @@ static int i2c_pxa_probe(struct platform
if (plat) {
i2c->adap.class = plat->class;
i2c->use_pio = plat->use_pio;
+   i2c->fast_mode = plat->fast_mode;
}
 
if (i2c->use_pio) {
--- a/include/asm-arm/arch-pxa/i2c.h2008-07-31 12:00:05.0 +0100
+++ b/include/asm-arm/arch-pxa/i2c.h2008-08-01 10:51:40.0 +0100
@@ -65,7 +65,8 @@ struct i2c_pxa_platform_data {
unsigned intslave_addr;
struct i2c_slave_client *slave;
unsigned intclass;
-   int use_pio;
+   unsigned intuse_pio:1;
+   unsigned intfast_mode:1;
 };
 
 extern void pxa_set_i2c_info(struct i2c_pxa_platform_data *info);
--- a/include/asm-arm/arch-pxa/pxa-regs.h   2008-07-31 12:02:51.0 
+0100
+++ b/include/asm-arm/arch-pxa/pxa-regs.h   2008-07-31 12:34:44.0 
+0100
@@ -448,6 +448,7 @@
 #define ICR_ALDIE  (1 << 12)  /* enable arbitration interrupt */
 #define ICR_SADIE  (1 << 13)  /* slave address detected int enable 
*/
 #define ICR_UR (1 << 14)  /* unit reset */
+#define ICR_FM (1 << 15)  /* fast mode */
 
 #define ISR_RWM(1 << 0)   /* read/write mode */
 #define ISR_ACKNAK (1 << 1)   /* ack/nak status */

___
i2c mailing list
i2c@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/i2c


[i2c] [PATCH] i2c-pxa: fastmode support (with suggested fixes)

2008-08-01 Thread Jonathan Cameron
From: Jonathan Cameron <[EMAIL PROTECTED]>

Add fast_mode option to i2c_pxa_platform_data and use it to set the ICR_FM
bit appropriately when i2c_pxa_reset is called. Parameter called fast_mode
rather than frequency as this driver is also used for the i2c_pxa_pwr bus
which has different normal and fast frequencies.

Signed-off-by: Jonathan Cameron <[EMAIL PROTECTED]>

--
This is basically a repost of the original patch with use_pio and
fast_mode converted to bit fields as suggested / agreed by Eric Miao and
Ben Dooks.

 drivers/i2c/busses/i2c-pxa.c|6 --
 include/asm-arm/arch-pxa/i2c.h  |3 ++-
 include/asm-arm/arch-pxa/pxa-regs.h |1 +
 3 files changed, 7 insertions(+), 3 deletions(-)

--- a/drivers/i2c/busses/i2c-pxa.c  2008-07-31 12:02:42.0 +0100
+++ b/drivers/i2c/busses/i2c-pxa.c  2008-08-01 10:50:38.0 +0100
@@ -65,7 +65,8 @@ struct pxa_i2c {
unsigned long   iosize;
 
int irq;
-   int use_pio;
+   unsigned intuse_pio:1;
+   unsigned intfast_mode:1;
 };
 
 #define _IBMR(i2c) ((i2c)->reg_base + 0)
@@ -364,7 +365,7 @@ static void i2c_pxa_reset(struct pxa_i2c
writel(i2c->slave_addr, _ISAR(i2c));
 
/* set control register values */
-   writel(I2C_ICR_INIT, _ICR(i2c));
+   writel(I2C_ICR_INIT | (i2c->fast_mode ? ICR_FM : 0), _ICR(i2c));
 
 #ifdef CONFIG_I2C_PXA_SLAVE
dev_info(&i2c->adap.dev, "Enabling slave mode\n");
@@ -1013,6 +1014,7 @@ static int i2c_pxa_probe(struct platform
if (plat) {
i2c->adap.class = plat->class;
i2c->use_pio = plat->use_pio;
+   i2c->fast_mode = plat->fast_mode;
}
 
if (i2c->use_pio) {
--- a/include/asm-arm/arch-pxa/i2c.h2008-07-31 12:00:05.0 +0100
+++ b/include/asm-arm/arch-pxa/i2c.h2008-08-01 10:51:40.0 +0100
@@ -65,7 +65,8 @@ struct i2c_pxa_platform_data {
unsigned intslave_addr;
struct i2c_slave_client *slave;
unsigned intclass;
-   int use_pio;
+   unsigned intuse_pio:1;
+   unsigned intfast_mode:1;
 };
 
 extern void pxa_set_i2c_info(struct i2c_pxa_platform_data *info);
--- a/include/asm-arm/arch-pxa/pxa-regs.h   2008-07-31 12:02:51.0 
+0100
+++ b/include/asm-arm/arch-pxa/pxa-regs.h   2008-07-31 12:34:44.0 
+0100
@@ -448,6 +448,7 @@
 #define ICR_ALDIE  (1 << 12)  /* enable arbitration interrupt */
 #define ICR_SADIE  (1 << 13)  /* slave address detected int enable 
*/
 #define ICR_UR (1 << 14)  /* unit reset */
+#define ICR_FM (1 << 15)  /* fast mode */
 
 #define ISR_RWM(1 << 0)   /* read/write mode */
 #define ISR_ACKNAK (1 << 1)   /* ack/nak status */

___
i2c mailing list
i2c@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/i2c


Re: [i2c] [PATCH] i2c-pxa: fastmode support (format cleanups)

2008-08-01 Thread Eric Miao
On Fri, Aug 1, 2008 at 6:16 PM, Jonathan Cameron <[EMAIL PROTECTED]> wrote:
> From: Jonathan Cameron <[EMAIL PROTECTED]>
>
> Add fast_mode option to i2c_pxa_platform_data and use it to set the
> ICR_FM bit appropriately when i2c_pxa_reset is called. Parameter
> called fast_mode rather than frequency as this driver is also used
> for the i2c_pxa_pwr bus which has different normal and fast frequencies.
>
> Signed-off-by: Jonathan Cameron <[EMAIL PROTECTED]>

Acked-by: Eric Miao <[EMAIL PROTECTED]>

>
> --
> This is basically a repost of the original patch with use_pio and
> fast_mode converted to bit fields as suggested / agreed by Eric Miao and
> Ben Dooks.
>
>  drivers/i2c/busses/i2c-pxa.c|6 --
>  include/asm-arm/arch-pxa/i2c.h  |3 ++-
>  include/asm-arm/arch-pxa/pxa-regs.h |1 +
>  3 files changed, 7 insertions(+), 3 deletions(-)
>
> --- a/drivers/i2c/busses/i2c-pxa.c  2008-07-31 12:02:42.0 +0100
> +++ b/drivers/i2c/busses/i2c-pxa.c  2008-08-01 10:50:38.0 +0100
> @@ -65,7 +65,8 @@ struct pxa_i2c {
>unsigned long   iosize;
>
>int irq;
> -   int use_pio;
> +   unsigned intuse_pio:1;
> +   unsigned intfast_mode:1;
>  };
>
>  #define _IBMR(i2c) ((i2c)->reg_base + 0)
> @@ -364,7 +365,7 @@ static void i2c_pxa_reset(struct pxa_i2c
>writel(i2c->slave_addr, _ISAR(i2c));
>
>/* set control register values */
> -   writel(I2C_ICR_INIT, _ICR(i2c));
> +   writel(I2C_ICR_INIT | (i2c->fast_mode ? ICR_FM : 0), _ICR(i2c));
>
>  #ifdef CONFIG_I2C_PXA_SLAVE
>dev_info(&i2c->adap.dev, "Enabling slave mode\n");
> @@ -1013,6 +1014,7 @@ static int i2c_pxa_probe(struct platform
>if (plat) {
>i2c->adap.class = plat->class;
>i2c->use_pio = plat->use_pio;
> +   i2c->fast_mode = plat->fast_mode;
>}
>
>if (i2c->use_pio) {
> --- a/include/asm-arm/arch-pxa/i2c.h2008-07-31 12:00:05.0 +0100
> +++ b/include/asm-arm/arch-pxa/i2c.h2008-08-01 10:51:40.0 +0100
> @@ -65,7 +65,8 @@ struct i2c_pxa_platform_data {
>unsigned intslave_addr;
>struct i2c_slave_client *slave;
>unsigned intclass;
> -   int use_pio;
> +   unsigned intuse_pio:1;
> +   unsigned intfast_mode:1;
>  };
>
>  extern void pxa_set_i2c_info(struct i2c_pxa_platform_data *info);
> --- a/include/asm-arm/arch-pxa/pxa-regs.h   2008-07-31 12:02:51.0 
> +0100
> +++ b/include/asm-arm/arch-pxa/pxa-regs.h   2008-07-31 12:34:44.0 
> +0100
> @@ -448,6 +448,7 @@
>  #define ICR_ALDIE  (1 << 12)  /* enable arbitration interrupt */
>  #define ICR_SADIE  (1 << 13)  /* slave address detected int 
> enable */
>  #define ICR_UR (1 << 14)  /* unit reset */
> +#define ICR_FM (1 << 15)  /* fast mode */
>
>  #define ISR_RWM(1 << 0)   /* read/write mode */
>  #define ISR_ACKNAK (1 << 1)   /* ack/nak status */
>
> ___
> i2c mailing list
> i2c@lm-sensors.org
> http://lists.lm-sensors.org/mailman/listinfo/i2c
>



-- 
Cheers
- eric

___
i2c mailing list
i2c@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/i2c


Re: [i2c] [PATCH] i2c-pxa: fastmode support (with suggested fixes)

2008-08-06 Thread Ben Dooks
On Fri, Aug 01, 2008 at 11:08:15AM +0100, Jonathan Cameron wrote:
> From: Jonathan Cameron <[EMAIL PROTECTED]>
> 
> Add fast_mode option to i2c_pxa_platform_data and use it to set the ICR_FM
> bit appropriately when i2c_pxa_reset is called. Parameter called fast_mode
> rather than frequency as this driver is also used for the i2c_pxa_pwr bus
> which has different normal and fast frequencies.

this looks fine, the only problem is that we're still going
through some reorganisation of the ARM headers... given this
is really a new feature, I'm not going to apply it until closer
to the next release.

I may even have a look to see what the state of splitting pxa-regs
up further into something that might be more maintainable...
 
> Signed-off-by: Jonathan Cameron <[EMAIL PROTECTED]>
> 
> --
> This is basically a repost of the original patch with use_pio and
> fast_mode converted to bit fields as suggested / agreed by Eric Miao and
> Ben Dooks.
> 
>  drivers/i2c/busses/i2c-pxa.c|6 --
>  include/asm-arm/arch-pxa/i2c.h  |3 ++-
>  include/asm-arm/arch-pxa/pxa-regs.h |1 +
>  3 files changed, 7 insertions(+), 3 deletions(-)
> 
> --- a/drivers/i2c/busses/i2c-pxa.c2008-07-31 12:02:42.0 +0100
> +++ b/drivers/i2c/busses/i2c-pxa.c2008-08-01 10:50:38.0 +0100
> @@ -65,7 +65,8 @@ struct pxa_i2c {
>   unsigned long   iosize;
>  
>   int irq;
> - int use_pio;
> + unsigned intuse_pio:1;
> + unsigned intfast_mode:1;
>  };
>  
>  #define _IBMR(i2c)   ((i2c)->reg_base + 0)
> @@ -364,7 +365,7 @@ static void i2c_pxa_reset(struct pxa_i2c
>   writel(i2c->slave_addr, _ISAR(i2c));
>  
>   /* set control register values */
> - writel(I2C_ICR_INIT, _ICR(i2c));
> + writel(I2C_ICR_INIT | (i2c->fast_mode ? ICR_FM : 0), _ICR(i2c));
>  
>  #ifdef CONFIG_I2C_PXA_SLAVE
>   dev_info(&i2c->adap.dev, "Enabling slave mode\n");
> @@ -1013,6 +1014,7 @@ static int i2c_pxa_probe(struct platform
>   if (plat) {
>   i2c->adap.class = plat->class;
>   i2c->use_pio = plat->use_pio;
> + i2c->fast_mode = plat->fast_mode;
>   }
>  
>   if (i2c->use_pio) {
> --- a/include/asm-arm/arch-pxa/i2c.h  2008-07-31 12:00:05.0 +0100
> +++ b/include/asm-arm/arch-pxa/i2c.h  2008-08-01 10:51:40.0 +0100
> @@ -65,7 +65,8 @@ struct i2c_pxa_platform_data {
>   unsigned intslave_addr;
>   struct i2c_slave_client *slave;
>   unsigned intclass;
> - int use_pio;
> + unsigned intuse_pio:1;
> + unsigned intfast_mode:1;
>  };
>  
>  extern void pxa_set_i2c_info(struct i2c_pxa_platform_data *info);
> --- a/include/asm-arm/arch-pxa/pxa-regs.h 2008-07-31 12:02:51.0 
> +0100
> +++ b/include/asm-arm/arch-pxa/pxa-regs.h 2008-07-31 12:34:44.0 
> +0100
> @@ -448,6 +448,7 @@
>  #define ICR_ALDIE(1 << 12)  /* enable arbitration interrupt */
>  #define ICR_SADIE(1 << 13)  /* slave address detected int enable 
> */
>  #define ICR_UR   (1 << 14)  /* unit reset */
> +#define ICR_FM   (1 << 15)  /* fast mode */
>  
>  #define ISR_RWM  (1 << 0)   /* read/write mode */
>  #define ISR_ACKNAK   (1 << 1)   /* ack/nak status */
> 
> ___
> i2c mailing list
> i2c@lm-sensors.org
> http://lists.lm-sensors.org/mailman/listinfo/i2c

-- 
Ben ([EMAIL PROTECTED], http://www.fluff.org/)

  'a smiley only costs 4 bytes'

___
i2c mailing list
i2c@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/i2c