esp-open-rtos/core/include/esp/phy_regs.h
2016-09-15 22:31:45 +03:00

74 lines
1.8 KiB
C

/* esp/phy_regs.h
*
* ESP8266 PHY register definitions
*
* Not compatible with ESP SDK register access code.
*/
#ifndef _ESP_PHY_REGS_H
#define _ESP_PHY_REGS_H
#include "esp/types.h"
#include "common_macros.h"
#define PHY_BASE 0x60000500
#define PHY (*(struct PHY_REGS *)(PHY_BASE))
struct PHY_REGS {
// 0x00 — 0x60
uint32_t volatile _gap0[24];
// TX digital predistortion control
// 0x60
uint32_t volatile TX_DPD;
// 0x64 — 0x7c
uint32_t volatile _gap1[6];
// IQ imbalance estimation control
// 0x7c
uint32_t volatile IQ_EST;
// Looks like RSSI,
// may be per OFDM subcarrier
// 0x80
uint32_t volatile RX_IQ_0;
// 0x84
uint32_t volatile RX_IQ_1;
// 0x88
uint32_t volatile RX_IQ_2;
// 0x8c
uint32_t volatile RX_IQ_3;
// RX gain control
// 0x90
uint32_t volatile RX_GAIN_CTL;
// Whatever pbus is, these registers controls it
// 0x94
uint32_t volatile PBUS_CTL_0;
// 0x98
uint32_t volatile PBUS_CTL_1;
// 0x9C
uint32_t volatile PBUS_CTL_2;
// 0xA0
uint32_t volatile PBUS_CTL_3;
uint32_t volatile _gap2[5];
// Looks like baseband synthesizer control regs
// 0xB8
uint32_t volatile BB_CTL_0;
// 0xBC
uint32_t volatile BB_CTL_1;
// 0xC0
uint32_t volatile BB_CTL_2;
// 0xC4
uint32_t volatile BB_CTL_3;
// These registers do exist but I don't know
// what they are for.
// 0xC8
uint32_t volatile UNK_0;
uint32_t volatile UNK_1;
uint32_t volatile UNK_2;
uint32_t volatile UNK_3;
uint32_t volatile UNK_4;
};
_Static_assert((uintptr_t) &PHY.TX_DPD == 0x60000560, "RF PHY TX_DPD address");
_Static_assert((uintptr_t) &PHY.IQ_EST == 0x6000057C, "RF PHY IQ_EST address");
_Static_assert((uintptr_t) &PHY.BB_CTL_3 == 0x600005C4, "RF PHY BB_CTL_3 address");
#endif /* _ESP_PHY_REGS_H */