1 #ifndef __CPM_H__ 2 #define __CPM_H__ 3 4 #include <stdint.h> 5 6 /* Public functions. */ 7 8 int jz4740_init(); 9 10 int jz4740_cpm_have_pll(void *cpm_base); 11 12 int jz4740_cpm_have_clock(void *cpm_base); 13 void jz4740_cpm_start_clock(void *cpm_base); 14 15 uint32_t jz4740_cpm_get_cpu_frequency(void *cpm_base); 16 uint32_t jz4740_cpm_get_memory_frequency(void *cpm_base); 17 18 void jz4740_cpm_set_lcd_frequencies(void *cpm_base, uint32_t pclk, uint8_t ratio); 19 void jz4740_cpm_update_output_frequency(void *cpm_base); 20 21 void jz4740_cpm_start_lcd(void *cpm_base); 22 void jz4740_cpm_stop_lcd(void *cpm_base); 23 24 uint32_t jz4740_cpm_ctrl_get(void *cpm_base, uint32_t reg); 25 void jz4740_cpm_ctrl_set(void *cpm_base, uint32_t reg, uint32_t value); 26 27 /* Register offsets. */ 28 29 #define CPM_CPCCR 0x00 30 #define CPM_LCR 0x04 31 #define CPM_RSR 0x08 32 #define CPM_CPPCR 0x10 33 34 #ifdef CONFIG_CPU_JZ4730 35 36 /* Names used by the jz4730. */ 37 38 #define CPM_CFCR CPM_CPCCR 39 #define CPM_LPCR CPM_LCR 40 #define CPM_RSTR CPM_RSR 41 #define CPM_PLCR1 CPM_CPPCR 42 #define CPM_CFCR2 CPM_I2SCDR /* apparently used by the LCD */ 43 44 /* Registers used by the jz4730. */ 45 46 #define CPM_OCR 0x1c 47 #define CPM_MSCR 0x20 /* different layout to CLKGR */ 48 #define CPM_WRER 0x28 49 #define CPM_WFER 0x2c 50 #define CPM_WER 0x30 51 #define CPM_WSR 0x34 52 #define CPM_GSR0 0x38 53 #define CPM_GSR1 0x3c 54 #define CPM_GSR2 0x40 55 #define CPM_SPR 0x44 56 #define CPM_GSR3 0x48 57 58 #else 59 60 /* Registers used by the jz4740. */ 61 62 #define CPM_CLKGR 0x20 63 #define CPM_SCR 0x24 64 #define CPM_HCR 0x30 65 #define CPM_HWFCR 0x34 66 #define CPM_HRCR 0x38 67 #define CPM_HWCR 0x3c 68 #define CPM_HWSR 0x40 69 #define CPM_HSPR 0x44 70 #define CPM_I2SCDR 0x60 71 #define CPM_LPCDR 0x64 72 #define CPM_MSCCDR 0x68 73 #define CPM_UHCCDR 0x6C 74 75 #endif 76 77 #endif /* __CPM_H__ */