All of lore.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.