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