1/* ********************************************************************* 2 * Broadcom Common Firmware Environment (CFE) 3 * 4 * Common MII definitions File: cfe_mii.h 5 * 6 * Driver common data structures for MII devices. The 7 * higher-level (device-specific) MII drivers talk to this, and 8 * via these structures we end up at platform-specific MII 9 * handlers. 10 * 11 ********************************************************************* 12 * 13 * Copyright 2004 14 * Broadcom Corporation. All rights reserved. 15 * 16 * This software is furnished under license and may be used and 17 * copied only in accordance with the following terms and 18 * conditions. Subject to these conditions, you may download, 19 * copy, install, use, modify and distribute modified or unmodified 20 * copies of this software in source and/or binary form. No title 21 * or ownership is transferred hereby. 22 * 23 * 1) Any source code used, modified or distributed must reproduce 24 * and retain this copyright notice and list of conditions 25 * as they appear in the source file. 26 * 27 * 2) No right is granted to use any trade name, trademark, or 28 * logo of Broadcom Corporation. The "Broadcom Corporation" 29 * name may not be used to endorse or promote products derived 30 * from this software without the prior written permission of 31 * Broadcom Corporation. 32 * 33 * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR 34 * IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED 35 * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR 36 * PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT 37 * SHALL BROADCOM BE LIABLE FOR ANY DAMAGES WHATSOEVER, AND IN 38 * PARTICULAR, BROADCOM SHALL NOT BE LIABLE FOR DIRECT, INDIRECT, 39 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 40 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 41 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 42 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 43 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 44 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE), EVEN IF ADVISED OF 45 * THE POSSIBILITY OF SUCH DAMAGE. 46 ********************************************************************* */ 47 48 49typedef struct cfe_mii_channel_s cfe_mii_channel_t; 50typedef struct cfe_mii_s cfe_mii_t; 51 52struct cfe_mii_s { 53 /* Attach channel */ 54 cfe_mii_channel_t * (*attach)(cfe_mii_t *,uint64_t probe_a,uint64_t probe_b); 55 /* Initialize channel */ 56 int (*init)(cfe_mii_channel_t *chan); 57 /* Get default address */ 58 int (*default_addr)(cfe_mii_channel_t *chan); 59 /* Write data to device */ 60 void (*write)(cfe_mii_channel_t *chan,int addr,int regidx,unsigned int regval); 61 /* Read data from device */ 62 unsigned int (*read)(cfe_mii_channel_t *chan,int addr,int regidx); 63}; 64 65struct cfe_mii_channel_s { 66 cfe_mii_t *ops; 67 void *softc; 68}; 69 70#define MII_CHANNELS_MAX 4 71 72extern cfe_mii_channel_t *cfe_mii_channels[MII_CHANNELS_MAX]; 73 74#define MII_CHANNEL(chanidx) cfe_mii_channels[chanidx] 75#define MII_INIT(chan) (chan)->ops->init(chan) 76#define MII_DEFAULT_ADDR(chan) (chan)->ops->default_addr(chan) 77#define MII_WRITE(chan,addr,regidx,regval) (chan)->ops->write(chan,addr,regidx,regval) 78#define MII_READ(chan,addr,regidx) (chan)->ops->read(chan,addr,regidx) 79 80 81int cfe_add_mii(cfe_mii_t *ops,uint64_t probe_a,uint64_t probe_b); 82 83 84