Patchwork mpc52xx_psc_spi: Convert to cs_control callback

login
register
mail settings
Submitter Anton Vorontsov
Date April 30, 2009, 10:31 p.m.
Message ID <20090430223114.GA12571@oksana.dev.rtsoft.ru>
Download mbox | patch
Permalink /patch/26706/
State Accepted, archived
Delegated to: Grant Likely
Headers show

Comments

Anton Vorontsov - April 30, 2009, 10:31 p.m.
mpc52xx_psc_spi driver is the last user of the legacy activate_cs
and deactivate_cs callbacks, so convert the driver to the cs_control
hook and remove the legacy callbacks from fsl_spi_platform_data
struct.

Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
---
 drivers/spi/mpc52xx_psc_spi.c |   22 +++++++++-------------
 include/linux/fsl_devices.h   |    4 ----
 2 files changed, 9 insertions(+), 17 deletions(-)
Grant Likely - May 22, 2009, 5:07 a.m.
On Thu, Apr 30, 2009 at 4:31 PM, Anton Vorontsov
<avorontsov@ru.mvista.com> wrote:
> mpc52xx_psc_spi driver is the last user of the legacy activate_cs
> and deactivate_cs callbacks, so convert the driver to the cs_control
> hook and remove the legacy callbacks from fsl_spi_platform_data
> struct.
>
> Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
Acked-by: Grant Likely <grant.likely@secretlab.ca>

David, will you pick this one up, or can I put it into Ben's powerpc
-next tree (since it is a powerpc-only device driver).

g.

> ---
>  drivers/spi/mpc52xx_psc_spi.c |   22 +++++++++-------------
>  include/linux/fsl_devices.h   |    4 ----
>  2 files changed, 9 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/spi/mpc52xx_psc_spi.c b/drivers/spi/mpc52xx_psc_spi.c
> index 68c77a9..e1901fd 100644
> --- a/drivers/spi/mpc52xx_psc_spi.c
> +++ b/drivers/spi/mpc52xx_psc_spi.c
> @@ -13,6 +13,7 @@
>
>  #include <linux/module.h>
>  #include <linux/init.h>
> +#include <linux/types.h>
>  #include <linux/errno.h>
>  #include <linux/interrupt.h>
>  #include <linux/of_platform.h>
> @@ -30,8 +31,7 @@
>
>  struct mpc52xx_psc_spi {
>        /* fsl_spi_platform data */
> -       void (*activate_cs)(u8, u8);
> -       void (*deactivate_cs)(u8, u8);
> +       void (*cs_control)(struct spi_device *spi, bool on);
>        u32 sysclk;
>
>        /* driver internal data */
> @@ -111,18 +111,16 @@ static void mpc52xx_psc_spi_activate_cs(struct spi_device *spi)
>        out_be16((u16 __iomem *)&psc->ccr, ccr);
>        mps->bits_per_word = cs->bits_per_word;
>
> -       if (mps->activate_cs)
> -               mps->activate_cs(spi->chip_select,
> -                               (spi->mode & SPI_CS_HIGH) ? 1 : 0);
> +       if (mps->cs_control)
> +               mps->cs_control(spi, (spi->mode & SPI_CS_HIGH) ? 1 : 0);
>  }
>
>  static void mpc52xx_psc_spi_deactivate_cs(struct spi_device *spi)
>  {
>        struct mpc52xx_psc_spi *mps = spi_master_get_devdata(spi->master);
>
> -       if (mps->deactivate_cs)
> -               mps->deactivate_cs(spi->chip_select,
> -                               (spi->mode & SPI_CS_HIGH) ? 1 : 0);
> +       if (mps->cs_control)
> +               mps->cs_control(spi, (spi->mode & SPI_CS_HIGH) ? 0 : 1);
>  }
>
>  #define MPC52xx_PSC_BUFSIZE (MPC52xx_PSC_RFNUM_MASK + 1)
> @@ -388,15 +386,13 @@ static int __init mpc52xx_psc_spi_do_probe(struct device *dev, u32 regaddr,
>        mps->irq = irq;
>        if (pdata == NULL) {
>                dev_warn(dev, "probe called without platform data, no "
> -                               "(de)activate_cs function will be called\n");
> -               mps->activate_cs = NULL;
> -               mps->deactivate_cs = NULL;
> +                               "cs_control function will be called\n");
> +               mps->cs_control = NULL;
>                mps->sysclk = 0;
>                master->bus_num = bus_num;
>                master->num_chipselect = 255;
>        } else {
> -               mps->activate_cs = pdata->activate_cs;
> -               mps->deactivate_cs = pdata->deactivate_cs;
> +               mps->cs_control = pdata->cs_control;
>                mps->sysclk = pdata->sysclk;
>                master->bus_num = pdata->bus_num;
>                master->num_chipselect = pdata->max_chipselect;
> diff --git a/include/linux/fsl_devices.h b/include/linux/fsl_devices.h
> index 244677c..43fc95d 100644
> --- a/include/linux/fsl_devices.h
> +++ b/include/linux/fsl_devices.h
> @@ -79,10 +79,6 @@ struct fsl_spi_platform_data {
>        u16     max_chipselect;
>        void    (*cs_control)(struct spi_device *spi, bool on);
>        u32     sysclk;
> -
> -       /* Legacy hooks, used by mpc52xx_psc_spi driver. */
> -       void    (*activate_cs)(u8 cs, u8 polarity);
> -       void    (*deactivate_cs)(u8 cs, u8 polarity);
>  };
>
>  struct mpc8xx_pcmcia_ops {
> --
> 1.6.2.2
>

Patch

diff --git a/drivers/spi/mpc52xx_psc_spi.c b/drivers/spi/mpc52xx_psc_spi.c
index 68c77a9..e1901fd 100644
--- a/drivers/spi/mpc52xx_psc_spi.c
+++ b/drivers/spi/mpc52xx_psc_spi.c
@@ -13,6 +13,7 @@ 
 
 #include <linux/module.h>
 #include <linux/init.h>
+#include <linux/types.h>
 #include <linux/errno.h>
 #include <linux/interrupt.h>
 #include <linux/of_platform.h>
@@ -30,8 +31,7 @@ 
 
 struct mpc52xx_psc_spi {
 	/* fsl_spi_platform data */
-	void (*activate_cs)(u8, u8);
-	void (*deactivate_cs)(u8, u8);
+	void (*cs_control)(struct spi_device *spi, bool on);
 	u32 sysclk;
 
 	/* driver internal data */
@@ -111,18 +111,16 @@  static void mpc52xx_psc_spi_activate_cs(struct spi_device *spi)
 	out_be16((u16 __iomem *)&psc->ccr, ccr);
 	mps->bits_per_word = cs->bits_per_word;
 
-	if (mps->activate_cs)
-		mps->activate_cs(spi->chip_select,
-				(spi->mode & SPI_CS_HIGH) ? 1 : 0);
+	if (mps->cs_control)
+		mps->cs_control(spi, (spi->mode & SPI_CS_HIGH) ? 1 : 0);
 }
 
 static void mpc52xx_psc_spi_deactivate_cs(struct spi_device *spi)
 {
 	struct mpc52xx_psc_spi *mps = spi_master_get_devdata(spi->master);
 
-	if (mps->deactivate_cs)
-		mps->deactivate_cs(spi->chip_select,
-				(spi->mode & SPI_CS_HIGH) ? 1 : 0);
+	if (mps->cs_control)
+		mps->cs_control(spi, (spi->mode & SPI_CS_HIGH) ? 0 : 1);
 }
 
 #define MPC52xx_PSC_BUFSIZE (MPC52xx_PSC_RFNUM_MASK + 1)
@@ -388,15 +386,13 @@  static int __init mpc52xx_psc_spi_do_probe(struct device *dev, u32 regaddr,
 	mps->irq = irq;
 	if (pdata == NULL) {
 		dev_warn(dev, "probe called without platform data, no "
-				"(de)activate_cs function will be called\n");
-		mps->activate_cs = NULL;
-		mps->deactivate_cs = NULL;
+				"cs_control function will be called\n");
+		mps->cs_control = NULL;
 		mps->sysclk = 0;
 		master->bus_num = bus_num;
 		master->num_chipselect = 255;
 	} else {
-		mps->activate_cs = pdata->activate_cs;
-		mps->deactivate_cs = pdata->deactivate_cs;
+		mps->cs_control = pdata->cs_control;
 		mps->sysclk = pdata->sysclk;
 		master->bus_num = pdata->bus_num;
 		master->num_chipselect = pdata->max_chipselect;
diff --git a/include/linux/fsl_devices.h b/include/linux/fsl_devices.h
index 244677c..43fc95d 100644
--- a/include/linux/fsl_devices.h
+++ b/include/linux/fsl_devices.h
@@ -79,10 +79,6 @@  struct fsl_spi_platform_data {
 	u16	max_chipselect;
 	void	(*cs_control)(struct spi_device *spi, bool on);
 	u32	sysclk;
-
-	/* Legacy hooks, used by mpc52xx_psc_spi driver. */
-	void	(*activate_cs)(u8 cs, u8 polarity);
-	void	(*deactivate_cs)(u8 cs, u8 polarity);
 };
 
 struct mpc8xx_pcmcia_ops {