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.
		
		
		
		
			
				
					60 lines
				
				2.2 KiB
			
		
		
			
		
	
	
					60 lines
				
				2.2 KiB
			| 
								 
											6 years ago
										 
									 | 
							
								#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);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 |