All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jean Delvare <khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org>
To: Wolfram Sang <w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Cc: i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org
Subject: Re: [PATCHv2 3/3] Add platform driver on top of the new pca-algorithm
Date: Fri, 14 Mar 2008 19:46:28 +0100	[thread overview]
Message-ID: <20080314194628.07630698@hyperion.delvare> (raw)
In-Reply-To: <20080314145010.GA28612-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>

On Fri, 14 Mar 2008 15:50:10 +0100, Wolfram Sang wrote:
> Hello,
> 
> I sent this patch to myself a minute ago and could apply it. Dunno what went
> wrong the last time. I am very sorry (I know that patch fixing is
> annoying).
> 
> All the best,
> 
>    Wolfram
> 
> ---
> 
> Subject: Add platform driver on top of the new pca-algorithm
> From: Wolfram Sang <w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
> 
> Changes since last revision:
>  - use <linux/gpio.h> and remove #ifdefs CONFIG_GENERIC_GPIO
>  - correct reference to gpio_is_valid()
>  - register and setup gpio in the driver
>  - just print whole lines with printk
>  - removed warnings
> 
> Signed-off-by: Wolfram Sang <w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
> ---
> 
> Changes since last revision:
>  - check against CONFIG_GENERIC_GPIO (was GENERIC_GPIO :( )
>  - don't use platform data anymore, copy all over to own struct
>  - give info about mem & irq when booting (and switch to printk
>    as device is not yet registered)
>  - add comment about problems with polling
>  - added proper __devinit and __devexit
>  - added owner to module
>  - removed whitespace alignment in code
>  - driver now named "i2c-pca-platform" (as the module)
>  - fixed typos in Kconfig
> 
> Signed-off-by: Wolfram Sang <w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
> ---
> 
> Tested on a blackfin.
> 
> Signed-off-by: Wolfram Sang <w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
> 
> ---
>  drivers/i2c/busses/Kconfig            |   15 +
>  drivers/i2c/busses/Makefile           |    1 
>  drivers/i2c/busses/i2c-pca-platform.c |  298 ++++++++++++++++++++++++++++++++++
>  include/linux/i2c-pca-platform.h      |   12 +
>  4 files changed, 324 insertions(+), 2 deletions(-)
> 
> Index: linux-playground/drivers/i2c/busses/i2c-pca-platform.c
> ===================================================================
> --- /dev/null	1970-01-01 00:00:00.000000000 +0000
> +++ linux-playground/drivers/i2c/busses/i2c-pca-platform.c	2008-03-14 14:45:34.000000000 +0100
> (...)
> +static int __devinit i2c_pca_pf_probe(struct platform_device *pdev)
> +{
> +	struct i2c_pca_pf_data *i2c;
> +	struct resource *res;
> +	struct i2c_pca9564_pf_platform_data *platform_data =
> +				pdev->dev.platform_data;
> +	int ret = 0;
> +	int irq;
> +
> +	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> +	irq = platform_get_irq(pdev, 0);
> +	/* If irq is 0, we do polling. */
> +
> +	if (res == NULL) {
> +		ret = -ENODEV;
> +		goto e_print;
> +	}
> +
> +	if (!request_mem_region(res->start, res_len(res), res->name)) {
> +		ret = -ENOMEM;
> +		goto e_print;
> +	}
> +
> +	i2c = kzalloc(sizeof(struct i2c_pca_pf_data), GFP_KERNEL);
> +	if (!i2c) {
> +		ret = -ENOMEM;
> +		goto e_alloc;
> +	}
> +
> +	init_waitqueue_head(&i2c->wait);
> +
> +	i2c->reg_base = ioremap(res->start, res_len(res));
> +	if (!i2c->reg_base) {
> +		ret = -EIO;
> +		goto e_remap;
> +	}
> +	i2c->io_base = res->start;
> +	i2c->io_size = res_len(res);
> +	i2c->irq = irq;
> +
> +	i2c->adap.nr = pdev->id >= 0 ? pdev->id : 0;
> +	i2c->adap.owner = THIS_MODULE;
> +	snprintf(i2c->adap.name, sizeof(i2c->adap.name), "PCA9564 at 0x%08lx",
> +		(unsigned long) res->start);
> +	i2c->adap.algo_data = &i2c->algo_data;
> +	i2c->adap.dev.parent = &pdev->dev;
> +	i2c->adap.timeout = platform_data->timeout;
> +
> +	i2c->algo_data.i2c_clock = platform_data->i2c_clock_speed;
> +	i2c->algo_data.data = i2c;
> +
> +	switch (res->flags & IORESOURCE_MEM_TYPE_MASK) {
> +	case IORESOURCE_MEM_32BIT:
> +		i2c->algo_data.write_byte = i2c_pca_pf_writebyte32;
> +		i2c->algo_data.read_byte = i2c_pca_pf_readbyte32;
> +		break;
> +	case IORESOURCE_MEM_16BIT:
> +		i2c->algo_data.write_byte = i2c_pca_pf_writebyte16;
> +		i2c->algo_data.read_byte = i2c_pca_pf_readbyte16;
> +		break;
> +	case IORESOURCE_MEM_8BIT:
> +	default:
> +		i2c->algo_data.write_byte = i2c_pca_pf_writebyte8;
> +		i2c->algo_data.read_byte = i2c_pca_pf_readbyte8;
> +		break;
> +	}
> +
> +	i2c->algo_data.wait_for_completion = i2c_pca_pf_waitforcompletion;
> +
> +

No double blank lines inside functions please (they confuse patch too
easily.)

> +	i2c->gpio = platform_data->gpio;
> +	i2c->algo_data.reset_chip = i2c_pca_pf_dummyreset;
> +
> +	/* Use gpio_is_valid() when in mainline */
> +	if (i2c->gpio > -1)
> +		ret = gpio_request(i2c->gpio, i2c->adap.name);
> +		if (ret == 0) {
> +			gpio_direction_output(i2c->gpio, 1);
> +			i2c->algo_data.reset_chip = i2c_pca_pf_resetchip;
> +		} else {
> +			printk(KERN_WARNING "%s: Registering gpio failed!\n",
> +				i2c->adap.name);
> +			i2c->gpio = ret;
> +		}

You're missing curly braces around this block, aren't you?

> +
> +	if (irq) {
> +		ret = request_irq(irq, i2c_pca_pf_handler,
> +			IRQF_TRIGGER_FALLING, i2c->adap.name, i2c);
> +		if (ret)
> +			goto e_reqirq;
> +	}
> +
> +	if (i2c_pca_add_numbered_bus(&i2c->adap) < 0) {
> +		ret = -ENODEV;
> +		goto e_adapt;
> +	}
> +
> +	platform_set_drvdata(pdev, i2c);
> +
> +	printk(KERN_INFO "%s registered.\n", i2c->adap.name);
> +
> +	return 0;
> +
> +e_adapt:
> +	if (irq)
> +		free_irq(irq, i2c);
> +e_reqirq:
> +	if (i2c->gpio > -1)
> +		gpio_free(i2c->gpio);
> +
> +	iounmap(i2c->reg_base);
> +e_remap:
> +	kfree(i2c);
> +e_alloc:
> +	release_mem_region(res->start, res_len(res));
> +e_print:
> +	printk(KERN_ERR "Registering PCA9564 FAILED! (%d)\n", ret);
> +	return ret;
> +}

The rest looks OK, so I can fix this myself and queue up your patch for
2.6.26.

Thanks,
-- 
Jean Delvare

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

  parent reply	other threads:[~2008-03-14 18:46 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-06 20:20 [PATCHv2 0/3] PCA9564 platform driver Wolfram Sang
2008-02-06 20:20 ` [PATCHv2 1/3] Remove trailing whitespaces and unnecessary UTF Wolfram Sang
     [not found]   ` <20080206203036.394734224-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2008-02-12 16:31     ` Jean Delvare
2008-02-06 20:20 ` [PATCHv2 2/3] Extend the PCA9564-algorithm and adapt its only user (pca-isa) Wolfram Sang
     [not found]   ` <20080206203036.863518353-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2008-02-12 17:14     ` Jean Delvare
2008-02-06 20:20 ` [PATCHv2 3/3] Add platform driver on top of the new pca-algorithm Wolfram Sang
     [not found]   ` <20080206203037.228001815-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2008-02-12 21:53     ` Jean Delvare
     [not found]       ` <20080212225306.4cf2bd74-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-03-07 15:52         ` Wolfram Sang
2008-03-08 10:13           ` Jean Delvare
     [not found]             ` <20080308111337.440a7c83-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-03-10 11:26               ` Wolfram Sang
     [not found]                 ` <20080310112640.GB12128-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2008-03-10 21:31                   ` Jean Delvare
     [not found]                     ` <20080310223116.73277c4f-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-03-14 14:50                       ` Wolfram Sang
     [not found]                         ` <20080314145010.GA28612-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2008-03-14 18:46                           ` Jean Delvare [this message]
     [not found]                             ` <20080314194628.07630698-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-03-16 14:28                               ` Wolfram Sang
     [not found]                                 ` <20080316142834.GA4485-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2008-03-16 15:44                                   ` Jean Delvare
     [not found]                                     ` <20080316164457.19157e0c-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-03-16 19:55                                       ` Trent Piepho
2008-03-12 10:43                   ` Jean Delvare

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=20080314194628.07630698@hyperion.delvare \
    --to=khali-puyad+kwke1g9huczpvpmw@public.gmane.org \
    --cc=i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org \
    --cc=w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@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.