Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 391c970c authored by Anton Vorontsov's avatar Anton Vorontsov Committed by Grant Likely
Browse files

of/gpio: add default of_xlate function if device has a node pointer



Implement generic OF gpio hooks and thus make device-enabled GPIO chips
(i.e.  the ones that have gpio_chip->dev specified) automatically attach
to the OpenFirmware subsystem.  Which means that now we can handle I2C and
SPI GPIO chips almost* transparently.

* "Almost" because some chips still require platform data, and for these
  chips OF-glue is still needed, though with this change the glue will
  be much smaller.

Signed-off-by: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
Cc: David Brownell <dbrownell@users.sourceforge.net>
Cc: Bill Gatliff <bgat@billgatliff.com>
Cc: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Jean Delvare <khali@linux-fr.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
CC: linux-kernel@vger.kernel.org
CC: devicetree-discuss@lists.ozlabs.org
parent 594fa265
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -161,7 +161,6 @@ static int __devinit mpc52xx_wkup_gpiochip_probe(struct of_device *ofdev,

	gc = &chip->mmchip.gc;

	gc->of_gpio_n_cells  = 2;
	gc->ngpio            = 8;
	gc->direction_input  = mpc52xx_wkup_gpio_dir_in;
	gc->direction_output = mpc52xx_wkup_gpio_dir_out;
@@ -325,7 +324,6 @@ static int __devinit mpc52xx_simple_gpiochip_probe(struct of_device *ofdev,

	gc = &chip->mmchip.gc;

	gc->of_gpio_n_cells  = 2;
	gc->ngpio            = 32;
	gc->direction_input  = mpc52xx_simple_gpio_dir_in;
	gc->direction_output = mpc52xx_simple_gpio_dir_out;
+0 −3
Original line number Diff line number Diff line
@@ -348,10 +348,7 @@ mpc52xx_gpt_gpio_setup(struct mpc52xx_gpt_priv *gpt, struct device_node *node)
	gpt->gc.get = mpc52xx_gpt_gpio_get;
	gpt->gc.set = mpc52xx_gpt_gpio_set;
	gpt->gc.base = -1;
	gpt->gc.of_gpio_n_cells = 2;
	gpt->gc.of_xlate = of_gpio_simple_xlate;
	gpt->gc.of_node = node;
	of_node_get(node);

	/* Setup external pin in GPIO mode */
	clrsetbits_be32(&gpt->regs->mode, MPC52xx_GPT_MODE_MS_MASK,
+0 −2
Original line number Diff line number Diff line
@@ -90,8 +90,6 @@ static int mcu_gpiochip_add(struct mcu *mcu)
	gc->base = -1;
	gc->set = mcu_gpio_set;
	gc->direction_output = mcu_gpio_dir_out;
	gc->of_gpio_n_cells = 2;
	gc->of_xlate = of_gpio_simple_xlate;
	gc->of_node = np;

	return gpiochip_add(gc);
+0 −2
Original line number Diff line number Diff line
@@ -633,7 +633,6 @@ int cpm1_gpiochip_add16(struct device_node *np)
	gc = &mm_gc->gc;

	mm_gc->save_regs = cpm1_gpio16_save_regs;
	gc->of_gpio_n_cells = 2;
	gc->ngpio = 16;
	gc->direction_input = cpm1_gpio16_dir_in;
	gc->direction_output = cpm1_gpio16_dir_out;
@@ -755,7 +754,6 @@ int cpm1_gpiochip_add32(struct device_node *np)
	gc = &mm_gc->gc;

	mm_gc->save_regs = cpm1_gpio32_save_regs;
	gc->of_gpio_n_cells = 2;
	gc->ngpio = 32;
	gc->direction_input = cpm1_gpio32_dir_in;
	gc->direction_output = cpm1_gpio32_dir_out;
+0 −1
Original line number Diff line number Diff line
@@ -337,7 +337,6 @@ int cpm2_gpiochip_add32(struct device_node *np)
	gc = &mm_gc->gc;

	mm_gc->save_regs = cpm2_gpio32_save_regs;
	gc->of_gpio_n_cells = 2;
	gc->ngpio = 32;
	gc->direction_input = cpm2_gpio32_dir_in;
	gc->direction_output = cpm2_gpio32_dir_out;
Loading