Thread (52 messages) 52 messages, 7 authors, 2012-06-11
STALE5122d
Revisions (4)
  1. v2 [diff vs current]
  2. v2 [diff vs current]
  3. v2 [diff vs current]
  4. v2 current

[PATCH 3/7] drivers/gpio: gpio-nomadik: Apply Device Tree bindings

From: Lee Jones <hidden>
Date: 2012-05-18 07:37:16

On 17/05/12 22:33, Grant Likely wrote:
On Fri, 13 Apr 2012 15:05:05 +0100, Lee Jones[off-list ref]  wrote:
quoted
Signed-off-by: Lee Jones<redacted>
Looks pretty good to me.  A few comments below, but otherwise you can
add my:

Acked-by: Grant Likely<redacted>

Does this need to be merged via the arm-soc tree?
It's already been merged.
quoted
+	if (np) {
+		pdata = kzalloc(sizeof(*pdata), GFP_KERNEL);
devm_kzalloc()
Yep, I can do that. I'll submit a follow-up patch.
quoted
+		if (!pdata)
+			return -ENOMEM;
+
+		if (of_get_property(np, "supports-sleepmode", NULL))
+			pdata->supports_sleepmode = true;
I believe these properties were going to be updated to add an
"stericsson," prefix.
Yes, I made that change. Odd that it didn't make it.

I'll make the change.
quoted
+
+		if (of_property_read_u32(np, "gpio-bank",&dev->id)) {
+			dev_err(&dev->dev, "gpio-bank property not found\n");
+			ret = -EINVAL;
+			goto out_dt;
+		}
+
+		pdata->first_gpio = dev->id * NMK_GPIO_PER_CHIP;
+		pdata->num_gpio   = NMK_GPIO_PER_CHIP;
+	}

  	res = platform_get_resource(dev, IORESOURCE_MEM, 0);
  	if (!res) {
@@ -1117,6 +1138,7 @@ static int __devinit nmk_gpio_probe(struct platform_device *dev)
  		ret = -ENOMEM;
  		goto out_clk;
  	}
+
Nit: unrelated whitespace change.
Okay, but it looks better now though, so I'll leave it if that's okay?
quoted
  	/*
  	 * The virt address in nmk_chip->addr is in the nomadik register space,
  	 * so we can simply convert the resource address, without remapping
@@ -1139,6 +1161,8 @@ static int __devinit nmk_gpio_probe(struct platform_device *dev)
  	chip->dev =&dev->dev;
  	chip->owner = THIS_MODULE;

+	chip->of_node = np;
+
  	ret = gpiochip_add(&nmk_chip->chip);
  	if (ret)
  		goto out_free;
@@ -1146,12 +1170,13 @@ static int __devinit nmk_gpio_probe(struct platform_device *dev)
  	BUG_ON(nmk_chip->bank>= ARRAY_SIZE(nmk_gpio_chips));

  	nmk_gpio_chips[nmk_chip->bank] = nmk_chip;
+
  	platform_set_drvdata(dev, nmk_chip);

  	nmk_gpio_init_irq(nmk_chip);

-	dev_info(&dev->dev, "at address %p\n",
-		 nmk_chip->addr);
+	dev_info(&dev->dev, "at address %p\n", nmk_chip->addr);
+
Nit: unrelated change
As above.
quoted
  	return 0;

  out_free:
@@ -1164,13 +1189,23 @@ out_release:
  out:
  	dev_err(&dev->dev, "Failure %i for GPIO %i-%i\n", ret,
  		  pdata->first_gpio, pdata->first_gpio+31);
+out_dt:
+	if (np)
+		kfree(pdata);
+
  	return ret;
  }

+static const struct of_device_id nmk_gpio_match[] = {
+	{ .compatible = "st,nomadik-gpio", },
+	{}
+};
+
  static struct platform_driver nmk_gpio_driver = {
  	.driver = {
  		.owner = THIS_MODULE,
  		.name = "gpio",
+		.of_match_table = nmk_gpio_match,
  	},
  	.probe = nmk_gpio_probe,
  };
--
1.7.9.1

-- 
Lee Jones
Linaro ST-Ericsson Landing Team Lead
M: +44 77 88 633 515
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help