#include #include #include void hexdump(uint32_t *d, int l) { for (int i = 0; i < l; i++) { if (i%0x10 == 0 && i != 0) printf("\n"); printf("%8x ", d[i]); } printf("\n"); } /* Power cluster primary PLL */ #define C0_PLL_MODE 0x0 #define C0_PLL_L_VAL 0x4 #define C0_PLL_ALPHA 0x8 #define C0_PLL_USER_CTL 0x10 #define C0_PLL_CONFIG_CTL 0x18 #define C0_PLL_CONFIG_CTL_HI 0x1C #define C0_PLL_STATUS 0x28 #define C0_PLL_TEST_CTL_LO 0x20 #define C0_PLL_TEST_CTL_HI 0x24 /* Power cluster alt PLL */ #define C0_PLLA_MODE 0x100 #define C0_PLLA_L_VAL 0x104 #define C0_PLLA_ALPHA 0x108 #define C0_PLLA_USER_CTL 0x110 #define C0_PLLA_CONFIG_CTL 0x118 #define C0_PLLA_STATUS 0x128 #define C0_PLLA_TEST_CTL_LO 0x120 #define APC_DIAG_OFFSET 0x48 #define CLK_CTL_OFFSET 0x44 #define MUX_OFFSET 0x40 #define MDD_DROOP_CODE 0x7c #define SSSCTL_OFFSET 0x160 #define PSCTL_OFFSET 0x164 int main() { int fd = open("/dev/mem", O_RDWR); volatile uint32_t *mb = (uint32_t*)mmap(0,0x1000,PROT_READ | PROT_WRITE,MAP_SHARED,fd,0x06400000); volatile uint32_t *mc = (uint32_t*)mmap(0,0x1000,PROT_READ | PROT_WRITE,MAP_SHARED,fd,0x06480000); volatile uint32_t *md = (uint32_t*)mmap(0,0x1000,PROT_READ | PROT_WRITE,MAP_SHARED,fd,0x09A20000); while (1) { printf("PLL MODE:%x L_VAL:%x ALPHA:%x USER_CTL:%x CONFIG_CTL:%x CONFIG_CTL_HI:%x STATUS:%x TEST_CTL_LO:%x TEST_CTL_HI:%x\n", mb[C0_PLL_MODE/4], mb[C0_PLL_L_VAL/4], mb[C0_PLL_ALPHA/4], mb[C0_PLL_USER_CTL/4], mb[C0_PLL_CONFIG_CTL/4], mb[C0_PLL_CONFIG_CTL_HI/4], mb[C0_PLL_STATUS/4], mb[C0_PLL_TEST_CTL_LO/4], mb[C0_PLL_TEST_CTL_HI/4]); printf(" MUX_OFFSET:%x CLK_CTL_OFFSET:%x APC_DIAG_OFFSET:%x MDD_DROOP_CODE:%x\n", mb[MUX_OFFSET/4], mb[CLK_CTL_OFFSET/4], mb[APC_DIAG_OFFSET/4], mb[MDD_DROOP_CODE/4]); printf(" PLLA MODE:%x L_VAL:%x ALPHA:%x USER_CTL:%x CONFIG_CTL:%x STATUS:%x TEST_CTL_LO:%x SSSCTL_OFFSET:%x PSCTL_OFFSET:%x\n", mb[C0_PLLA_MODE/4], mb[C0_PLLA_L_VAL/4], mb[C0_PLLA_ALPHA/4], mb[C0_PLLA_USER_CTL/4], mb[C0_PLLA_CONFIG_CTL/4], mb[C0_PLLA_STATUS/4], mb[C0_PLLA_TEST_CTL_LO/4], mb[SSSCTL_OFFSET/4], mb[PSCTL_OFFSET/4]); usleep(1000*100); } }