Subject: Re: [PATCH] Re:[BUILD FAILURE 04/04] Next June 04:PPC64 randconfig [drivers/net/ucc_geth.o]

From: Tony Breeds <[email-masked]>
Date: Thu, 11 Jun 2009 12:22:01 +1000

On Thu, Jun 11, 2009 at 07:26:04AM +0530, Subrata Modak wrote:
> On Thu, 2009-06-11 at 11:05 +1000, Stephen Rothwell wrote:
> > Hi Subrata,
> > 
> > On Wed, 10 Jun 2009 23:13:23 +0530 Subrata Modak <[email-masked]> wrote:
> > >
> > >  	/* Find the TBI PHY.  If it's not there, we don't support SGMII */
> > > -	ph = of_get_property(np, "tbi-handle", NULL);
> > > +	ph = (phandle *)of_get_property(np, "tbi-handle", NULL);
> > 
> > You don't need this cast because of_get_property() returns "void *".
> 
> Stephen,
> 
> True. But without this gcc complains:
> 
> CC [M]  drivers/net/ucc_geth.o
> drivers/net/ucc_geth.c: In function ‘ucc_geth_probe’:
> drivers/net/ucc_geth.c:3824: warning: assignment discards qualifiers
> from pointer target type
> 
> Else gcc just builds fine:
> 
> CC [M]  drivers/net/ucc_geth.o
> 
> This is an just an extra caution to fix both the build and warning
> regression(s).

ph needs to be const.

I think the following untested (and hence un-signed-off-by) patch is closer,
however I also think that the whole SGMII setup code could use the various OF
helper functions better :)

diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c
index e2f2e91..796253d 100644
--- a/drivers/net/ucc_geth.c
+++ b/drivers/net/ucc_geth.c
@@ -3603,6 +3603,7 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma
 	struct resource res;
 	struct device_node *phy;
 	int err, ucc_num, max_speed = 0;
+	const phandle *ph;
 	const u32 *fixed_link;
 	const unsigned int *prop;
 	const char *sprop;
@@ -3821,7 +3822,7 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma
 	/* Find the TBI PHY.  If it's not there, we don't support SGMII */
 	ph = of_get_property(np, "tbi-handle", NULL);
 	if (ph) {
-		struct device_node *tbi = of_find_node_by_phandle(*ph);
+		struct device_node *tbi = of_find_node_by_phandle(*ph), *mdio;
 		struct of_device *ofdev;
 		struct mii_bus *bus;
 		const unsigned int *id;

Yours Tony