Home | History | Annotate | Line # | Download | only in ar5312
      1  1.1  alc /*
      2  1.1  alc  * Copyright (c) 2002-2008 Sam Leffler, Errno Consulting
      3  1.1  alc  * Copyright (c) 2002-2008 Atheros Communications, Inc.
      4  1.1  alc  *
      5  1.1  alc  * Permission to use, copy, modify, and/or distribute this software for any
      6  1.1  alc  * purpose with or without fee is hereby granted, provided that the above
      7  1.1  alc  * copyright notice and this permission notice appear in all copies.
      8  1.1  alc  *
      9  1.1  alc  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
     10  1.1  alc  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
     11  1.1  alc  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     12  1.1  alc  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     13  1.1  alc  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
     14  1.1  alc  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
     15  1.1  alc  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     16  1.1  alc  *
     17  1.1  alc  * $Id: ar5312reg.h,v 1.1.1.1 2008/12/11 04:46:46 alc Exp $
     18  1.1  alc  */
     19  1.1  alc #ifndef _DEV_ATH_AR5312REG_H_
     20  1.1  alc #define _DEV_ATH_AR5312REG_H_
     21  1.1  alc 
     22  1.1  alc #include "ar5212/ar5212reg.h"
     23  1.1  alc /*
     24  1.1  alc  * Definitions for the Atheros 5312 chipset.
     25  1.1  alc  */
     26  1.1  alc 
     27  1.1  alc /* Register base addresses for modules which are not wmac modules */
     28  1.1  alc /* 531X has a fixed memory map */
     29  1.1  alc 
     30  1.1  alc 
     31  1.1  alc #define REG_WRITE(_reg,_val)		*((volatile uint32_t *)(_reg)) = (_val);
     32  1.1  alc #define REG_READ(_reg)		*((volatile uint32_t *)(_reg))
     33  1.1  alc /*
     34  1.1  alc  * PCI-MAC Configuration registers (AR2315+)
     35  1.1  alc  */
     36  1.1  alc #define AR5315_RSTIMER_BASE 0xb1000000  /* Address for reset/timer registers */
     37  1.1  alc #define AR5315_GPIO_BASE    0xb1000000  /* Address for GPIO registers */
     38  1.1  alc #define AR5315_WLAN0            0xb0000000
     39  1.1  alc 
     40  1.1  alc #define AR5315_RESET   0x0004      /* Offset of reset control register */
     41  1.1  alc #define AR5315_SREV    0x0014      /* Offset of reset control register */
     42  1.1  alc #define AR5315_ENDIAN_CTL  0x000c  /* offset of the endian control register */
     43  1.1  alc #define AR5315_CONFIG_WLAN     0x00000002      /* WLAN byteswap */
     44  1.1  alc 
     45  1.1  alc #define AR5315_REV_MAJ                     0x00f0
     46  1.1  alc #define AR5315_REV_MIN                     0x000f
     47  1.1  alc 
     48  1.1  alc #define AR5315_GPIODIR      0x0098      /* GPIO direction register */
     49  1.1  alc #define AR5315_GPIODO       0x0090      /* GPIO data output access reg */
     50  1.1  alc #define AR5315_GPIODI       0x0088      /* GPIO data input access reg*/
     51  1.1  alc #define AR5315_GPIOINT      0x00a0      /* GPIO interrupt control */
     52  1.1  alc 
     53  1.1  alc #define AR5315_GPIODIR_M(x) (1 << (x))  /* mask for i/o */
     54  1.1  alc #define AR5315_GPIODIR_O(x) (1 << (x))  /* output */
     55  1.1  alc #define AR5315_GPIODIR_I(x) 0           /* input */
     56  1.1  alc 
     57  1.1  alc #define AR5315_GPIOINT_S    0
     58  1.1  alc #define AR5315_GPIOINT_M    0x3F
     59  1.1  alc #define AR5315_GPIOINTLVL_S 6
     60  1.1  alc #define AR5315_GPIOINTLVL_M (3 << AR5315_GPIOINTLVL_S)
     61  1.1  alc 
     62  1.1  alc #define AR5315_WREV         (-0xefbfe0)      /* Revision ID register offset */
     63  1.1  alc #define AR5315_WREV_S       0           /* Shift for WMAC revision info */
     64  1.1  alc #define AR5315_WREV_ID      0x000000FF  /* Mask for WMAC revision info */
     65  1.1  alc #define AR5315_WREV_ID_S    4           /* Shift for WMAC Rev ID */
     66  1.1  alc #define AR5315_WREV_REVISION 0x0000000F /* Mask for WMAN Revsion version */
     67  1.1  alc 
     68  1.1  alc #define AR5315_RC_BB0_CRES   0x00000002  /* Cold reset to WMAC0 & WBB0 */
     69  1.1  alc #define AR5315_RC_BB1_CRES   0x00000200  /* Cold reset to WMAC1 & WBB1n */
     70  1.1  alc #define AR5315_RC_WMAC0_RES  0x00000001  /* Warm reset to WMAC 0 */
     71  1.1  alc #define AR5315_RC_WBB0_RES  0x00000002  /* Warm reset to WBB0 */
     72  1.1  alc #define AR5315_RC_WMAC1_RES  0x00020000  /* Warm reset to WMAC1 */
     73  1.1  alc #define AR5315_RC_WBB1_RES   0x00040000  /* Warm reset to WBB */
     74  1.1  alc 
     75  1.1  alc /*
     76  1.1  alc  * PCI-MAC Configuration registers (AR5312)
     77  1.1  alc  */
     78  1.1  alc #define AR5312_RSTIMER_BASE 0xbc003000  /* Address for reset/timer registers */
     79  1.1  alc #define AR5312_GPIO_BASE    0xbc002000  /* Address for GPIO registers */
     80  1.1  alc #define AR5312_WLAN0            0xb8000000
     81  1.1  alc #define AR5312_WLAN1            0xb8500000
     82  1.1  alc 
     83  1.1  alc #define AR5312_RESET	0x0020      /* Offset of reset control register */
     84  1.1  alc #define	AR5312_PCICFG	0x00B0	    /* MAC/PCI configuration reg (LEDs) */
     85  1.1  alc 
     86  1.1  alc #define AR5312_PCICFG_LEDMODE  0x0000001c	/* LED Mode mask */
     87  1.1  alc #define AR5312_PCICFG_LEDMODE_S  2	/* LED Mode shift */
     88  1.1  alc #define AR5312_PCICFG_LEDMOD0  0	/* Blnk prop to Tx and filtered Rx */
     89  1.1  alc #define AR5312_PCICFG_LEDMOD1  1	/* Blnk prop to all Tx and Rx */
     90  1.1  alc #define AR5312_PCICFG_LEDMOD2  2	/* DEBG flash */
     91  1.1  alc #define AR5312_PCICFG_LEDMOD3  3	/* BLNK Randomly */
     92  1.1  alc 
     93  1.1  alc #define	AR5312_PCICFG_LEDSEL   0x000000e0 /* LED Throughput select */
     94  1.1  alc #define AR5312_PCICFG_LEDSEL_S 5
     95  1.1  alc #define AR5312_PCICFG_LEDSEL0  0	/* See blink rate table on p. 143 */
     96  1.1  alc #define AR5312_PCICFG_LEDSEL1  1	/* of AR5212 data sheet */
     97  1.1  alc #define AR5312_PCICFG_LEDSEL2  2
     98  1.1  alc #define AR5312_PCICFG_LEDSEL3  3
     99  1.1  alc #define AR5312_PCICFG_LEDSEL4  4
    100  1.1  alc #define AR5312_PCICFG_LEDSEL5  5
    101  1.1  alc #define AR5312_PCICFG_LEDSEL6  6
    102  1.1  alc #define AR5312_PCICFG_LEDSEL7  7
    103  1.1  alc 
    104  1.1  alc #define AR5312_PCICFG_LEDSBR   0x00000100 /* Slow blink rate if no
    105  1.1  alc 			   		     activity. 0 = blink @ lowest
    106  1.1  alc 					     rate */
    107  1.1  alc 
    108  1.1  alc #undef AR_GPIOCR
    109  1.1  alc #undef AR_GPIODO                    /* Undefine the 5212 defs */
    110  1.1  alc #undef AR_GPIODI
    111  1.1  alc 
    112  1.1  alc #define AR5312_GPIOCR       0x0008      /* GPIO Control register */
    113  1.1  alc #define AR5312_GPIODO       0x0000      /* GPIO data output access reg */
    114  1.1  alc #define AR5312_GPIODI       0x0004      /* GPIO data input access reg*/
    115  1.1  alc /* NB: AR5312 uses AR5212 defines for GPIOCR definitions */
    116  1.1  alc 
    117  1.1  alc #define AR5312_WREV         0x0090      /* Revision ID register offset */
    118  1.1  alc #define AR5312_WREV_S       8           /* Shift for WMAC revision info */
    119  1.1  alc #define AR5312_WREV_ID      0x000000FF  /* Mask for WMAC revision info */
    120  1.1  alc #define AR5312_WREV_ID_S    4           /* Shift for WMAC Rev ID */
    121  1.1  alc #define AR5312_WREV_REVISION 0x0000000F /* Mask for WMAN Revsion version */
    122  1.1  alc 
    123  1.1  alc #define AR5312_RC_BB0_CRES   0x00000004  /* Cold reset to WMAC0 & WBB0 */
    124  1.1  alc #define AR5312_RC_BB1_CRES   0x00000200  /* Cold reset to WMAC1 & WBB1n */
    125  1.1  alc #define AR5312_RC_WMAC0_RES  0x00002000  /* Warm reset to WMAC 0 */
    126  1.1  alc #define AR5312_RC_WBB0_RES  0x00004000  /* Warm reset to WBB0 */
    127  1.1  alc #define AR5312_RC_WMAC1_RES  0x00020000  /* Warm reset to WMAC1 */
    128  1.1  alc #define AR5312_RC_WBB1_RES   0x00040000  /* Warm reset to WBB */
    129  1.1  alc 
    130  1.1  alc 
    131  1.1  alc #define AR_RAD2112_SREV_MAJOR   0x40    /* 2112 Major Rev */
    132  1.1  alc 
    133  1.1  alc enum AR5312PowerMode {
    134  1.1  alc     AR5312_POWER_MODE_FORCE_SLEEP  = 0,
    135  1.1  alc     AR5312_POWER_MODE_FORCE_WAKE   = 1,
    136  1.1  alc     AR5312_POWER_MODE_NORMAL       = 2,
    137  1.1  alc };
    138  1.1  alc 
    139  1.1  alc #endif /* _DEV_AR5312REG_H_ */
    140