You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							59 lines
						
					
					
						
							2.2 KiB
						
					
					
				
			
		
		
	
	
							59 lines
						
					
					
						
							2.2 KiB
						
					
					
				#include <stdio.h>
 | 
						|
#include <fcntl.h>
 | 
						|
#include <sys/mman.h>
 | 
						|
 | 
						|
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);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
 |