On Fri, Oct 02, 2009 at 05:32:04PM +0200, Kurt Van Dijck wrote:
> This patch translates the 'generic sja1000' enable() calls
> into platform_device hooks.
> 
> Signed-off-by: Kurt Van Dijck <[email protected]>
> ---
> Index: include/linux/can/platform/sja1000.h
> ===================================================================
> --- include/linux/can/platform/sja1000.h      (revision 1066)
> +++ include/linux/can/platform/sja1000.h      (working copy)
> @@ -25,11 +25,20 @@
>  #define OCR_TX_MASK       0xfc
>  #define OCR_TX_SHIFT      2
>  
> +#include <linux/platform_device.h>
> +
>  struct sja1000_platform_data {
>       u32 clock;      /* CAN bus oscillator frequency in Hz */
>  
>       u8 ocr;         /* output control register */
>       u8 cdr;         /* clock divider register */
> +     /*

Asterisks.

> +      * enable function pointer:
> +      * @pdev        : the platform_device, parent of the net_device
> +      * @active      : 1 = enable, 0 = disable
> +      * @returns     : 0 or -error
> +      */
> +     int (*enable)(struct platform_device *pdev, int active);
>  };
>  
>  #endif       /* !_CAN_PLATFORM_SJA1000_H_ */
> Index: include/socketcan/can/platform/sja1000.h
> ===================================================================
> --- include/socketcan/can/platform/sja1000.h  (revision 1066)
> +++ include/socketcan/can/platform/sja1000.h  (working copy)
> @@ -25,11 +25,20 @@
>  #define OCR_TX_MASK       0xfc
>  #define OCR_TX_SHIFT      2
>  
> +#include <linux/platform_device.h>
> +
>  struct sja1000_platform_data {
>       u32 clock;      /* CAN bus oscillator frequency in Hz */
>  
>       u8 ocr;         /* output control register */
>       u8 cdr;         /* clock divider register */
> +     /*
> +      * enable function pointer:
> +      * @pdev        : the platform_device, parent of the net_device
> +      * @active      : 1 = enable, 0 = disable
> +      * @returns     : 0 or -error
> +      */
> +     int (*enable)(struct platform_device *pdev, int active);
>  };
>  
>  #endif       /* !_CAN_PLATFORM_SJA1000_H_ */
> Index: drivers/net/can/sja1000/sja1000_platform.c
> ===================================================================
> --- drivers/net/can/sja1000/sja1000_platform.c        (revision 1066)
> +++ drivers/net/can/sja1000/sja1000_platform.c        (working copy)
> @@ -42,6 +42,12 @@
>  MODULE_DESCRIPTION("Socket-CAN driver for SJA1000 on the platform bus");
>  MODULE_LICENSE("GPL v2");
>  
> +static int sp_enable(struct device *dev, int enable)
> +{
> +     struct sja1000_platform_data *pdata = dev->platform_data;
> +     return pdata->enable(to_platform_device(dev), enable);
> +}
> +
>  static u8 sp_read_reg(const struct sja1000_priv *priv, int reg)
>  {
>       return ioread8(priv->reg_base + reg);
> @@ -102,6 +108,12 @@
>       priv->can.clock.freq = pdata->clock;
>       priv->ocr = pdata->ocr;
>       priv->cdr = pdata->cdr;
> +     /*
> +      * assign (local) enable function
> +      * only when platform_data had it defined too
> +      */
> +     if (pdata->enable)
> +             priv->enable = sp_enable;
>  
>       dev_set_drvdata(&pdev->dev, dev);
>       SET_NETDEV_DEV(dev, &pdev->dev);
> _______________________________________________
> Socketcan-core mailing list
> [email protected]
> https://lists.berlios.de/mailman/listinfo/socketcan-core

-- 
Pengutronix e.K.                           | Wolfram Sang                |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-5064 |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Socketcan-core mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/socketcan-core

Reply via email to