RE: [PATCH v1 2/3] OMAP4: Ethernet: KS8851 Board Support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 

> -----Original Message-----
> From: linux-omap-owner@xxxxxxxxxxxxxxx 
> [mailto:linux-omap-owner@xxxxxxxxxxxxxxx] On Behalf Of G, 
> Manjunath Kondaiah
> Sent: Thursday, May 06, 2010 8:45 AM
> To: Arce, Abraham; Tony Lindgren
> Cc: linux-omap@xxxxxxxxxxxxxxx; 
> spi-devel-general@xxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [PATCH v1 2/3] OMAP4: Ethernet: KS8851 Board Support
> 
> 
> 
> > -----Original Message-----
> > From: Arce, Abraham 
> > Sent: Thursday, May 06, 2010 6:18 AM
> > To: Tony Lindgren
> > Cc: G, Manjunath Kondaiah; linux-omap@xxxxxxxxxxxxxxx; 
> > spi-devel-general@xxxxxxxxxxxxxxxxxxxxx
> > Subject: RE: [PATCH v1 2/3] OMAP4: Ethernet: KS8851 Board Support
> > 
> > > > > > +
> > > > > > +static void omap_ethernet_init(void)
> > > > > > +{
> > > > > > +	gpio_request(ETHERNET_KS8851_POWER_ENABLE, "ethernet");
> > > > > > +	gpio_direction_output(ETHERNET_KS8851_POWER_ENABLE, 1);
> > > > > > +	gpio_request(ETHERNET_KS8851_QUART, "quart");
> > > > > > +	gpio_direction_output(ETHERNET_KS8851_QUART, 1);
> > > > > > +	gpio_request(ETHERNET_KS8851_IRQ, "ks8851");
> > > > >
> > > > > Any reason for not checking return value of gpio_request()?
> > > > >
> > > >
> > > > Thought initially about them as dedicated lines for 
> > ethernet avoiding
> > > > both reasons to check for a gpio's request:
> > > >
> > > >  1. invalid gpio
> > > >  2. already claimed gpio
> > > 
> > > You still need to check for the result.
> > > 
> > 
> > Is the below approach ok? Using goto would make it better?
> > 
> >         int status;
> > 
> >         status = gpio_request(ETHERNET_KS8851_POWER_ENABLE, 
> > "ethernet");
> >         if (status < 0)
> 
> You need to have warning message about this failure.
> 
> >                 return status;
> > 
> >         gpio_request(ETHERNET_KS8851_QUART, "quart");
> >         if (status < 0) {
> 
> -Ditto-
> 
> >                 gpio_free(ETHERNET_KS8851_POWER_ENABLE);
> >                 return status;
> 
> Return to where? This function seems to be void, change signature
> of this API.
> 
> >         }
> > 
> >         gpio_request(ETHERNET_KS8851_IRQ, "ks8851");
> >         if (status < 0) {
> 
> Bug! Checking previous status.
> 
> >                 gpio_free(ETHERNET_KS8851_POWER_ENABLE);
> >                 gpio_free(ETHERNET_KS8851_QUART);
> >                 return status;
> >         }
> > 
> >         gpio_direction_output(ETHERNET_KS8851_POWER_ENABLE, 1);
> >         gpio_direction_output(ETHERNET_KS8851_QUART, 1);
> >         gpio_direction_input(ETHERNET_KS8851_IRQ);
> 
> Goto will be better approach  compared to above logic.
> 
> if(gpio_request(x)
> 	goto err1;
> 
> if(gpio_request(y)
> 	goto err2;
> 
> if(gpio_request(z)
> 	goto err3;
> ...	
> 	return 0;
> 
> err3:
> 	free(x);
> err2:
> 	free(y);
> err1:
> 	free(z);
> 
> 	return status;

Minor changes:
if (gpio_request(x))
	return status;
if (gpio_request(y))
	goto err1;
if (gpio_request(z))
	goto err2;
...
	return 0;
	
err2:
	free(y);

err1:
	free(x);
	return status;

-Manjunath

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

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux