Re: [PATCH 7/8] spi_mpc8xxx: Turn qe_mode into flags

2009-11-24 Thread Anton Vorontsov
On Tue, Nov 24, 2009 at 04:03:36PM +1100, Benjamin Herrenschmidt wrote:
[...]
 This patch breaks my 6xx config:
 
 /home/benh/linux-powerpc-test/arch/powerpc/platforms/83xx/mpc832x_rdb.c: In 
 function ‘of_fsl_spi_probe’:
 /home/benh/linux-powerpc-test/arch/powerpc/platforms/83xx/mpc832x_rdb.c:77: 
 error: ‘struct fsl_spi_platform_data’ has no member named ‘qe_
 
 The reason is that the mpc832x_rdb.c code still uses the legacy probing
 method. The fix is not totally trivial as the new flags are defined inside
 spi_mpc8xxx.c

Thanks for noticing. I indeed forgot about the legacy stuff. :-/

 If you are going to keep the flags in the .c file you probably also want
 to remove the platform device definition from fsl_devices.h anyways as
 there's no point exposing to the world a structure with a flags member
 if the definition of those flags isn't also exposed.

Yep. Though, IIRC Joakim asked to keep the legacy bindings for some
time (until we implement SPI chip-select framework?)... so for now
we'll have to leave we the exposed flags.

Thanks again,

-- 
Anton Vorontsov
email: cbouatmai...@gmail.com
irc://irc.freenode.net/bd2
___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Re: [PATCH 7/8] spi_mpc8xxx: Turn qe_mode into flags

2009-11-23 Thread Benjamin Herrenschmidt
On Thu, 2009-11-05 at 07:47 -0600, Kumar Gala wrote:
 On Oct 12, 2009, at 11:49 AM, Anton Vorontsov wrote:
 
  Soon there will be more flags introduced in subsequent patches, so
  let's turn qe_mode into flags.
 
  Also introduce mpc8xxx_spi_strmode() and print current SPI mode.
 
  Signed-off-by: Anton Vorontsov avoront...@ru.mvista.com
  Acked-by: David Brownell dbrown...@users.sourceforge.net
  ---
  drivers/spi/spi_mpc8xxx.c   |   30 +++---
  include/linux/fsl_devices.h |2 +-
  2 files changed, 20 insertions(+), 12 deletions(-)
 
 applied to next

This patch breaks my 6xx config:

/home/benh/linux-powerpc-test/arch/powerpc/platforms/83xx/mpc832x_rdb.c: In 
function ‘of_fsl_spi_probe’:
/home/benh/linux-powerpc-test/arch/powerpc/platforms/83xx/mpc832x_rdb.c:77: 
error: ‘struct fsl_spi_platform_data’ has no member named ‘qe_

The reason is that the mpc832x_rdb.c code still uses the legacy probing
method. The fix is not totally trivial as the new flags are defined inside
spi_mpc8xxx.c so either the flags need to be moved to fsl_devices.h or
mpc832x_rdb.c needs to be converted to new style stuff.

I'll commit (will be up later today in my next branch) a fix moving the
flags over for now so the tree doesn't break building.

If you are going to keep the flags in the .c file you probably also want
to remove the platform device definition from fsl_devices.h anyways as
there's no point exposing to the world a structure with a flags member
if the definition of those flags isn't also exposed.

Cheers,
Ben.

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

[PATCH 7/8] spi_mpc8xxx: Turn qe_mode into flags

2009-10-12 Thread Anton Vorontsov
Soon there will be more flags introduced in subsequent patches, so
let's turn qe_mode into flags.

Also introduce mpc8xxx_spi_strmode() and print current SPI mode.

Signed-off-by: Anton Vorontsov avoront...@ru.mvista.com
Acked-by: David Brownell dbrown...@users.sourceforge.net
---
 drivers/spi/spi_mpc8xxx.c   |   30 +++---
 include/linux/fsl_devices.h |2 +-
 2 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/drivers/spi/spi_mpc8xxx.c b/drivers/spi/spi_mpc8xxx.c
index 4b119ea..80374df 100644
--- a/drivers/spi/spi_mpc8xxx.c
+++ b/drivers/spi/spi_mpc8xxx.c
@@ -96,7 +96,8 @@ struct mpc8xxx_spi {
u32 rx_shift;   /* RX data reg shift when in qe mode */
u32 tx_shift;   /* TX data reg shift when in qe mode */
 
-   bool qe_mode;
+   unsigned int flags;
+#define SPI_QE_CPU_MODE(1  0) /* QE CPU (PIO) mode */
 
struct workqueue_struct *workqueue;
struct work_struct work;
@@ -235,14 +236,14 @@ int mpc8xxx_spi_setup_transfer(struct spi_device *spi, 
struct spi_transfer *t)
if (bits_per_word = 8) {
cs-get_rx = mpc8xxx_spi_rx_buf_u8;
cs-get_tx = mpc8xxx_spi_tx_buf_u8;
-   if (mpc8xxx_spi-qe_mode) {
+   if (mpc8xxx_spi-flags  SPI_QE_CPU_MODE) {
cs-rx_shift = 16;
cs-tx_shift = 24;
}
} else if (bits_per_word = 16) {
cs-get_rx = mpc8xxx_spi_rx_buf_u16;
cs-get_tx = mpc8xxx_spi_tx_buf_u16;
-   if (mpc8xxx_spi-qe_mode) {
+   if (mpc8xxx_spi-flags  SPI_QE_CPU_MODE) {
cs-rx_shift = 16;
cs-tx_shift = 16;
}
@@ -252,7 +253,8 @@ int mpc8xxx_spi_setup_transfer(struct spi_device *spi, 
struct spi_transfer *t)
} else
return -EINVAL;
 
-   if (mpc8xxx_spi-qe_mode  spi-mode  SPI_LSB_FIRST) {
+   if (mpc8xxx_spi-flags  SPI_QE_CPU_MODE 
+   spi-mode  SPI_LSB_FIRST) {
cs-tx_shift = 0;
if (bits_per_word = 8)
cs-rx_shift = 8;
@@ -518,6 +520,13 @@ static void mpc8xxx_spi_cleanup(struct spi_device *spi)
kfree(spi-controller_state);
 }
 
+static const char *mpc8xxx_spi_strmode(unsigned int flags)
+{
+   if (flags  SPI_QE_CPU_MODE)
+   return QE CPU;
+   return CPU;
+}
+
 static struct spi_master * __devinit
 mpc8xxx_spi_probe(struct device *dev, struct resource *mem, unsigned int irq)
 {
@@ -544,14 +553,14 @@ mpc8xxx_spi_probe(struct device *dev, struct resource 
*mem, unsigned int irq)
master-cleanup = mpc8xxx_spi_cleanup;
 
mpc8xxx_spi = spi_master_get_devdata(master);
-   mpc8xxx_spi-qe_mode = pdata-qe_mode;
mpc8xxx_spi-get_rx = mpc8xxx_spi_rx_buf_u8;
mpc8xxx_spi-get_tx = mpc8xxx_spi_tx_buf_u8;
+   mpc8xxx_spi-flags = pdata-flags;
mpc8xxx_spi-spibrg = pdata-sysclk;
 
mpc8xxx_spi-rx_shift = 0;
mpc8xxx_spi-tx_shift = 0;
-   if (mpc8xxx_spi-qe_mode) {
+   if (mpc8xxx_spi-flags  SPI_QE_CPU_MODE) {
mpc8xxx_spi-rx_shift = 16;
mpc8xxx_spi-tx_shift = 24;
}
@@ -584,7 +593,7 @@ mpc8xxx_spi_probe(struct device *dev, struct resource *mem, 
unsigned int irq)
 
/* Enable SPI interface */
regval = pdata-initial_spmode | SPMODE_INIT_VAL | SPMODE_ENABLE;
-   if (pdata-qe_mode)
+   if (mpc8xxx_spi-flags  SPI_QE_CPU_MODE)
regval |= SPMODE_OP;
 
mpc8xxx_spi_write_reg(mpc8xxx_spi-base-mode, regval);
@@ -604,9 +613,8 @@ mpc8xxx_spi_probe(struct device *dev, struct resource *mem, 
unsigned int irq)
if (ret  0)
goto unreg_master;
 
-   printk(KERN_INFO
-  %s: MPC8xxx SPI Controller driver at 0x%p (irq = %d)\n,
-  dev_name(dev), mpc8xxx_spi-base, mpc8xxx_spi-irq);
+   dev_info(dev, at 0x%p (irq = %d), %s mode\n, mpc8xxx_spi-base,
+mpc8xxx_spi-irq, mpc8xxx_spi_strmode(mpc8xxx_spi-flags));
 
return master;
 
@@ -797,7 +805,7 @@ static int __devinit of_mpc8xxx_spi_probe(struct of_device 
*ofdev,
 
prop = of_get_property(np, mode, NULL);
if (prop  !strcmp(prop, cpu-qe))
-   pdata-qe_mode = 1;
+   pdata-flags = SPI_QE_CPU_MODE;
 
ret = of_mpc8xxx_spi_get_chipselects(dev);
if (ret)
diff --git a/include/linux/fsl_devices.h b/include/linux/fsl_devices.h
index 43fc95d..39fd946 100644
--- a/include/linux/fsl_devices.h
+++ b/include/linux/fsl_devices.h
@@ -74,7 +74,7 @@ struct spi_device;
 struct fsl_spi_platform_data {
u32 initial_spmode; /* initial SPMODE value */
s16 bus_num;
-   boolqe_mode;
+   unsigned int flags;
/* board specific information */
u16 max_chipselect;
void(*cs_control)(struct spi_device *spi, bool on);
-- 

[PATCH 7/8] spi_mpc8xxx: Turn qe_mode into flags

2009-08-18 Thread Anton Vorontsov
Soon there will be more flags introduced in subsequent patches, so
let's turn qe_mode into flags.

Also introduce mpc8xxx_spi_strmode() and print current SPI mode.

Signed-off-by: Anton Vorontsov avoront...@ru.mvista.com
---
 drivers/spi/spi_mpc8xxx.c   |   30 +++---
 include/linux/fsl_devices.h |2 +-
 2 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/drivers/spi/spi_mpc8xxx.c b/drivers/spi/spi_mpc8xxx.c
index 4b119ea..80374df 100644
--- a/drivers/spi/spi_mpc8xxx.c
+++ b/drivers/spi/spi_mpc8xxx.c
@@ -96,7 +96,8 @@ struct mpc8xxx_spi {
u32 rx_shift;   /* RX data reg shift when in qe mode */
u32 tx_shift;   /* TX data reg shift when in qe mode */
 
-   bool qe_mode;
+   unsigned int flags;
+#define SPI_QE_CPU_MODE(1  0) /* QE CPU (PIO) mode */
 
struct workqueue_struct *workqueue;
struct work_struct work;
@@ -235,14 +236,14 @@ int mpc8xxx_spi_setup_transfer(struct spi_device *spi, 
struct spi_transfer *t)
if (bits_per_word = 8) {
cs-get_rx = mpc8xxx_spi_rx_buf_u8;
cs-get_tx = mpc8xxx_spi_tx_buf_u8;
-   if (mpc8xxx_spi-qe_mode) {
+   if (mpc8xxx_spi-flags  SPI_QE_CPU_MODE) {
cs-rx_shift = 16;
cs-tx_shift = 24;
}
} else if (bits_per_word = 16) {
cs-get_rx = mpc8xxx_spi_rx_buf_u16;
cs-get_tx = mpc8xxx_spi_tx_buf_u16;
-   if (mpc8xxx_spi-qe_mode) {
+   if (mpc8xxx_spi-flags  SPI_QE_CPU_MODE) {
cs-rx_shift = 16;
cs-tx_shift = 16;
}
@@ -252,7 +253,8 @@ int mpc8xxx_spi_setup_transfer(struct spi_device *spi, 
struct spi_transfer *t)
} else
return -EINVAL;
 
-   if (mpc8xxx_spi-qe_mode  spi-mode  SPI_LSB_FIRST) {
+   if (mpc8xxx_spi-flags  SPI_QE_CPU_MODE 
+   spi-mode  SPI_LSB_FIRST) {
cs-tx_shift = 0;
if (bits_per_word = 8)
cs-rx_shift = 8;
@@ -518,6 +520,13 @@ static void mpc8xxx_spi_cleanup(struct spi_device *spi)
kfree(spi-controller_state);
 }
 
+static const char *mpc8xxx_spi_strmode(unsigned int flags)
+{
+   if (flags  SPI_QE_CPU_MODE)
+   return QE CPU;
+   return CPU;
+}
+
 static struct spi_master * __devinit
 mpc8xxx_spi_probe(struct device *dev, struct resource *mem, unsigned int irq)
 {
@@ -544,14 +553,14 @@ mpc8xxx_spi_probe(struct device *dev, struct resource 
*mem, unsigned int irq)
master-cleanup = mpc8xxx_spi_cleanup;
 
mpc8xxx_spi = spi_master_get_devdata(master);
-   mpc8xxx_spi-qe_mode = pdata-qe_mode;
mpc8xxx_spi-get_rx = mpc8xxx_spi_rx_buf_u8;
mpc8xxx_spi-get_tx = mpc8xxx_spi_tx_buf_u8;
+   mpc8xxx_spi-flags = pdata-flags;
mpc8xxx_spi-spibrg = pdata-sysclk;
 
mpc8xxx_spi-rx_shift = 0;
mpc8xxx_spi-tx_shift = 0;
-   if (mpc8xxx_spi-qe_mode) {
+   if (mpc8xxx_spi-flags  SPI_QE_CPU_MODE) {
mpc8xxx_spi-rx_shift = 16;
mpc8xxx_spi-tx_shift = 24;
}
@@ -584,7 +593,7 @@ mpc8xxx_spi_probe(struct device *dev, struct resource *mem, 
unsigned int irq)
 
/* Enable SPI interface */
regval = pdata-initial_spmode | SPMODE_INIT_VAL | SPMODE_ENABLE;
-   if (pdata-qe_mode)
+   if (mpc8xxx_spi-flags  SPI_QE_CPU_MODE)
regval |= SPMODE_OP;
 
mpc8xxx_spi_write_reg(mpc8xxx_spi-base-mode, regval);
@@ -604,9 +613,8 @@ mpc8xxx_spi_probe(struct device *dev, struct resource *mem, 
unsigned int irq)
if (ret  0)
goto unreg_master;
 
-   printk(KERN_INFO
-  %s: MPC8xxx SPI Controller driver at 0x%p (irq = %d)\n,
-  dev_name(dev), mpc8xxx_spi-base, mpc8xxx_spi-irq);
+   dev_info(dev, at 0x%p (irq = %d), %s mode\n, mpc8xxx_spi-base,
+mpc8xxx_spi-irq, mpc8xxx_spi_strmode(mpc8xxx_spi-flags));
 
return master;
 
@@ -797,7 +805,7 @@ static int __devinit of_mpc8xxx_spi_probe(struct of_device 
*ofdev,
 
prop = of_get_property(np, mode, NULL);
if (prop  !strcmp(prop, cpu-qe))
-   pdata-qe_mode = 1;
+   pdata-flags = SPI_QE_CPU_MODE;
 
ret = of_mpc8xxx_spi_get_chipselects(dev);
if (ret)
diff --git a/include/linux/fsl_devices.h b/include/linux/fsl_devices.h
index 43fc95d..39fd946 100644
--- a/include/linux/fsl_devices.h
+++ b/include/linux/fsl_devices.h
@@ -74,7 +74,7 @@ struct spi_device;
 struct fsl_spi_platform_data {
u32 initial_spmode; /* initial SPMODE value */
s16 bus_num;
-   boolqe_mode;
+   unsigned int flags;
/* board specific information */
u16 max_chipselect;
void(*cs_control)(struct spi_device *spi, bool on);
-- 
1.6.3.3


[PATCH 7/8] spi_mpc8xxx: Turn qe_mode into flags

2009-08-14 Thread Anton Vorontsov
Soon there will be more flags introduced in subsequent patches, so
let's turn qe_mode into flags.

Also introduce mpc8xxx_spi_strmode() and print current SPI mode.

Signed-off-by: Anton Vorontsov avoront...@ru.mvista.com
---
 drivers/spi/spi_mpc8xxx.c   |   30 +++---
 include/linux/fsl_devices.h |2 +-
 2 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/drivers/spi/spi_mpc8xxx.c b/drivers/spi/spi_mpc8xxx.c
index 4b119ea..80374df 100644
--- a/drivers/spi/spi_mpc8xxx.c
+++ b/drivers/spi/spi_mpc8xxx.c
@@ -96,7 +96,8 @@ struct mpc8xxx_spi {
u32 rx_shift;   /* RX data reg shift when in qe mode */
u32 tx_shift;   /* TX data reg shift when in qe mode */
 
-   bool qe_mode;
+   unsigned int flags;
+#define SPI_QE_CPU_MODE(1  0) /* QE CPU (PIO) mode */
 
struct workqueue_struct *workqueue;
struct work_struct work;
@@ -235,14 +236,14 @@ int mpc8xxx_spi_setup_transfer(struct spi_device *spi, 
struct spi_transfer *t)
if (bits_per_word = 8) {
cs-get_rx = mpc8xxx_spi_rx_buf_u8;
cs-get_tx = mpc8xxx_spi_tx_buf_u8;
-   if (mpc8xxx_spi-qe_mode) {
+   if (mpc8xxx_spi-flags  SPI_QE_CPU_MODE) {
cs-rx_shift = 16;
cs-tx_shift = 24;
}
} else if (bits_per_word = 16) {
cs-get_rx = mpc8xxx_spi_rx_buf_u16;
cs-get_tx = mpc8xxx_spi_tx_buf_u16;
-   if (mpc8xxx_spi-qe_mode) {
+   if (mpc8xxx_spi-flags  SPI_QE_CPU_MODE) {
cs-rx_shift = 16;
cs-tx_shift = 16;
}
@@ -252,7 +253,8 @@ int mpc8xxx_spi_setup_transfer(struct spi_device *spi, 
struct spi_transfer *t)
} else
return -EINVAL;
 
-   if (mpc8xxx_spi-qe_mode  spi-mode  SPI_LSB_FIRST) {
+   if (mpc8xxx_spi-flags  SPI_QE_CPU_MODE 
+   spi-mode  SPI_LSB_FIRST) {
cs-tx_shift = 0;
if (bits_per_word = 8)
cs-rx_shift = 8;
@@ -518,6 +520,13 @@ static void mpc8xxx_spi_cleanup(struct spi_device *spi)
kfree(spi-controller_state);
 }
 
+static const char *mpc8xxx_spi_strmode(unsigned int flags)
+{
+   if (flags  SPI_QE_CPU_MODE)
+   return QE CPU;
+   return CPU;
+}
+
 static struct spi_master * __devinit
 mpc8xxx_spi_probe(struct device *dev, struct resource *mem, unsigned int irq)
 {
@@ -544,14 +553,14 @@ mpc8xxx_spi_probe(struct device *dev, struct resource 
*mem, unsigned int irq)
master-cleanup = mpc8xxx_spi_cleanup;
 
mpc8xxx_spi = spi_master_get_devdata(master);
-   mpc8xxx_spi-qe_mode = pdata-qe_mode;
mpc8xxx_spi-get_rx = mpc8xxx_spi_rx_buf_u8;
mpc8xxx_spi-get_tx = mpc8xxx_spi_tx_buf_u8;
+   mpc8xxx_spi-flags = pdata-flags;
mpc8xxx_spi-spibrg = pdata-sysclk;
 
mpc8xxx_spi-rx_shift = 0;
mpc8xxx_spi-tx_shift = 0;
-   if (mpc8xxx_spi-qe_mode) {
+   if (mpc8xxx_spi-flags  SPI_QE_CPU_MODE) {
mpc8xxx_spi-rx_shift = 16;
mpc8xxx_spi-tx_shift = 24;
}
@@ -584,7 +593,7 @@ mpc8xxx_spi_probe(struct device *dev, struct resource *mem, 
unsigned int irq)
 
/* Enable SPI interface */
regval = pdata-initial_spmode | SPMODE_INIT_VAL | SPMODE_ENABLE;
-   if (pdata-qe_mode)
+   if (mpc8xxx_spi-flags  SPI_QE_CPU_MODE)
regval |= SPMODE_OP;
 
mpc8xxx_spi_write_reg(mpc8xxx_spi-base-mode, regval);
@@ -604,9 +613,8 @@ mpc8xxx_spi_probe(struct device *dev, struct resource *mem, 
unsigned int irq)
if (ret  0)
goto unreg_master;
 
-   printk(KERN_INFO
-  %s: MPC8xxx SPI Controller driver at 0x%p (irq = %d)\n,
-  dev_name(dev), mpc8xxx_spi-base, mpc8xxx_spi-irq);
+   dev_info(dev, at 0x%p (irq = %d), %s mode\n, mpc8xxx_spi-base,
+mpc8xxx_spi-irq, mpc8xxx_spi_strmode(mpc8xxx_spi-flags));
 
return master;
 
@@ -797,7 +805,7 @@ static int __devinit of_mpc8xxx_spi_probe(struct of_device 
*ofdev,
 
prop = of_get_property(np, mode, NULL);
if (prop  !strcmp(prop, cpu-qe))
-   pdata-qe_mode = 1;
+   pdata-flags = SPI_QE_CPU_MODE;
 
ret = of_mpc8xxx_spi_get_chipselects(dev);
if (ret)
diff --git a/include/linux/fsl_devices.h b/include/linux/fsl_devices.h
index 43fc95d..39fd946 100644
--- a/include/linux/fsl_devices.h
+++ b/include/linux/fsl_devices.h
@@ -74,7 +74,7 @@ struct spi_device;
 struct fsl_spi_platform_data {
u32 initial_spmode; /* initial SPMODE value */
s16 bus_num;
-   boolqe_mode;
+   unsigned int flags;
/* board specific information */
u16 max_chipselect;
void(*cs_control)(struct spi_device *spi, bool on);
-- 
1.6.3.3