kconfig: split the lexer out of zconf.y
[carl9170fw.git] / include / shared / hw.h
index e15885d6f5763c81927078d00ac34e199b620e52..08e0ae9c5836dc38d7d4f2d9f5abe71d8af86a66 100644 (file)
@@ -1,10 +1,10 @@
 /*
- * Atheros AR9170 driver
+ * Shared Atheros AR9170 Header
  *
- * Hardware-specific definitions
+ * Register map, hardware-specific definitions
  *
  * Copyright 2008, Johannes Berg <johannes@sipsolutions.net>
- * Copyright 2009, 2010, Christian Lamparter <chunkeey@googlemail.com>
+ * Copyright 2009-2011 Christian Lamparter <chunkeey@googlemail.com>
  *
  * 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
 #define                AR9170_MAC_SNIFFER_ENABLE_PROMISC       BIT(0)
 #define                AR9170_MAC_SNIFFER_DEFAULTS             0x02000000
 #define        AR9170_MAC_REG_ENCRYPTION               (AR9170_MAC_REG_BASE + 0x678)
+#define                AR9170_MAC_ENCRYPTION_MGMT_RX_SOFTWARE  BIT(2)
 #define                AR9170_MAC_ENCRYPTION_RX_SOFTWARE       BIT(3)
 #define                AR9170_MAC_ENCRYPTION_DEFAULTS          0x70
 
 #define AR9170_MAC_REG_TX_BLOCKACKS            (AR9170_MAC_REG_BASE + 0x6c0)
 #define AR9170_MAC_REG_NAV_COUNT               (AR9170_MAC_REG_BASE + 0x6c4)
 #define AR9170_MAC_REG_BACKOFF_STATUS          (AR9170_MAC_REG_BASE + 0x6c8)
+#define                AR9170_MAC_BACKOFF_CCA                  BIT(24)
+#define                AR9170_MAC_BACKOFF_TX_PEX               BIT(25)
+#define                AR9170_MAC_BACKOFF_RX_PE                BIT(26)
+#define                AR9170_MAC_BACKOFF_MD_READY             BIT(27)
+#define                AR9170_MAC_BACKOFF_TX_PE                BIT(28)
+
 #define        AR9170_MAC_REG_TX_RETRY                 (AR9170_MAC_REG_BASE + 0x6cc)
 
 #define AR9170_MAC_REG_TX_COMPLETE             (AR9170_MAC_REG_BASE + 0x6d4)
 
 #define AR9170_MAC_REG_DMA_WLAN_STATUS         (AR9170_MAC_REG_BASE + 0xd38)
 #define        AR9170_MAC_REG_DMA_STATUS               (AR9170_MAC_REG_BASE + 0xd3c)
-
+#define AR9170_MAC_REG_DMA_TXQ_LAST_ADDR       (AR9170_MAC_REG_BASE + 0xd40)
+#define        AR9170_MAC_REG_DMA_TXQ0_LAST_ADDR       (AR9170_MAC_REG_BASE + 0xd40)
+#define        AR9170_MAC_REG_DMA_TXQ1_LAST_ADDR       (AR9170_MAC_REG_BASE + 0xd44)
+#define        AR9170_MAC_REG_DMA_TXQ2_LAST_ADDR       (AR9170_MAC_REG_BASE + 0xd48)
+#define        AR9170_MAC_REG_DMA_TXQ3_LAST_ADDR       (AR9170_MAC_REG_BASE + 0xd4c)
+#define        AR9170_MAC_REG_DMA_TXQ4_LAST_ADDR       (AR9170_MAC_REG_BASE + 0xd50)
+#define        AR9170_MAC_REG_DMA_TXQ0Q1_LEN           (AR9170_MAC_REG_BASE + 0xd54)
+#define        AR9170_MAC_REG_DMA_TXQ2Q3_LEN           (AR9170_MAC_REG_BASE + 0xd58)
+#define        AR9170_MAC_REG_DMA_TXQ4_LEN             (AR9170_MAC_REG_BASE + 0xd5c)
+
+#define AR9170_MAC_REG_DMA_TXQX_LAST_ADDR      (AR9170_MAC_REG_BASE + 0xd74)
+#define AR9170_MAC_REG_DMA_TXQX_FAIL_ADDR      (AR9170_MAC_REG_BASE + 0xd78)
 #define        AR9170_MAC_REG_TXRX_MPI                 (AR9170_MAC_REG_BASE + 0xd7c)
 #define                AR9170_MAC_TXRX_MPI_TX_MPI_MASK         0x0000000f
 #define                AR9170_MAC_TXRX_MPI_TX_TO_MASK          0x0000fff0
 
 #define        AR9170_MAC_REG_BCN_ADDR                 (AR9170_MAC_REG_BASE + 0xd84)
 #define        AR9170_MAC_REG_BCN_LENGTH               (AR9170_MAC_REG_BASE + 0xd88)
-#define                AR9170_MAC_BCN_LENGTH_MAX               256
+#define                AR9170_MAC_BCN_LENGTH_MAX               (512 - 32)
 
 #define AR9170_MAC_REG_BCN_STATUS              (AR9170_MAC_REG_BASE + 0xd8c)
 
 
 #define AR9170_MAC_REG_BCN_CURR_ADDR           (AR9170_MAC_REG_BASE + 0xd98)
 #define        AR9170_MAC_REG_BCN_COUNT                (AR9170_MAC_REG_BASE + 0xd9c)
-
-
 #define        AR9170_MAC_REG_BCN_HT1                  (AR9170_MAC_REG_BASE + 0xda0)
+#define                AR9170_MAC_BCN_HT1_HT_EN                BIT(0)
+#define                AR9170_MAC_BCN_HT1_GF_PMB               BIT(1)
+#define                AR9170_MAC_BCN_HT1_SP_EXP               BIT(2)
+#define                AR9170_MAC_BCN_HT1_TX_BF                BIT(3)
+#define                AR9170_MAC_BCN_HT1_PWR_CTRL_S           4
+#define                AR9170_MAC_BCN_HT1_PWR_CTRL             0x70
+#define                AR9170_MAC_BCN_HT1_TX_ANT1              BIT(7)
+#define                AR9170_MAC_BCN_HT1_TX_ANT0              BIT(8)
+#define                AR9170_MAC_BCN_HT1_NUM_LFT_S            9
+#define                AR9170_MAC_BCN_HT1_NUM_LFT              0x600
+#define                AR9170_MAC_BCN_HT1_BWC_20M_EXT          BIT(16)
+#define                AR9170_MAC_BCN_HT1_BWC_40M_SHARED       BIT(17)
+#define                AR9170_MAC_BCN_HT1_BWC_40M_DUP          (BIT(16) | BIT(17))
+#define                AR9170_MAC_BCN_HT1_BF_MCS_S             18
+#define                AR9170_MAC_BCN_HT1_BF_MCS               0x1c0000
+#define                AR9170_MAC_BCN_HT1_TPC_S                21
+#define                AR9170_MAC_BCN_HT1_TPC                  0x7e00000
+#define                AR9170_MAC_BCN_HT1_CHAIN_MASK_S         27
+#define                AR9170_MAC_BCN_HT1_CHAIN_MASK           0x38000000
+
 #define        AR9170_MAC_REG_BCN_HT2                  (AR9170_MAC_REG_BASE + 0xda4)
+#define                AR9170_MAC_BCN_HT2_MCS_S                0
+#define                AR9170_MAC_BCN_HT2_MCS                  0x7f
+#define                AR9170_MAC_BCN_HT2_BW40                 BIT(8)
+#define                AR9170_MAC_BCN_HT2_SMOOTHING            BIT(9)
+#define                AR9170_MAC_BCN_HT2_SS                   BIT(10)
+#define                AR9170_MAC_BCN_HT2_NSS                  BIT(11)
+#define                AR9170_MAC_BCN_HT2_STBC_S               12
+#define                AR9170_MAC_BCN_HT2_STBC                 0x3000
+#define                AR9170_MAC_BCN_HT2_ADV_COD              BIT(14)
+#define                AR9170_MAC_BCN_HT2_SGI                  BIT(15)
+#define                AR9170_MAC_BCN_HT2_LEN_S                16
+#define                AR9170_MAC_BCN_HT2_LEN                  0xffff0000
 
 #define        AR9170_MAC_REG_DMA_TXQX_ADDR_CURR       (AR9170_MAC_REG_BASE + 0xdc0)
 
 #define        AR9170_MC_REG_BASE                      0x1d1000
 
 #define        AR9170_MC_REG_FLASH_WAIT_STATE          (AR9170_MC_REG_BASE + 0x000)
-#define        AR9170_MC_REG_SEEPROM_WP0               (AR9170_MC_REG_BASE + 0x400)
-#define        AR9170_MC_REG_SEEPROM_WP1               (AR9170_MC_REG_BASE + 0x404)
-#define        AR9170_MC_REG_SEEPROM_WP2               (AR9170_MC_REG_BASE + 0x408)
+
+#define AR9170_SPI_REG_BASE                    (AR9170_MC_REG_BASE + 0x200)
+#define AR9170_SPI_REG_CONTROL0                        (AR9170_SPI_REG_BASE + 0x000)
+#define                AR9170_SPI_CONTROL0_BUSY                BIT(0)
+#define                AR9170_SPI_CONTROL0_CMD_GO              BIT(1)
+#define                AR9170_SPI_CONTROL0_PAGE_WR             BIT(2)
+#define                AR9170_SPI_CONTROL0_SEQ_RD              BIT(3)
+#define                AR9170_SPI_CONTROL0_CMD_ABORT           BIT(4)
+#define                AR9170_SPI_CONTROL0_CMD_LEN_S           8
+#define                AR9170_SPI_CONTROL0_CMD_LEN             0x00000f00
+#define                AR9170_SPI_CONTROL0_RD_LEN_S            12
+#define                AR9170_SPI_CONTROL0_RD_LEN              0x00007000
+
+#define        AR9170_SPI_REG_CONTROL1                 (AR9170_SPI_REG_BASE + 0x004)
+#define                AR9170_SPI_CONTROL1_SCK_RATE            BIT(0)
+#define                AR9170_SPI_CONTROL1_DRIVE_SDO           BIT(1)
+#define                AR9170_SPI_CONTROL1_MODE_SEL_S          2
+#define                AR9170_SPI_CONTROL1_MODE_SEL            0x000000c0
+#define                AR9170_SPI_CONTROL1_WRITE_PROTECT       BIT(4)
+
+#define AR9170_SPI_REG_COMMAND_PORT0           (AR9170_SPI_REG_BASE + 0x008)
+#define                AR9170_SPI_COMMAND_PORT0_CMD0_S         0
+#define                AR9170_SPI_COMMAND_PORT0_CMD0           0x000000ff
+#define                AR9170_SPI_COMMAND_PORT0_CMD1_S         8
+#define                AR9170_SPI_COMMAND_PORT0_CMD1           0x0000ff00
+#define                AR9170_SPI_COMMAND_PORT0_CMD2_S         16
+#define                AR9170_SPI_COMMAND_PORT0_CMD2           0x00ff0000
+#define                AR9170_SPI_COMMAND_PORT0_CMD3_S         24
+#define                AR9170_SPI_COMMAND_PORT0_CMD3           0xff000000
+
+#define AR9170_SPI_REG_COMMAND_PORT1           (AR9170_SPI_REG_BASE + 0x00C)
+#define                AR9170_SPI_COMMAND_PORT1_CMD4_S         0
+#define                AR9170_SPI_COMMAND_PORT1_CMD4           0x000000ff
+#define                AR9170_SPI_COMMAND_PORT1_CMD5_S         8
+#define                AR9170_SPI_COMMAND_PORT1_CMD5           0x0000ff00
+#define                AR9170_SPI_COMMAND_PORT1_CMD6_S         16
+#define                AR9170_SPI_COMMAND_PORT1_CMD6           0x00ff0000
+#define                AR9170_SPI_COMMAND_PORT1_CMD7_S         24
+#define                AR9170_SPI_COMMAND_PORT1_CMD7           0xff000000
+
+#define AR9170_SPI_REG_DATA_PORT               (AR9170_SPI_REG_BASE + 0x010)
+#define AR9170_SPI_REG_PAGE_WRITE_LEN          (AR9170_SPI_REG_BASE + 0x014)
+
+#define AR9170_EEPROM_REG_BASE                 (AR9170_MC_REG_BASE + 0x400)
+#define        AR9170_EEPROM_REG_WP_MAGIC1             (AR9170_EEPROM_REG_BASE + 0x000)
+#define                AR9170_EEPROM_WP_MAGIC1                 0x12345678
+
+#define        AR9170_EEPROM_REG_WP_MAGIC2             (AR9170_EEPROM_REG_BASE + 0x004)
+#define                AR9170_EEPROM_WP_MAGIC2                 0x55aa00ff
+
+#define        AR9170_EEPROM_REG_WP_MAGIC3             (AR9170_EEPROM_REG_BASE + 0x008)
+#define                AR9170_EEPROM_WP_MAGIC3                 0x13579ace
+
+#define        AR9170_EEPROM_REG_CLOCK_DIV             (AR9170_EEPROM_REG_BASE + 0x00C)
+#define                AR9170_EEPROM_CLOCK_DIV_FAC_S           0
+#define                AR9170_EEPROM_CLOCK_DIV_FAC             0x000001ff
+#define                AR9170_EEPROM_CLOCK_DIV_FAC_39KHZ       0xff
+#define                AR9170_EEPROM_CLOCK_DIV_FAC_78KHZ       0x7f
+#define                AR9170_EEPROM_CLOCK_DIV_FAC_312KHZ      0x1f
+#define                AR9170_EEPROM_CLOCK_DIV_FAC_10MHZ       0x0
+#define        AR9170_EEPROM_CLOCK_DIV_SOFT_RST                BIT(9)
+
+#define AR9170_EEPROM_REG_MODE                 (AR9170_EEPROM_REG_BASE + 0x010)
+#define        AR9170_EEPROM_MODE_EEPROM_SIZE_16K_PLUS         BIT(31)
+
+#define AR9170_EEPROM_REG_WRITE_PROTECT                (AR9170_EEPROM_REG_BASE + 0x014)
+#define                AR9170_EEPROM_WRITE_PROTECT_WP_STATUS   BIT(0)
+#define                AR9170_EEPROM_WRITE_PROTECT_WP_SET      BIT(8)
 
 /* Interrupt Controller */
 #define        AR9170_MAX_INT_SRC                      9
 
 #define        AR9170_PWR_REG_CHIP_REVISION            (AR9170_PWR_REG_BASE + 0x010)
 #define AR9170_PWR_REG_PLL_ADDAC               (AR9170_PWR_REG_BASE + 0x014)
+#define                AR9170_PWR_PLL_ADDAC_DIV_S              2
+#define                AR9170_PWR_PLL_ADDAC_DIV                0xffc
 #define        AR9170_PWR_REG_WATCH_DOG_MAGIC          (AR9170_PWR_REG_BASE + 0x020)
 
 /* Faraday USB Controller */
 #define        AR9170_USB_REG_MAIN_CTRL                (AR9170_USB_REG_BASE + 0x000)
 #define                AR9170_USB_MAIN_CTRL_REMOTE_WAKEUP      BIT(0)
 #define                AR9170_USB_MAIN_CTRL_ENABLE_GLOBAL_INT  BIT(2)
+#define                AR9170_USB_MAIN_CTRL_GO_TO_SUSPEND      BIT(3)
+#define                AR9170_USB_MAIN_CTRL_RESET              BIT(4)
+#define                AR9170_USB_MAIN_CTRL_CHIP_ENABLE        BIT(5)
 #define                AR9170_USB_MAIN_CTRL_HIGHSPEED          BIT(6)
 
 #define        AR9170_USB_REG_DEVICE_ADDRESS           (AR9170_USB_REG_BASE + 0x001)
 #define        AR9170_USB_REG_INTR_GROUP               (AR9170_USB_REG_BASE + 0x020)
 
 #define        AR9170_USB_REG_INTR_SOURCE_0            (AR9170_USB_REG_BASE + 0x021)
+#define                AR9170_USB_INTR_SRC0_SETUP              BIT(0)
+#define                AR9170_USB_INTR_SRC0_IN                 BIT(1)
+#define                AR9170_USB_INTR_SRC0_OUT                BIT(2)
+#define                AR9170_USB_INTR_SRC0_FAIL               BIT(3) /* ??? */
+#define                AR9170_USB_INTR_SRC0_END                BIT(4) /* ??? */
+#define                AR9170_USB_INTR_SRC0_ABORT              BIT(7)
+
 #define        AR9170_USB_REG_INTR_SOURCE_1            (AR9170_USB_REG_BASE + 0x022)
 #define        AR9170_USB_REG_INTR_SOURCE_2            (AR9170_USB_REG_BASE + 0x023)
 #define        AR9170_USB_REG_INTR_SOURCE_3            (AR9170_USB_REG_BASE + 0x024)
 #define        AR9170_USB_REG_INTR_SOURCE_5            (AR9170_USB_REG_BASE + 0x026)
 #define        AR9170_USB_REG_INTR_SOURCE_6            (AR9170_USB_REG_BASE + 0x027)
 #define        AR9170_USB_REG_INTR_SOURCE_7            (AR9170_USB_REG_BASE + 0x028)
+#define                AR9170_USB_INTR_SRC7_USB_RESET          BIT(1)
+#define                AR9170_USB_INTR_SRC7_USB_SUSPEND        BIT(2)
+#define                AR9170_USB_INTR_SRC7_USB_RESUME         BIT(3)
+#define                AR9170_USB_INTR_SRC7_ISO_SEQ_ERR        BIT(4)
+#define                AR9170_USB_INTR_SRC7_ISO_SEQ_ABORT      BIT(5)
+#define                AR9170_USB_INTR_SRC7_TX0BYTE            BIT(6)
+#define                AR9170_USB_INTR_SRC7_RX0BYTE            BIT(7)
+
+#define        AR9170_USB_REG_IDLE_COUNT               (AR9170_USB_REG_BASE + 0x02f)
 
 #define        AR9170_USB_REG_EP_MAP                   (AR9170_USB_REG_BASE + 0x030)
 #define        AR9170_USB_REG_EP1_MAP                  (AR9170_USB_REG_BASE + 0x030)
 #define        AR9170_USB_REG_EP10_MAP                 (AR9170_USB_REG_BASE + 0x039)
 
 #define        AR9170_USB_REG_EP_IN_MAX_SIZE_HIGH      (AR9170_USB_REG_BASE + 0x03f)
+#define                AR9170_USB_EP_IN_STALL                  0x8
 #define                AR9170_USB_EP_IN_TOGGLE                 0x10
 
 #define        AR9170_USB_REG_EP_IN_MAX_SIZE_LOW       (AR9170_USB_REG_BASE + 0x03e)
 
 #define        AR9170_USB_REG_EP_OUT_MAX_SIZE_HIGH     (AR9170_USB_REG_BASE + 0x05f)
+#define                AR9170_USB_EP_OUT_STALL                 0x8
 #define                AR9170_USB_EP_OUT_TOGGLE                0x10
 
 #define        AR9170_USB_REG_EP_OUT_MAX_SIZE_LOW      (AR9170_USB_REG_BASE + 0x05e)
 
 #define        AR9170_USB_REG_MAX_AGG_UPLOAD           (AR9170_USB_REG_BASE + 0x110)
 #define        AR9170_USB_REG_UPLOAD_TIME_CTL          (AR9170_USB_REG_BASE + 0x114)
+
+#define AR9170_USB_REG_WAKE_UP                 (AR9170_USB_REG_BASE + 0x120)
+#define                AR9170_USB_WAKE_UP_WAKE                 BIT(0)
+
 #define        AR9170_USB_REG_CBUS_CTRL                (AR9170_USB_REG_BASE + 0x1f0)
 #define                AR9170_USB_CBUS_CTRL_BUFFER_END         (BIT(1))
 
 #define        AR9170_CAM_MAX_USER                     64
 #define        AR9170_CAM_MAX_KEY_LENGTH               16
 
-#define AR9170_PRAM_OFFSET                     0x200000
+#define AR9170_SRAM_OFFSET             0x100000
+#define AR9170_SRAM_SIZE               0x18000
+
+#define AR9170_PRAM_OFFSET             0x200000
+#define AR9170_PRAM_SIZE               0x8000
 
 enum cpu_clock {
        AHB_STATIC_40MHZ = 0,
@@ -708,7 +852,8 @@ struct ar9170_stream {
        __le16 tag;
 
        u8 payload[0];
-};
+} __packed __aligned(4);
+#define AR9170_STREAM_LEN                              4
 
 #define AR9170_MAX_ACKTABLE_ENTRIES                    8
 #define AR9170_MAX_VIRTUAL_MAC                         7
@@ -727,6 +872,13 @@ struct ar9170_stream {
 #define SET_VAL(reg, value, newvalue)                                  \
        (value = ((value) & ~reg) | (((newvalue) << reg##_S) & reg))
 
+#define SET_CONSTVAL(reg, newvalue)                                    \
+       (((newvalue) << reg##_S) & reg)
+
 #define MOD_VAL(reg, value, newvalue)                                  \
        (((value) & ~reg) | (((newvalue) << reg##_S) & reg))
+
+#define GET_VAL(reg, value)                                            \
+       (((value) & reg) >> reg##_S)
+
 #endif /* __CARL9170_SHARED_HW_H */