74 lines
1.8 KiB
C
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 */
|