18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (C) 2008 Andres Salomon <dilinger@debian.org> 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Geode GX2 header information 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci#ifndef _GXFB_H_ 88c2ecf20Sopenharmony_ci#define _GXFB_H_ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#include <linux/io.h> 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci#define GP_REG_COUNT (0x50 / 4) 138c2ecf20Sopenharmony_ci#define DC_REG_COUNT (0x90 / 4) 148c2ecf20Sopenharmony_ci#define VP_REG_COUNT (0x138 / 8) 158c2ecf20Sopenharmony_ci#define FP_REG_COUNT (0x68 / 8) 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci#define DC_PAL_COUNT 0x104 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_cistruct gxfb_par { 208c2ecf20Sopenharmony_ci int enable_crt; 218c2ecf20Sopenharmony_ci void __iomem *dc_regs; 228c2ecf20Sopenharmony_ci void __iomem *vid_regs; 238c2ecf20Sopenharmony_ci void __iomem *gp_regs; 248c2ecf20Sopenharmony_ci int powered_down; 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ci /* register state, for power management functionality */ 278c2ecf20Sopenharmony_ci struct { 288c2ecf20Sopenharmony_ci uint64_t padsel; 298c2ecf20Sopenharmony_ci uint64_t dotpll; 308c2ecf20Sopenharmony_ci } msr; 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ci uint32_t gp[GP_REG_COUNT]; 338c2ecf20Sopenharmony_ci uint32_t dc[DC_REG_COUNT]; 348c2ecf20Sopenharmony_ci uint64_t vp[VP_REG_COUNT]; 358c2ecf20Sopenharmony_ci uint64_t fp[FP_REG_COUNT]; 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ci uint32_t pal[DC_PAL_COUNT]; 388c2ecf20Sopenharmony_ci}; 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ciunsigned int gx_frame_buffer_size(void); 418c2ecf20Sopenharmony_ciint gx_line_delta(int xres, int bpp); 428c2ecf20Sopenharmony_civoid gx_set_mode(struct fb_info *info); 438c2ecf20Sopenharmony_civoid gx_set_hw_palette_reg(struct fb_info *info, unsigned regno, 448c2ecf20Sopenharmony_ci unsigned red, unsigned green, unsigned blue); 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_civoid gx_set_dclk_frequency(struct fb_info *info); 478c2ecf20Sopenharmony_civoid gx_configure_display(struct fb_info *info); 488c2ecf20Sopenharmony_ciint gx_blank_display(struct fb_info *info, int blank_mode); 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ciint gx_powerdown(struct fb_info *info); 518c2ecf20Sopenharmony_ciint gx_powerup(struct fb_info *info); 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ci/* Graphics Processor registers (table 6-23 from the data book) */ 548c2ecf20Sopenharmony_cienum gp_registers { 558c2ecf20Sopenharmony_ci GP_DST_OFFSET = 0, 568c2ecf20Sopenharmony_ci GP_SRC_OFFSET, 578c2ecf20Sopenharmony_ci GP_STRIDE, 588c2ecf20Sopenharmony_ci GP_WID_HEIGHT, 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_ci GP_SRC_COLOR_FG, 618c2ecf20Sopenharmony_ci GP_SRC_COLOR_BG, 628c2ecf20Sopenharmony_ci GP_PAT_COLOR_0, 638c2ecf20Sopenharmony_ci GP_PAT_COLOR_1, 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ci GP_PAT_COLOR_2, 668c2ecf20Sopenharmony_ci GP_PAT_COLOR_3, 678c2ecf20Sopenharmony_ci GP_PAT_COLOR_4, 688c2ecf20Sopenharmony_ci GP_PAT_COLOR_5, 698c2ecf20Sopenharmony_ci 708c2ecf20Sopenharmony_ci GP_PAT_DATA_0, 718c2ecf20Sopenharmony_ci GP_PAT_DATA_1, 728c2ecf20Sopenharmony_ci GP_RASTER_MODE, 738c2ecf20Sopenharmony_ci GP_VECTOR_MODE, 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_ci GP_BLT_MODE, 768c2ecf20Sopenharmony_ci GP_BLT_STATUS, 778c2ecf20Sopenharmony_ci GP_HST_SRC, 788c2ecf20Sopenharmony_ci GP_BASE_OFFSET, /* 0x4c */ 798c2ecf20Sopenharmony_ci}; 808c2ecf20Sopenharmony_ci 818c2ecf20Sopenharmony_ci#define GP_BLT_STATUS_BLT_PENDING (1 << 2) 828c2ecf20Sopenharmony_ci#define GP_BLT_STATUS_BLT_BUSY (1 << 0) 838c2ecf20Sopenharmony_ci 848c2ecf20Sopenharmony_ci 858c2ecf20Sopenharmony_ci/* Display Controller registers (table 6-38 from the data book) */ 868c2ecf20Sopenharmony_cienum dc_registers { 878c2ecf20Sopenharmony_ci DC_UNLOCK = 0, 888c2ecf20Sopenharmony_ci DC_GENERAL_CFG, 898c2ecf20Sopenharmony_ci DC_DISPLAY_CFG, 908c2ecf20Sopenharmony_ci DC_RSVD_0, 918c2ecf20Sopenharmony_ci 928c2ecf20Sopenharmony_ci DC_FB_ST_OFFSET, 938c2ecf20Sopenharmony_ci DC_CB_ST_OFFSET, 948c2ecf20Sopenharmony_ci DC_CURS_ST_OFFSET, 958c2ecf20Sopenharmony_ci DC_ICON_ST_OFFSET, 968c2ecf20Sopenharmony_ci 978c2ecf20Sopenharmony_ci DC_VID_Y_ST_OFFSET, 988c2ecf20Sopenharmony_ci DC_VID_U_ST_OFFSET, 998c2ecf20Sopenharmony_ci DC_VID_V_ST_OFFSET, 1008c2ecf20Sopenharmony_ci DC_RSVD_1, 1018c2ecf20Sopenharmony_ci 1028c2ecf20Sopenharmony_ci DC_LINE_SIZE, 1038c2ecf20Sopenharmony_ci DC_GFX_PITCH, 1048c2ecf20Sopenharmony_ci DC_VID_YUV_PITCH, 1058c2ecf20Sopenharmony_ci DC_RSVD_2, 1068c2ecf20Sopenharmony_ci 1078c2ecf20Sopenharmony_ci DC_H_ACTIVE_TIMING, 1088c2ecf20Sopenharmony_ci DC_H_BLANK_TIMING, 1098c2ecf20Sopenharmony_ci DC_H_SYNC_TIMING, 1108c2ecf20Sopenharmony_ci DC_RSVD_3, 1118c2ecf20Sopenharmony_ci 1128c2ecf20Sopenharmony_ci DC_V_ACTIVE_TIMING, 1138c2ecf20Sopenharmony_ci DC_V_BLANK_TIMING, 1148c2ecf20Sopenharmony_ci DC_V_SYNC_TIMING, 1158c2ecf20Sopenharmony_ci DC_RSVD_4, 1168c2ecf20Sopenharmony_ci 1178c2ecf20Sopenharmony_ci DC_CURSOR_X, 1188c2ecf20Sopenharmony_ci DC_CURSOR_Y, 1198c2ecf20Sopenharmony_ci DC_ICON_X, 1208c2ecf20Sopenharmony_ci DC_LINE_CNT, 1218c2ecf20Sopenharmony_ci 1228c2ecf20Sopenharmony_ci DC_PAL_ADDRESS, 1238c2ecf20Sopenharmony_ci DC_PAL_DATA, 1248c2ecf20Sopenharmony_ci DC_DFIFO_DIAG, 1258c2ecf20Sopenharmony_ci DC_CFIFO_DIAG, 1268c2ecf20Sopenharmony_ci 1278c2ecf20Sopenharmony_ci DC_VID_DS_DELTA, 1288c2ecf20Sopenharmony_ci DC_GLIU0_MEM_OFFSET, 1298c2ecf20Sopenharmony_ci DC_RSVD_5, 1308c2ecf20Sopenharmony_ci DC_DV_ACC, /* 0x8c */ 1318c2ecf20Sopenharmony_ci}; 1328c2ecf20Sopenharmony_ci 1338c2ecf20Sopenharmony_ci#define DC_UNLOCK_LOCK 0x00000000 1348c2ecf20Sopenharmony_ci#define DC_UNLOCK_UNLOCK 0x00004758 /* magic value */ 1358c2ecf20Sopenharmony_ci 1368c2ecf20Sopenharmony_ci#define DC_GENERAL_CFG_YUVM (1 << 20) 1378c2ecf20Sopenharmony_ci#define DC_GENERAL_CFG_VDSE (1 << 19) 1388c2ecf20Sopenharmony_ci#define DC_GENERAL_CFG_DFHPEL_SHIFT 12 1398c2ecf20Sopenharmony_ci#define DC_GENERAL_CFG_DFHPSL_SHIFT 8 1408c2ecf20Sopenharmony_ci#define DC_GENERAL_CFG_DECE (1 << 6) 1418c2ecf20Sopenharmony_ci#define DC_GENERAL_CFG_CMPE (1 << 5) 1428c2ecf20Sopenharmony_ci#define DC_GENERAL_CFG_VIDE (1 << 3) 1438c2ecf20Sopenharmony_ci#define DC_GENERAL_CFG_ICNE (1 << 2) 1448c2ecf20Sopenharmony_ci#define DC_GENERAL_CFG_CURE (1 << 1) 1458c2ecf20Sopenharmony_ci#define DC_GENERAL_CFG_DFLE (1 << 0) 1468c2ecf20Sopenharmony_ci 1478c2ecf20Sopenharmony_ci#define DC_DISPLAY_CFG_A20M (1 << 31) 1488c2ecf20Sopenharmony_ci#define DC_DISPLAY_CFG_A18M (1 << 30) 1498c2ecf20Sopenharmony_ci#define DC_DISPLAY_CFG_PALB (1 << 25) 1508c2ecf20Sopenharmony_ci#define DC_DISPLAY_CFG_DISP_MODE_24BPP (1 << 9) 1518c2ecf20Sopenharmony_ci#define DC_DISPLAY_CFG_DISP_MODE_16BPP (1 << 8) 1528c2ecf20Sopenharmony_ci#define DC_DISPLAY_CFG_DISP_MODE_8BPP (0) 1538c2ecf20Sopenharmony_ci#define DC_DISPLAY_CFG_VDEN (1 << 4) 1548c2ecf20Sopenharmony_ci#define DC_DISPLAY_CFG_GDEN (1 << 3) 1558c2ecf20Sopenharmony_ci#define DC_DISPLAY_CFG_TGEN (1 << 0) 1568c2ecf20Sopenharmony_ci 1578c2ecf20Sopenharmony_ci 1588c2ecf20Sopenharmony_ci/* 1598c2ecf20Sopenharmony_ci * Video Processor registers (table 6-54). 1608c2ecf20Sopenharmony_ci * There is space for 64 bit values, but we never use more than the 1618c2ecf20Sopenharmony_ci * lower 32 bits. The actual register save/restore code only bothers 1628c2ecf20Sopenharmony_ci * to restore those 32 bits. 1638c2ecf20Sopenharmony_ci */ 1648c2ecf20Sopenharmony_cienum vp_registers { 1658c2ecf20Sopenharmony_ci VP_VCFG = 0, 1668c2ecf20Sopenharmony_ci VP_DCFG, 1678c2ecf20Sopenharmony_ci 1688c2ecf20Sopenharmony_ci VP_VX, 1698c2ecf20Sopenharmony_ci VP_VY, 1708c2ecf20Sopenharmony_ci 1718c2ecf20Sopenharmony_ci VP_VS, 1728c2ecf20Sopenharmony_ci VP_VCK, 1738c2ecf20Sopenharmony_ci 1748c2ecf20Sopenharmony_ci VP_VCM, 1758c2ecf20Sopenharmony_ci VP_GAR, 1768c2ecf20Sopenharmony_ci 1778c2ecf20Sopenharmony_ci VP_GDR, 1788c2ecf20Sopenharmony_ci VP_RSVD_0, 1798c2ecf20Sopenharmony_ci 1808c2ecf20Sopenharmony_ci VP_MISC, 1818c2ecf20Sopenharmony_ci VP_CCS, 1828c2ecf20Sopenharmony_ci 1838c2ecf20Sopenharmony_ci VP_RSVD_1, 1848c2ecf20Sopenharmony_ci VP_RSVD_2, 1858c2ecf20Sopenharmony_ci 1868c2ecf20Sopenharmony_ci VP_RSVD_3, 1878c2ecf20Sopenharmony_ci VP_VDC, 1888c2ecf20Sopenharmony_ci 1898c2ecf20Sopenharmony_ci VP_VCO, 1908c2ecf20Sopenharmony_ci VP_CRC, 1918c2ecf20Sopenharmony_ci 1928c2ecf20Sopenharmony_ci VP_CRC32, 1938c2ecf20Sopenharmony_ci VP_VDE, 1948c2ecf20Sopenharmony_ci 1958c2ecf20Sopenharmony_ci VP_CCK, 1968c2ecf20Sopenharmony_ci VP_CCM, 1978c2ecf20Sopenharmony_ci 1988c2ecf20Sopenharmony_ci VP_CC1, 1998c2ecf20Sopenharmony_ci VP_CC2, 2008c2ecf20Sopenharmony_ci 2018c2ecf20Sopenharmony_ci VP_A1X, 2028c2ecf20Sopenharmony_ci VP_A1Y, 2038c2ecf20Sopenharmony_ci 2048c2ecf20Sopenharmony_ci VP_A1C, 2058c2ecf20Sopenharmony_ci VP_A1T, 2068c2ecf20Sopenharmony_ci 2078c2ecf20Sopenharmony_ci VP_A2X, 2088c2ecf20Sopenharmony_ci VP_A2Y, 2098c2ecf20Sopenharmony_ci 2108c2ecf20Sopenharmony_ci VP_A2C, 2118c2ecf20Sopenharmony_ci VP_A2T, 2128c2ecf20Sopenharmony_ci 2138c2ecf20Sopenharmony_ci VP_A3X, 2148c2ecf20Sopenharmony_ci VP_A3Y, 2158c2ecf20Sopenharmony_ci 2168c2ecf20Sopenharmony_ci VP_A3C, 2178c2ecf20Sopenharmony_ci VP_A3T, 2188c2ecf20Sopenharmony_ci 2198c2ecf20Sopenharmony_ci VP_VRR, 2208c2ecf20Sopenharmony_ci VP_AWT, 2218c2ecf20Sopenharmony_ci 2228c2ecf20Sopenharmony_ci VP_VTM, /* 0x130 */ 2238c2ecf20Sopenharmony_ci}; 2248c2ecf20Sopenharmony_ci 2258c2ecf20Sopenharmony_ci#define VP_VCFG_VID_EN (1 << 0) 2268c2ecf20Sopenharmony_ci 2278c2ecf20Sopenharmony_ci#define VP_DCFG_DAC_VREF (1 << 26) 2288c2ecf20Sopenharmony_ci#define VP_DCFG_GV_GAM (1 << 21) 2298c2ecf20Sopenharmony_ci#define VP_DCFG_VG_CK (1 << 20) 2308c2ecf20Sopenharmony_ci#define VP_DCFG_CRT_SYNC_SKW_DEFAULT (1 << 16) 2318c2ecf20Sopenharmony_ci#define VP_DCFG_CRT_SYNC_SKW ((1 << 14) | (1 << 15) | (1 << 16)) 2328c2ecf20Sopenharmony_ci#define VP_DCFG_CRT_VSYNC_POL (1 << 9) 2338c2ecf20Sopenharmony_ci#define VP_DCFG_CRT_HSYNC_POL (1 << 8) 2348c2ecf20Sopenharmony_ci#define VP_DCFG_FP_DATA_EN (1 << 7) /* undocumented */ 2358c2ecf20Sopenharmony_ci#define VP_DCFG_FP_PWR_EN (1 << 6) /* undocumented */ 2368c2ecf20Sopenharmony_ci#define VP_DCFG_DAC_BL_EN (1 << 3) 2378c2ecf20Sopenharmony_ci#define VP_DCFG_VSYNC_EN (1 << 2) 2388c2ecf20Sopenharmony_ci#define VP_DCFG_HSYNC_EN (1 << 1) 2398c2ecf20Sopenharmony_ci#define VP_DCFG_CRT_EN (1 << 0) 2408c2ecf20Sopenharmony_ci 2418c2ecf20Sopenharmony_ci#define VP_MISC_GAM_EN (1 << 0) 2428c2ecf20Sopenharmony_ci#define VP_MISC_DACPWRDN (1 << 10) 2438c2ecf20Sopenharmony_ci#define VP_MISC_APWRDN (1 << 11) 2448c2ecf20Sopenharmony_ci 2458c2ecf20Sopenharmony_ci 2468c2ecf20Sopenharmony_ci/* 2478c2ecf20Sopenharmony_ci * Flat Panel registers (table 6-55). 2488c2ecf20Sopenharmony_ci * Also 64 bit registers; see above note about 32-bit handling. 2498c2ecf20Sopenharmony_ci */ 2508c2ecf20Sopenharmony_ci 2518c2ecf20Sopenharmony_ci/* we're actually in the VP register space, starting at address 0x400 */ 2528c2ecf20Sopenharmony_ci#define VP_FP_START 0x400 2538c2ecf20Sopenharmony_ci 2548c2ecf20Sopenharmony_cienum fp_registers { 2558c2ecf20Sopenharmony_ci FP_PT1 = 0, 2568c2ecf20Sopenharmony_ci FP_PT2, 2578c2ecf20Sopenharmony_ci 2588c2ecf20Sopenharmony_ci FP_PM, 2598c2ecf20Sopenharmony_ci FP_DFC, 2608c2ecf20Sopenharmony_ci 2618c2ecf20Sopenharmony_ci FP_BLFSR, 2628c2ecf20Sopenharmony_ci FP_RLFSR, 2638c2ecf20Sopenharmony_ci 2648c2ecf20Sopenharmony_ci FP_FMI, 2658c2ecf20Sopenharmony_ci FP_FMD, 2668c2ecf20Sopenharmony_ci 2678c2ecf20Sopenharmony_ci FP_RSVD_0, 2688c2ecf20Sopenharmony_ci FP_DCA, 2698c2ecf20Sopenharmony_ci 2708c2ecf20Sopenharmony_ci FP_DMD, 2718c2ecf20Sopenharmony_ci FP_CRC, 2728c2ecf20Sopenharmony_ci 2738c2ecf20Sopenharmony_ci FP_FBB, /* 0x460 */ 2748c2ecf20Sopenharmony_ci}; 2758c2ecf20Sopenharmony_ci 2768c2ecf20Sopenharmony_ci#define FP_PT1_VSIZE_SHIFT 16 /* undocumented? */ 2778c2ecf20Sopenharmony_ci#define FP_PT1_VSIZE_MASK 0x7FF0000 /* undocumented? */ 2788c2ecf20Sopenharmony_ci 2798c2ecf20Sopenharmony_ci#define FP_PT2_HSP (1 << 22) 2808c2ecf20Sopenharmony_ci#define FP_PT2_VSP (1 << 23) 2818c2ecf20Sopenharmony_ci 2828c2ecf20Sopenharmony_ci#define FP_PM_P (1 << 24) /* panel power on */ 2838c2ecf20Sopenharmony_ci#define FP_PM_PANEL_PWR_UP (1 << 3) /* r/o */ 2848c2ecf20Sopenharmony_ci#define FP_PM_PANEL_PWR_DOWN (1 << 2) /* r/o */ 2858c2ecf20Sopenharmony_ci#define FP_PM_PANEL_OFF (1 << 1) /* r/o */ 2868c2ecf20Sopenharmony_ci#define FP_PM_PANEL_ON (1 << 0) /* r/o */ 2878c2ecf20Sopenharmony_ci 2888c2ecf20Sopenharmony_ci#define FP_DFC_NFI ((1 << 4) | (1 << 5) | (1 << 6)) 2898c2ecf20Sopenharmony_ci 2908c2ecf20Sopenharmony_ci 2918c2ecf20Sopenharmony_ci/* register access functions */ 2928c2ecf20Sopenharmony_ci 2938c2ecf20Sopenharmony_cistatic inline uint32_t read_gp(struct gxfb_par *par, int reg) 2948c2ecf20Sopenharmony_ci{ 2958c2ecf20Sopenharmony_ci return readl(par->gp_regs + 4*reg); 2968c2ecf20Sopenharmony_ci} 2978c2ecf20Sopenharmony_ci 2988c2ecf20Sopenharmony_cistatic inline void write_gp(struct gxfb_par *par, int reg, uint32_t val) 2998c2ecf20Sopenharmony_ci{ 3008c2ecf20Sopenharmony_ci writel(val, par->gp_regs + 4*reg); 3018c2ecf20Sopenharmony_ci} 3028c2ecf20Sopenharmony_ci 3038c2ecf20Sopenharmony_cistatic inline uint32_t read_dc(struct gxfb_par *par, int reg) 3048c2ecf20Sopenharmony_ci{ 3058c2ecf20Sopenharmony_ci return readl(par->dc_regs + 4*reg); 3068c2ecf20Sopenharmony_ci} 3078c2ecf20Sopenharmony_ci 3088c2ecf20Sopenharmony_cistatic inline void write_dc(struct gxfb_par *par, int reg, uint32_t val) 3098c2ecf20Sopenharmony_ci{ 3108c2ecf20Sopenharmony_ci writel(val, par->dc_regs + 4*reg); 3118c2ecf20Sopenharmony_ci} 3128c2ecf20Sopenharmony_ci 3138c2ecf20Sopenharmony_cistatic inline uint32_t read_vp(struct gxfb_par *par, int reg) 3148c2ecf20Sopenharmony_ci{ 3158c2ecf20Sopenharmony_ci return readl(par->vid_regs + 8*reg); 3168c2ecf20Sopenharmony_ci} 3178c2ecf20Sopenharmony_ci 3188c2ecf20Sopenharmony_cistatic inline void write_vp(struct gxfb_par *par, int reg, uint32_t val) 3198c2ecf20Sopenharmony_ci{ 3208c2ecf20Sopenharmony_ci writel(val, par->vid_regs + 8*reg); 3218c2ecf20Sopenharmony_ci} 3228c2ecf20Sopenharmony_ci 3238c2ecf20Sopenharmony_cistatic inline uint32_t read_fp(struct gxfb_par *par, int reg) 3248c2ecf20Sopenharmony_ci{ 3258c2ecf20Sopenharmony_ci return readl(par->vid_regs + 8*reg + VP_FP_START); 3268c2ecf20Sopenharmony_ci} 3278c2ecf20Sopenharmony_ci 3288c2ecf20Sopenharmony_cistatic inline void write_fp(struct gxfb_par *par, int reg, uint32_t val) 3298c2ecf20Sopenharmony_ci{ 3308c2ecf20Sopenharmony_ci writel(val, par->vid_regs + 8*reg + VP_FP_START); 3318c2ecf20Sopenharmony_ci} 3328c2ecf20Sopenharmony_ci 3338c2ecf20Sopenharmony_ci 3348c2ecf20Sopenharmony_ci/* MSRs are defined in linux/cs5535.h; their bitfields are here */ 3358c2ecf20Sopenharmony_ci 3368c2ecf20Sopenharmony_ci#define MSR_GLCP_SYS_RSTPLL_DOTPOSTDIV3 (1 << 3) 3378c2ecf20Sopenharmony_ci#define MSR_GLCP_SYS_RSTPLL_DOTPREMULT2 (1 << 2) 3388c2ecf20Sopenharmony_ci#define MSR_GLCP_SYS_RSTPLL_DOTPREDIV2 (1 << 1) 3398c2ecf20Sopenharmony_ci 3408c2ecf20Sopenharmony_ci#define MSR_GLCP_DOTPLL_LOCK (1 << 25) /* r/o */ 3418c2ecf20Sopenharmony_ci#define MSR_GLCP_DOTPLL_BYPASS (1 << 15) 3428c2ecf20Sopenharmony_ci#define MSR_GLCP_DOTPLL_DOTRESET (1 << 0) 3438c2ecf20Sopenharmony_ci 3448c2ecf20Sopenharmony_ci#define MSR_GX_MSR_PADSEL_MASK 0x3FFFFFFF /* undocumented? */ 3458c2ecf20Sopenharmony_ci#define MSR_GX_MSR_PADSEL_TFT 0x1FFFFFFF /* undocumented? */ 3468c2ecf20Sopenharmony_ci 3478c2ecf20Sopenharmony_ci#define MSR_GX_GLD_MSR_CONFIG_FP (1 << 3) 3488c2ecf20Sopenharmony_ci 3498c2ecf20Sopenharmony_ci#endif 350