public inbox for linux-i2c@vger.kernel.org
 help / color / mirror / Atom feed
From: Riku Voipio <riku.voipio-WgUW+8SLYMv1KXRcyAk9cg@public.gmane.org>
To: Jean Delvare <khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org>
Cc: David Brownell <david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>,
	Linux I2C <i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org>
Subject: Re: [PATCH 3/4] i2c: Use i2c_listener in driver f75375s
Date: Thu, 05 Jun 2008 11:33:38 +0300	[thread overview]
Message-ID: <4847A4E2.9040406@movial.fi> (raw)
In-Reply-To: <20080604203322.472f8653-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>

Jean Delvare wrote:
> Replace the legacy f75375s i2c_driver by an i2c_listener.
>
> Signed-off-by: Jean Delvare <khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org>
> ---
> Riku, any chance you could test this one? Thanks.
>   
I can test that the new style driver still works after these tests,
but I don't have testing if the driver still works  in
cases were f75375_legacy driver used to work (which I guess is what
you are interested in) is tricker. I do however like the concept.
>  drivers/hwmon/f75375s.c |   67 +++++++++--------------------------------------
>  1 file changed, 14 insertions(+), 53 deletions(-)
>
> --- linux-2.6.26-rc4.orig/drivers/hwmon/f75375s.c	2008-05-04 09:49:47.000000000 +0200
> +++ linux-2.6.26-rc4/drivers/hwmon/f75375s.c	2008-06-04 11:32:22.000000000 +0200
> @@ -114,19 +114,16 @@ struct f75375_data {
>  	s8 temp_max_hyst[2];
>  };
>  
> -static int f75375_attach_adapter(struct i2c_adapter *adapter);
> -static int f75375_detect(struct i2c_adapter *adapter, int address, int kind);
> -static int f75375_detach_client(struct i2c_client *client);
> +static int f75375_detect(struct i2c_adapter *adapter, int address, int kind,
> +			 struct i2c_board_info *info);
>  static int f75375_probe(struct i2c_client *client,
>  			const struct i2c_device_id *id);
>  static int f75375_remove(struct i2c_client *client);
>  
> -static struct i2c_driver f75375_legacy_driver = {
> -	.driver = {
> -		.name = "f75375_legacy",
> -	},
> -	.attach_adapter = f75375_attach_adapter,
> -	.detach_client = f75375_detach_client,
> +static struct i2c_listener f75375_listener = {
> +	.class		= I2C_CLASS_HWMON,
> +	.address_data	= &addr_data,
> +	.detect		= f75375_detect,
>  };
>  
>  static const struct i2c_device_id f75375_id[] = {
> @@ -607,22 +604,6 @@ static const struct attribute_group f753
>  	.attrs = f75375_attributes,
>  };
>  
> -static int f75375_detach_client(struct i2c_client *client)
> -{
> -	int err;
> -
> -	f75375_remove(client);
> -	err = i2c_detach_client(client);
> -	if (err) {
> -		dev_err(&client->dev,
> -			"Client deregistration failed, "
> -			"client not detached.\n");
> -		return err;
> -	}
> -	kfree(client);
> -	return 0;
> -}
> -
>  static void f75375_init(struct i2c_client *client, struct f75375_data *data,
>  		struct f75375s_platform_data *f75375s_pdata)
>  {
> @@ -700,21 +681,14 @@ static int f75375_remove(struct i2c_clie
>  	return 0;
>  }
>  
> -static int f75375_attach_adapter(struct i2c_adapter *adapter)
> -{
> -	if (!(adapter->class & I2C_CLASS_HWMON))
> -		return 0;
> -	return i2c_probe(adapter, &addr_data, f75375_detect);
> -}
> -
>  /* This function is called by i2c_probe */
> -static int f75375_detect(struct i2c_adapter *adapter, int address, int kind)
> +static int f75375_detect(struct i2c_adapter *adapter, int address, int kind,
> +			 struct i2c_board_info *info)
>  {
>  	struct i2c_client *client;
>  	u8 version = 0;
> -	int err = 0;
> +	int err = -ENODEV;
>  	const char *name = "";
> -	struct i2c_device_id id;
>  
>  	if (!(client = kzalloc(sizeof(*client), GFP_KERNEL))) {
>  		err = -ENOMEM;
> @@ -722,7 +696,6 @@ static int f75375_detect(struct i2c_adap
>  	}
>  	client->addr = address;
>  	client->adapter = adapter;
> -	client->driver = &f75375_legacy_driver;
>  
>  	if (kind < 0) {
>  		u16 vendid = f75375_read16(client, F75375_REG_VENDOR);
> @@ -739,6 +712,7 @@ static int f75375_detect(struct i2c_adap
>  			goto exit_free;
>  		}
>  	}
> +	err = 0;	/* detection OK */
>  
>  	if (kind == f75375) {
>  		name = "f75375";
> @@ -746,20 +720,9 @@ static int f75375_detect(struct i2c_adap
>  		name = "f75373";
>  	}
>  	dev_info(&adapter->dev, "found %s version: %02X\n", name, version);
> -	strlcpy(client->name, name, I2C_NAME_SIZE);
> -
> -	if ((err = i2c_attach_client(client)))
> -		goto exit_free;
> -
> -	strlcpy(id.name, name, I2C_NAME_SIZE);
> -	id.driver_data = kind;
> -	if ((err = f75375_probe(client, &id)) < 0)
> -		goto exit_detach;
> +	strlcpy(info->type, name, I2C_NAME_SIZE);
> +	info->addr = address;
>  
> -	return 0;
> -
> -exit_detach:
> -	i2c_detach_client(client);
>  exit_free:
>  	kfree(client);
>  exit:
> @@ -773,16 +736,14 @@ static int __init sensors_f75375_init(vo
>  	if (status)
>  		return status;
>  
> -	status = i2c_add_driver(&f75375_legacy_driver);
> -	if (status)
> -		i2c_del_driver(&f75375_driver);
> +	i2c_add_listener(&f75375_listener);
>  
>  	return status;
>  }
>  
>  static void __exit sensors_f75375_exit(void)
>  {
> -	i2c_del_driver(&f75375_legacy_driver);
> +	i2c_del_listener(&f75375_listener);
>  	i2c_del_driver(&f75375_driver);
>  }
>  
>
>   


_______________________________________________
i2c mailing list
i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org
http://lists.lm-sensors.org/mailman/listinfo/i2c

  parent reply	other threads:[~2008-06-05  8:33 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-04 18:13 [PATCH 0/4] i2c: Introduce i2c listeners Jean Delvare
     [not found] ` <20080604201334.19636f30-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-06-04 18:18   ` [PATCH 1/4] " Jean Delvare
2008-06-04 18:31   ` [PATCH 2/4] i2c: Convert the lm90 driver to a new-style i2c driver Jean Delvare
2008-06-04 18:33   ` [PATCH 3/4] i2c: Use i2c_listener in driver f75375s Jean Delvare
     [not found]     ` <20080604203322.472f8653-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-06-05  8:33       ` Riku Voipio [this message]
     [not found]         ` <4847A4E2.9040406-WgUW+8SLYMv1KXRcyAk9cg@public.gmane.org>
2008-06-05  9:06           ` Jean Delvare
     [not found]             ` <20080605110659.3456fbe4-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-06-06 10:21               ` Riku Voipio
     [not found]                 ` <48490FA3.8020702-WgUW+8SLYMv1KXRcyAk9cg@public.gmane.org>
2008-06-06 11:38                   ` Jean Delvare
2008-06-04 18:35   ` [PATCH 4/4] i2c: Use i2c_listener in driver lm75 Jean Delvare
2008-06-04 18:55   ` [PATCH 0/4] i2c: Introduce i2c listeners Jon Smirl
     [not found]     ` <9e4733910806041155n7551ac74lf29c8a32163ec09a-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-06-04 19:28       ` Jon Smirl
     [not found]         ` <9e4733910806041228i330e145q439d3ee43494f4c4-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-06-04 21:33           ` Jean Delvare
     [not found]             ` <20080604233335.13459512-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-06-04 23:11               ` Jon Smirl
     [not found]                 ` <9e4733910806041611l41832e07p4f55424be0ef5ea0-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-06-05  0:10                   ` David Brownell
     [not found]                     ` <200806041710.59338.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-06-05  0:42                       ` Jon Smirl
     [not found]                         ` <9e4733910806041742va67401en608c8c4b8c4c11b9-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-06-05  2:21                           ` David Brownell
     [not found]                             ` <200806041921.26293.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-06-05  4:04                               ` Jon Smirl
     [not found]                                 ` <9e4733910806042104l70cf8a30sc6329b1c3016c879-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-06-05  8:18                                   ` David Brownell
     [not found]                                     ` <200806050118.23706.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-06-05 14:55                                       ` Jon Smirl
     [not found]                                         ` <9e4733910806050755n3835d20xfc4d018c2222d5d3-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-06-05 17:00                                           ` Jean Delvare
     [not found]                                             ` <20080605190034.16f06604-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-06-05 17:34                                               ` Jon Smirl
     [not found]                                                 ` <9e4733910806051034k2e40082focaaa03b124fcd4ad-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-06-05 18:29                                                   ` Jean Delvare
2008-06-05  8:49                                   ` Jean Delvare
     [not found]                                     ` <20080605104914.2dd622b2-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-06-05 14:30                                       ` Jon Smirl
2008-06-05  8:38                           ` Jean Delvare
2008-06-05  9:05                   ` Jean Delvare
     [not found]                     ` <20080605110502.76f0f606-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-06-05 14:59                       ` Jon Smirl
2008-06-05  0:03               ` Trent Piepho
     [not found]                 ` <Pine.LNX.4.58.0806041638080.10290-13q4cmjDBaTP3RPoUHIrnuTW4wlIGRCZ@public.gmane.org>
2008-06-05  0:27                   ` David Brownell
     [not found]                     ` <200806041727.51746.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-06-05  0:40                       ` Trent Piepho
     [not found]                         ` <Pine.LNX.4.58.0806041731250.10290-13q4cmjDBaTP3RPoUHIrnuTW4wlIGRCZ@public.gmane.org>
2008-06-05  2:14                           ` David Brownell
     [not found]                             ` <200806041914.27291.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-06-05  7:08                               ` Trent Piepho
     [not found]                                 ` <Pine.LNX.4.58.0806042349251.10290-13q4cmjDBaTP3RPoUHIrnuTW4wlIGRCZ@public.gmane.org>
2008-06-05  8:15                                   ` David Brownell
2008-06-05  8:16                           ` Jean Delvare
2008-06-05  0:45                       ` Jon Smirl
2008-06-04 21:12       ` Jean Delvare
2008-06-06  2:47   ` David Brownell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4847A4E2.9040406@movial.fi \
    --to=riku.voipio-wguw+8slymv1kxrcyak9cg@public.gmane.org \
    --cc=david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org \
    --cc=i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org \
    --cc=khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox