mirror of
				https://source.denx.de/u-boot/u-boot.git
				synced 2025-10-26 05:51:29 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			57 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| This patch rewrites the miiphybb ( Bit-banged MII bus driver ) in order to
 | |
| support an arbitrary number of mii buses. This feature is useful when your
 | |
| board uses different mii buses for different phys and all (or a part) of these
 | |
| buses are implemented via bit-banging mode.
 | |
| 
 | |
| The driver requires that the following macros should be defined into the board
 | |
| configuration file:
 | |
| 
 | |
| CONFIG_BITBANGMII	- Enable the miiphybb driver
 | |
| CONFIG_BITBANGMII_MULTI - Enable the multi bus support
 | |
| 
 | |
| If the CONFIG_BITBANGMII_MULTI is not defined, the board's config file needs
 | |
| to define at least the following macros:
 | |
| 
 | |
| MII_INIT      - Generic code to enable the MII bus (optional)
 | |
| MDIO_DECLARE  - Declaration needed to access to the MDIO pin (optional)
 | |
| MDIO_ACTIVE   - Activate the MDIO pin as out pin
 | |
| MDIO_TRISTATE - Activate the MDIO pin as input/tristate pin
 | |
| MDIO_READ     - Read the MDIO pin
 | |
| MDIO(v)       - Write v on the MDIO pin
 | |
| MDC_DECLARE   - Declaration needed to access to the MDC pin (optional)
 | |
| MDC(v)	      - Write v on the MDC pin
 | |
| 
 | |
| The previous macros make the driver compatible with the previous version
 | |
| (that didn't support the multi-bus).
 | |
| 
 | |
| When the CONFIG_BITBANGMII_MULTI is also defined, the board code needs to fill
 | |
| the bb_miiphy_buses[] array with a record for each required bus and declare
 | |
| the bb_miiphy_buses_num variable with the number of mii buses.
 | |
| The record (struct bb_miiphy_bus) has the following fields/callbacks (see
 | |
| miiphy.h for details):
 | |
| 
 | |
| char name[]	       - The symbolic name that must be equal to the MII bus
 | |
| 			 registered name
 | |
| int (*init)()	       - Initialization function called at startup time (just
 | |
| 			 before the Ethernet initialization)
 | |
| int (*mdio_active)()   - Activate the MDIO pin as output
 | |
| int (*mdio_tristate)() - Activate the MDIO pin as input/tristate pin
 | |
| int (*set_mdio)()      - Write the MDIO pin
 | |
| int (*get_mdio)()      - Read the MDIO pin
 | |
| int (*set_mdc)()       - Write the MDC pin
 | |
| int (*delay)()	       - Delay function
 | |
| void *priv	       - Private data used by board specific code
 | |
| 
 | |
| The board code will look like:
 | |
| 
 | |
| struct bb_miiphy_bus bb_miiphy_buses[] = {
 | |
|  { .name = "miibus#1", .init = b1_init, .mdio_active = b1_mdio_active, ... },
 | |
|  { .name = "miibus#2", .init = b2_init, .mdio_active = b2_mdio_active, ... },
 | |
|  ...
 | |
| };
 | |
| int bb_miiphy_buses_num = sizeof(bb_miiphy_buses) /
 | |
| 			  sizeof(bb_miiphy_buses[0]);
 | |
| 
 | |
| 2009 Industrie Dial Face S.p.A.
 | |
|      Luigi 'Comio' Mantellini <luigi.mantellini@idf-hit.com>
 |