fsl_pq_mdio: Clean up tbi address configuration
The code for setting the address of the internal TBI PHY was convoluted enough without a maze of ifdefs. Clean it up a bit so we allow the logic to fail down to -ENODEV at the end of the if/else ladder, rather than using ifdefs to repeat the same failure code over and over. Also, remove the support for the auto-configuration. I'm not aware of anyone using it, and it ends up using the bus mutex before it's been initialized. Signed-off-by: Andy Fleming <afleming@freescale.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
					parent
					
						
							
								e19df76a11
							
						
					
				
			
			
				commit
				
					
						952c5ca14e
					
				
			
		
					 1 changed files with 8 additions and 45 deletions
				
			
		|  | @ -183,28 +183,10 @@ void fsl_pq_mdio_bus_name(char *name, struct device_node *np) | |||
| } | ||||
| EXPORT_SYMBOL_GPL(fsl_pq_mdio_bus_name); | ||||
| 
 | ||||
| /* Scan the bus in reverse, looking for an empty spot */ | ||||
| static int fsl_pq_mdio_find_free(struct mii_bus *new_bus) | ||||
| { | ||||
| 	int i; | ||||
| 
 | ||||
| 	for (i = PHY_MAX_ADDR; i > 0; i--) { | ||||
| 		u32 phy_id; | ||||
| 
 | ||||
| 		if (get_phy_id(new_bus, i, &phy_id)) | ||||
| 			return -1; | ||||
| 
 | ||||
| 		if (phy_id == 0xffffffff) | ||||
| 			break; | ||||
| 	} | ||||
| 
 | ||||
| 	return i; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| #if defined(CONFIG_GIANFAR) || defined(CONFIG_GIANFAR_MODULE) | ||||
| static u32 __iomem *get_gfar_tbipa(struct fsl_pq_mdio __iomem *regs, struct device_node *np) | ||||
| { | ||||
| #if defined(CONFIG_GIANFAR) || defined(CONFIG_GIANFAR_MODULE) | ||||
| 	struct gfar __iomem *enet_regs; | ||||
| 
 | ||||
| 	/*
 | ||||
|  | @ -220,15 +202,15 @@ static u32 __iomem *get_gfar_tbipa(struct fsl_pq_mdio __iomem *regs, struct devi | |||
| 	} else if (of_device_is_compatible(np, "fsl,etsec2-mdio") || | ||||
| 			of_device_is_compatible(np, "fsl,etsec2-tbi")) { | ||||
| 		return of_iomap(np, 1); | ||||
| 	} else | ||||
| 		return NULL; | ||||
| } | ||||
| 	} | ||||
| #endif | ||||
| 	return NULL; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| #if defined(CONFIG_UCC_GETH) || defined(CONFIG_UCC_GETH_MODULE) | ||||
| static int get_ucc_id_for_range(u64 start, u64 end, u32 *ucc_id) | ||||
| { | ||||
| #if defined(CONFIG_UCC_GETH) || defined(CONFIG_UCC_GETH_MODULE) | ||||
| 	struct device_node *np = NULL; | ||||
| 	int err = 0; | ||||
| 
 | ||||
|  | @ -261,9 +243,10 @@ static int get_ucc_id_for_range(u64 start, u64 end, u32 *ucc_id) | |||
| 		return err; | ||||
| 	else | ||||
| 		return -EINVAL; | ||||
| } | ||||
| #else | ||||
| 	return -ENODEV; | ||||
| #endif | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| static int fsl_pq_mdio_probe(struct platform_device *ofdev) | ||||
| { | ||||
|  | @ -339,19 +322,13 @@ static int fsl_pq_mdio_probe(struct platform_device *ofdev) | |||
| 			of_device_is_compatible(np, "fsl,etsec2-mdio") || | ||||
| 			of_device_is_compatible(np, "fsl,etsec2-tbi") || | ||||
| 			of_device_is_compatible(np, "gianfar")) { | ||||
| #if defined(CONFIG_GIANFAR) || defined(CONFIG_GIANFAR_MODULE) | ||||
| 		tbipa = get_gfar_tbipa(regs, np); | ||||
| 		if (!tbipa) { | ||||
| 			err = -EINVAL; | ||||
| 			goto err_free_irqs; | ||||
| 		} | ||||
| #else | ||||
| 		err = -ENODEV; | ||||
| 		goto err_free_irqs; | ||||
| #endif | ||||
| 	} else if (of_device_is_compatible(np, "fsl,ucc-mdio") || | ||||
| 			of_device_is_compatible(np, "ucc_geth_phy")) { | ||||
| #if defined(CONFIG_UCC_GETH) || defined(CONFIG_UCC_GETH_MODULE) | ||||
| 		u32 id; | ||||
| 		static u32 mii_mng_master; | ||||
| 
 | ||||
|  | @ -364,10 +341,6 @@ static int fsl_pq_mdio_probe(struct platform_device *ofdev) | |||
| 			mii_mng_master = id; | ||||
| 			ucc_set_qe_mux_mii_mng(id - 1); | ||||
| 		} | ||||
| #else | ||||
| 		err = -ENODEV; | ||||
| 		goto err_free_irqs; | ||||
| #endif | ||||
| 	} else { | ||||
| 		err = -ENODEV; | ||||
| 		goto err_free_irqs; | ||||
|  | @ -386,16 +359,6 @@ static int fsl_pq_mdio_probe(struct platform_device *ofdev) | |||
| 	} | ||||
| 
 | ||||
| 	if (tbiaddr == -1) { | ||||
| 		out_be32(tbipa, 0); | ||||
| 
 | ||||
| 		tbiaddr = fsl_pq_mdio_find_free(new_bus); | ||||
| 	} | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * We define TBIPA at 0 to be illegal, opting to fail for boards that | ||||
| 	 * have PHYs at 1-31, rather than change tbipa and rescan. | ||||
| 	 */ | ||||
| 	if (tbiaddr == 0) { | ||||
| 		err = -EBUSY; | ||||
| 
 | ||||
| 		goto err_free_irqs; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andy Fleming
				Andy Fleming