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 |
signature.asc
Description: Digital signature
_______________________________________________ Socketcan-core mailing list [email protected] https://lists.berlios.de/mailman/listinfo/socketcan-core
