On Thu, Dec 2, 2010 at 12:49 AM, Nori, Sekhar <nsek...@ti.com> wrote:
> On Thu, Dec 02, 2010 at 01:02:29, vm.ro...@gmail.com wrote:
>> +static int hawk_usb_ocic_notify(da8xx_ocic_handler_t handler)
>> +{
>> +     int irq         = gpio_to_irq(DA850_USB1_OC_PIN);
>> +     int error       = 0;
>> +
>> +     if (handler != NULL) {
>> +             hawk_usb_ocic_handler = handler;
>> +
>> +             error = request_irq(irq, omapl138_hawk_usb_ocic_irq,
>> +                                     IRQF_DISABLED | IRQF_TRIGGER_RISING |
>> +                                     IRQF_TRIGGER_FALLING,
>> +                                     "OHCI over-current indicator", NULL);
>> +             if (error)
>> +                     pr_err(KERN_ERR "%s: could not request IRQ to watch "
>> +                             "over-current indicator changes\n", __func__);
>
> pr_err adds a KERN_ERR already.

Changed to this

static int hawk_usb_ocic_notify(da8xx_ocic_handler_t handler)
{
        int irq         = gpio_to_irq(DA850_USB1_OC_PIN);
        int error       = 0;

        if (handler != NULL) {
                hawk_usb_ocic_handler = handler;

                error = request_irq(irq, omapl138_hawk_usb_ocic_irq,
                                        IRQF_DISABLED | IRQF_TRIGGER_RISING |
                                        IRQF_TRIGGER_FALLING,
                                        "OHCI over-current indicator", NULL);
                if (error)
                        pr_err("%s: could not request IRQ to watch "
                                "over-current indicator changes\n", __func__);
        } else {
                free_irq(irq, NULL);
        }
        return error;
}



>> +static __init void omapl138_hawk_usb_init(void)
>> +{
>> +     int ret;
>> +     u32 cfgchip2;
>> +
>> +     ret = davinci_cfg_reg_list(da850_hawk_usb11_pins);
>> +     if (ret) {
>> +             pr_warning("%s: USB 1.1 PinMux setup failed: %d\n",
>> +                     __func__, ret);
>> +             return;
>> +     }
>> +
>> +     /* Setup the Ref. clock frequency for the HAWK at 24 MHz. */
>> +
>> +     cfgchip2 = __raw_readl(DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP2_REG));
>> +     cfgchip2 &= ~CFGCHIP2_REFFREQ;
>> +     cfgchip2 |=  CFGCHIP2_REFFREQ_24MHZ;
>> +     __raw_writel(cfgchip2, DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP2_REG));
>> +
>> +     ret = gpio_request_one(DA850_USB1_VBUS_PIN,
>> +                     GPIOF_DIR_OUT, "USB1 VBUS");
>> +     if (ret < 0) {
>> +             pr_err(KERN_ERR "%s: failed to request GPIO for USB 1.1 port "
>> +                     "power control: %d\n", __func__, ret);
>> +             return;
>> +     }
>> +
>> +     ret = gpio_request_one(DA850_USB1_OC_PIN,
>> +                     GPIOF_DIR_IN, "USB1 OC");
>> +     if (ret < 0) {
>> +             pr_err(KERN_ERR "%s: failed to request GPIO for USB 1.1 port "
>> +                     "over-current indicator: %d\n", __func__, ret);
>> +             return;
>> +     }
>
> Should free the gpio DA850_USB1_VBUS_PIN in this error
> path. This is also valid for MMC/SD gpio acquisition in
> patch 4/6.

USB part

Changed to this

        if (ret < 0) {
                pr_err("%s: failed to request GPIO for USB 1.1 port "
                        "power control: %d\n", __func__, ret);
                gpio_free(DA850_USB1_VBUS_PIN);
                return;
        }

        ret = gpio_request_one(DA850_USB1_OC_PIN,
                        GPIOF_DIR_IN, "USB1 OC");
        if (ret < 0) {
                pr_err("%s: failed to request GPIO for USB 1.1 port "
                        "over-current indicator: %d\n", __func__, ret);
                gpio_free(DA850_USB1_OC_PIN);
                return;
        }

Patch 4/6

        ret = gpio_request_one(DA850_HAWK_MMCSD_CD_PIN,
                        GPIOF_DIR_IN, "MMC CD");
        if (ret < 0) {
                pr_warning("%s: can not open GPIO %d\n",
                        __func__, DA850_HAWK_MMCSD_CD_PIN);
                gpio_free(DA850_HAWK_MMCSD_CD_PIN);
                return;
        }

        ret = gpio_request_one(DA850_HAWK_MMCSD_WP_PIN,
                        GPIOF_DIR_IN, "MMC WP");
        if (ret < 0) {
                pr_warning("%s: can not open GPIO %d\n",
                        __func__, DA850_HAWK_MMCSD_WP_PIN);
                gpio_free(DA850_HAWK_MMCSD_WP_PIN);
                return;
        }


Is this ok ? or should I free the GPIO on the next section ? Same with USB

        ret = da8xx_register_mmcsd0(&da850_mmc_config);
        if (ret)
                pr_warning("%s: MMC/SD0 registration failed: %d\n",
                        __func__, ret);

Thanks for your comments

Regards

Victor Rodriguez



> Thanks,
> Sekhar
>
>
_______________________________________________
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to