lkml.org 
[lkml]   [2013]   [May]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 3/3] gpio: msm: Add device tree and irqdomain support for gpio-msm-v2
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



\
 
 \ /
  Last update: 2013-05-22 22:21    [W:0.092 / U:0.748 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site