diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-06 02:57:35 +0400 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-06 02:57:35 +0400 | 
| commit | 03c0c29aff7e56b722eb6c47eace222b140d0377 (patch) | |
| tree | 47267a19b523159cf36a050ef3c35f4dbdb33016 /arch/powerpc/sysdev/qe_lib/gpio.c | |
| parent | c60c6a96b7bb0f1f8bb635fdfcf5b592aaf062b4 (diff) | |
| parent | 7fb8f881c54beb05dd4d2c947dada1c636581d87 (diff) | |
| download | linux-03c0c29aff7e56b722eb6c47eace222b140d0377.tar.xz | |
Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6
* 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6: (63 commits)
  of/platform: Register of_platform_drivers with an "of:" prefix
  of/address: Clean up function declarations
  of/spi: call of_register_spi_devices() from spi core code
  of: Provide default of_node_to_nid() implementation.
  of/device: Make of_device_make_bus_id() usable by other code.
  of/irq: Fix endian issues in parsing interrupt specifiers
  of: Fix phandle endian issues
  of/flattree: fix of_flat_dt_is_compatible() to match the full compatible string
  of: remove of_default_bus_ids
  of: make of_find_device_by_node generic
  microblaze: remove references to of_device and to_of_device
  sparc: remove references to of_device and to_of_device
  powerpc: remove references to of_device and to_of_device
  of/device: Replace of_device with platform_device in includes and core code
  of/device: Protect against binding of_platform_drivers to non-OF devices
  of: remove asm/of_device.h
  of: remove asm/of_platform.h
  of/platform: remove all of_bus_type and of_platform_bus_type references
  of: Merge of_platform_bus_type with platform_bus_type
  drivercore/of: Add OF style matching to platform bus
  ...
Fix up trivial conflicts in arch/microblaze/kernel/Makefile due to just
some obj-y removals by the devicetree branch, while the microblaze
updates added a new file.
Diffstat (limited to 'arch/powerpc/sysdev/qe_lib/gpio.c')
| -rw-r--r-- | arch/powerpc/sysdev/qe_lib/gpio.c | 31 | 
1 files changed, 14 insertions, 17 deletions
diff --git a/arch/powerpc/sysdev/qe_lib/gpio.c b/arch/powerpc/sysdev/qe_lib/gpio.c index dc8f8d618074..36bf845df127 100644 --- a/arch/powerpc/sysdev/qe_lib/gpio.c +++ b/arch/powerpc/sysdev/qe_lib/gpio.c @@ -138,8 +138,8 @@ struct qe_pin {  struct qe_pin *qe_pin_request(struct device_node *np, int index)  {  	struct qe_pin *qe_pin; -	struct device_node *gc; -	struct of_gpio_chip *of_gc = NULL; +	struct device_node *gpio_np; +	struct gpio_chip *gc;  	struct of_mm_gpio_chip *mm_gc;  	struct qe_gpio_chip *qe_gc;  	int err; @@ -155,40 +155,40 @@ struct qe_pin *qe_pin_request(struct device_node *np, int index)  	}  	err = of_parse_phandles_with_args(np, "gpios", "#gpio-cells", index, -					  &gc, &gpio_spec); +					  &gpio_np, &gpio_spec);  	if (err) {  		pr_debug("%s: can't parse gpios property\n", __func__);  		goto err0;  	} -	if (!of_device_is_compatible(gc, "fsl,mpc8323-qe-pario-bank")) { +	if (!of_device_is_compatible(gpio_np, "fsl,mpc8323-qe-pario-bank")) {  		pr_debug("%s: tried to get a non-qe pin\n", __func__);  		err = -EINVAL;  		goto err1;  	} -	of_gc = gc->data; -	if (!of_gc) { +	gc = of_node_to_gpiochip(gpio_np); +	if (!gc) {  		pr_debug("%s: gpio controller %s isn't registered\n", -			 np->full_name, gc->full_name); +			 np->full_name, gpio_np->full_name);  		err = -ENODEV;  		goto err1;  	} -	gpio_cells = of_get_property(gc, "#gpio-cells", &size); +	gpio_cells = of_get_property(gpio_np, "#gpio-cells", &size);  	if (!gpio_cells || size != sizeof(*gpio_cells) || -			*gpio_cells != of_gc->gpio_cells) { +			*gpio_cells != gc->of_gpio_n_cells) {  		pr_debug("%s: wrong #gpio-cells for %s\n", -			 np->full_name, gc->full_name); +			 np->full_name, gpio_np->full_name);  		err = -EINVAL;  		goto err1;  	} -	err = of_gc->xlate(of_gc, np, gpio_spec, NULL); +	err = gc->of_xlate(gc, np, gpio_spec, NULL);  	if (err < 0)  		goto err1; -	mm_gc = to_of_mm_gpio_chip(&of_gc->gc); +	mm_gc = to_of_mm_gpio_chip(gc);  	qe_gc = to_qe_gpio_chip(mm_gc);  	spin_lock_irqsave(&qe_gc->lock, flags); @@ -206,7 +206,7 @@ struct qe_pin *qe_pin_request(struct device_node *np, int index)  	if (!err)  		return qe_pin;  err1: -	of_node_put(gc); +	of_node_put(gpio_np);  err0:  	kfree(qe_pin);  	pr_debug("%s failed with status %d\n", __func__, err); @@ -307,7 +307,6 @@ static int __init qe_add_gpiochips(void)  		int ret;  		struct qe_gpio_chip *qe_gc;  		struct of_mm_gpio_chip *mm_gc; -		struct of_gpio_chip *of_gc;  		struct gpio_chip *gc;  		qe_gc = kzalloc(sizeof(*qe_gc), GFP_KERNEL); @@ -319,11 +318,9 @@ static int __init qe_add_gpiochips(void)  		spin_lock_init(&qe_gc->lock);  		mm_gc = &qe_gc->mm_gc; -		of_gc = &mm_gc->of_gc; -		gc = &of_gc->gc; +		gc = &mm_gc->gc;  		mm_gc->save_regs = qe_gpio_save_regs; -		of_gc->gpio_cells = 2;  		gc->ngpio = QE_PIO_PINS;  		gc->direction_input = qe_gpio_dir_in;  		gc->direction_output = qe_gpio_dir_out;  | 
