Re: [PATCH 3/3] gpio: msm: Add device tree and irqdomain supportfor gpio-msm-v2

From: Rohit Vaswani
Date: Wed May 22 2013 - 15:29:46 EST


On 5/21/2013 2:06 PM, Stephen Boyd wrote:
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
index 87d5670..f3c1978 100644
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
@@ -165,7 +165,7 @@ config GPIO_MSM_V1
config GPIO_MSM_V2
tristate "Qualcomm MSM GPIO v2"
- depends on GPIOLIB && ARCH_MSM
+ depends on GPIOLIB && ARCH_MSM && OF
This doesn't actually rely on ARCH_MSM anymore so I think we can
drop that dependency.
Done.

help
Say yes here to support the GPIO interface on ARM v7 based
Qualcomm MSM chips. Most of the pins on the MSM can be
@@ -222,7 +229,6 @@ static void msm_gpio_update_dual_edge_pos(unsigned gpio)
else
set_gpio_bits(BIT(INTR_POL_CTL), GPIO_INTR_CFG(gpio));
val2 = readl(GPIO_IN_OUT(gpio)) & BIT(GPIO_IN);
- intstat = readl(GPIO_INTR_STATUS(gpio)) & BIT(INTR_STATUS);
if (intstat || val == val2)
Looks like intstat is used uninitialized now?
Thanks for catching this. Will fix this.

+
+static int msm_gpio_probe(struct platform_device *pdev)
+{
+ int i, irq, ret, ngpio;
+ struct resource *res;
+
+ msm_gpio.gpio_chip.label = pdev->name;
+ msm_gpio.gpio_chip.dev = &pdev->dev;
+ of_property_read_u32(pdev->dev.of_node, "ngpio", &ngpio);
Fail probe if the property isn't there?
Done.

+ msm_gpio.gpio_chip.ngpio = ngpio;
+
+ res = platform_get_resource(&pdev->dev, IORESOURCE_MEM, 0);
+ if (!res) {
+ dev_err(&pdev->dev, "%s: no mem resource\n", __func__);
+ return -EINVAL;
+ }
+
+ msm_tlmm_base = devm_ioremap_resource(pdev->dev, res);
+ if (!msm_tlmm_base) {
+ dev_err(&pdev->dev, "Couldn't allocate memory for msm tlmm base\n");
+ return -ENOMEM;
+ }
devm_ioremap_resource() returns an ERR_PTR on failure, not NULL.
Also, it already prints messages on errors so you can drop all the
prints around this. Just do

res = platform_get_resource(&pdev->dev, IORESOURCE_MEM, 0);
msm_tlmm_base = devm_ioremap_resource(pdev->dev, res);
if (IS_ERR(msm_tlmm_base))
return ERR_PTR(msm_tlmm_base);
Done.
static int __init msm_gpio_init(void)
{
- int rc;
-
- rc = platform_driver_register(&msm_gpio_driver);
- if (!rc) {
- rc = platform_device_register(&msm_device_gpio);
- if (rc)
- platform_driver_unregister(&msm_gpio_driver);
- }
-
- return rc;
+ return platform_driver_register(&msm_gpio_driver);
}
static void __exit msm_gpio_exit(void)
{
- platform_device_unregister(&msm_device_gpio);
platform_driver_unregister(&msm_gpio_driver);
}
You could use module_platform_driver here now too.

Done. Thanks for the comments.

Thanks,
Rohit Vaswani

--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/