blob: ee9ca2e4d4126dc49cd3cfb73dc5014b101c84b5 [file] [log] [blame]
#ifndef __AR8236_h__
#define __AR8236_h__
/*
* board/ums/ar8236.h
*
* U-Boot driver for the Atheros 8236 switch.
*
* Copyright (c) Quantenna Communications Incorporated 2009.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
////////////////////////////////////////////////////////////////////
// NOTE - we do not check for valid base in mdio access routines
// use must ensure device is initialized and valid prior
// to using MDIO funtions
///////////////////////////////////////////////////////////////////
typedef struct {
u32 base;
u32 phy;
}ts8236,*pts8236;
#define MAX_PHY_ADDR 32
/*********************************************************************
Name: ar8236_init
Purpose: Check for Atheros 8236 switch, return pointer to device
if found, NULL otherwise
Notes: pass phy addr as -1 to scan for phy
*********************************************************************/
u32 ar8236_init(u32 baseAddr, u32 phy_addr);
/*********************************************************************
Name: ar8236_mdio_read
Purpose: mdio read routine for AR8236 device
Notes: This is a blocking call since we require
more than one cycle to complete the write.
checks for completion first
*********************************************************************/
int ar8236_mdio_read(u32 phyAddr, u32 regAddr, u32 *data);
/*********************************************************************
Name: ar8236_mdio_write
Purpose: mdio write routine for AR8236 device
Notes: This is a partial blocking call since we require
more than one cycle to complete the write.
checks for completion first
*********************************************************************/
int ar8236_mdio_write(u32 phyAddr, u32 regAddr, u32 data);
/*********************************************************************
Name: ar8236_mdio_poll
Purpose: mdio poll routine for AR8236 device
Notes: Checks for mdio operation complete
*********************************************************************/
int ar8236_mdio_poll(void);
#endif // __AR8236_h__