Re: [RFC PATCH 1/4] retu-mfd: support also Tahvo

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Thu, Mar 07, 2013 at 04:40:18PM +0200, Aaro Koskinen wrote:
> Tahvo is a multi-function device on Nokia 770, implementing USB
> transceiver and charge/battery control.
> 
> It's so close to Retu that a single driver can support both.
> 
> Signed-off-by: Aaro Koskinen <aaro.koskinen@xxxxxx>
> Cc: Samuel Ortiz <sameo@xxxxxxxxxxxxxxx>
> ---
>  drivers/mfd/Kconfig      |    6 +--
>  drivers/mfd/retu-mfd.c   |   95 +++++++++++++++++++++++++++++++++++++++-------
>  include/linux/mfd/retu.h |    8 +++-
>  3 files changed, 92 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> index 671f5b1..0c3bdae 100644
> --- a/drivers/mfd/Kconfig
> +++ b/drivers/mfd/Kconfig
> @@ -1101,13 +1101,13 @@ config MFD_VIPERBOARD
>  	  The drivers do not support all features the board exposes.
>  
>  config MFD_RETU
> -	tristate "Support for Retu multi-function device"
> +	tristate "Support for Retu and Tahvo multi-function devices"
>  	select MFD_CORE
>  	depends on I2C && GENERIC_HARDIRQS
>  	select REGMAP_IRQ
>  	help
> -	  Retu is a multi-function device found on Nokia Internet Tablets
> -	  (770, N800 and N810).
> +	  Retu and Tahvo are multi-function devices found on Nokia
> +	  Internet Tablets (770, N800 and N810).
>  
>  config MFD_AS3711
>  	bool "Support for AS3711"
> diff --git a/drivers/mfd/retu-mfd.c b/drivers/mfd/retu-mfd.c
> index 3ba0486..fa0204b 100644
> --- a/drivers/mfd/retu-mfd.c
> +++ b/drivers/mfd/retu-mfd.c
> @@ -1,5 +1,5 @@
>  /*
> - * Retu MFD driver
> + * Retu/Tahvo MFD driver
>   *
>   * Copyright (C) 2004, 2005 Nokia Corporation
>   *
> @@ -29,11 +29,15 @@
>  #include <linux/interrupt.h>
>  #include <linux/moduleparam.h>
>  
> +#define RETU_ID			0
> +#define TAHVO_ID		1

do you really need this ? Why didn't you use the i2c address as the
device ID ?

> @@ -173,9 +233,13 @@ static struct regmap_config retu_config = {
>  
>  static int retu_probe(struct i2c_client *i2c, const struct i2c_device_id *id)
>  {
> +	int chip = id->driver_data;
>  	struct retu_dev *rdev;
>  	int ret;
>  
> +	if (chip >= ARRAY_SIZE(retu_data))
> +		return -EINVAL;

you can figure this out without using 'chip'. Just use the i2c address.

-- 
balbi

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux