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);
 | |
|   }
 | |
| }
 | |
| 
 | |
| 
 |