8 #include <soc/periph.h>
9 #include <soc/sysreg.h>
13 static inline void fwadl(
unsigned long l,
void *v) {
17 #define lwritel(a,b) fwadl((unsigned long)(a), (void *)(b))
19 static inline unsigned long fradl(
void *v) {
20 unsigned long l = readl(v);
25 #define lreadl(a) fradl((void *)(a))
28 #define lwritel(a,b) write32((void *)(b), (unsigned long)(a))
29 #define lreadl(a) read32((void *)(a))
61 pclk = sclk / (ratio + 1);
69 printk(
BIOS_SPEW,
"%s %s\n", __func__, enabled ?
"enabled" :
"not enabled");
138 void *screen_base,
int win_id)
140 u32 start_addr, end_addr;
142 start_addr = (
u32)screen_base;
143 end_addr = start_addr + ((
vid->vl_col * ((1<<
vid->vl_bpix) / 8)) *
154 unsigned int cfg = 0, div = 0, remainder = 0, remainder_div;
155 unsigned long pixel_clock;
156 unsigned long long src_clock;
158 if (
vid->dual_lcd_enabled) {
159 pixel_clock =
vid->vl_freq *
160 (
vid->vl_hspw +
vid->vl_hfpd +
161 vid->vl_hbpd +
vid->vl_col / 2) *
162 (
vid->vl_vspw +
vid->vl_vfpd +
163 vid->vl_vbpd +
vid->vl_row);
165 pixel_clock =
vid->vl_freq *
166 vid->vl_width *
vid->vl_height *
167 (
vid->cs_setup +
vid->wr_setup +
168 vid->wr_act +
vid->wr_hold + 1);
170 pixel_clock =
vid->vl_freq *
171 (
vid->vl_hspw +
vid->vl_hfpd +
172 vid->vl_hbpd +
vid->vl_col) *
173 (
vid->vl_vspw +
vid->vl_vfpd +
174 vid->vl_vbpd +
vid->vl_row);
188 remainder = src_clock % pixel_clock;
189 src_clock /= pixel_clock;
194 remainder_div = remainder / pixel_clock;
197 if (remainder_div >= 5)
201 if (
vid->dual_lcd_enabled)
210 unsigned int cfg = 0;
221 unsigned int cfg = 0;
235 unsigned int cfg = 0;
246 unsigned int cfg = 0;
263 unsigned int cfg = 0;
273 unsigned int cfg = 0;
289 unsigned int cfg = 0;
303 unsigned int cfg = 0, rgb_mode;
311 rgb_mode =
vid->rgb_mode;
401 return vid->vl_col *
vid->vl_row * ((1<<
vid->vl_bpix) / 8);
409 for (i = 0; i < 4; i++)
#define printk(level,...)
static struct exynos5_clock *const exynos_clock
#define EXYNOS_VIDTCON2_HOZVAL_E(x)
#define EXYNOS_VIDCON0_PNRMODE_SHIFT
#define EXYNOS_VIDCON1_IVDEN_INVERT
#define EXYNOS_VIDTCON0_VSPW(x)
#define EXYNOS_VIDCON0_CLKVALUP_ALWAYS
#define EXYNOS_VIDOSD_RIGHT_X_E(x)
#define EXYNOS_WINCON_HAWSWP_ENABLE
#define EXYNOS_VIDCON1_IVSYNC_INVERT
#define EXYNOS_WINCON_BPPMODE_16BPP_565
#define EXYNOS_VIDTCON2_LINEVAL_E(x)
#define EXYNOS5_LCD_IF_BASE_OFFSET
#define EXYNOS_VIDCON2_WB_DISABLE
#define EXYNOS_VIDADDR_OFFSIZE(x)
#define EXYNOS_VIDCON2_TVFORMATSEL_YUV_MASK
#define EXYNOS_DUALRGB_LINESPLIT
#define EXYNOS_I80STATUS_TRIG_DONE
#define EXYNOS_VIDOSD_SIZE(x)
#define EXYNOS_VIDCON2_TVFORMATSEL_MASK
#define EXYNOS_DUALRGB_VDEN_EN_ENABLE
#define EXYNOS_VIDCON0_VCLKEN_MASK
#define EXYNOS_DUALRGB_SUB_CNT(x)
#define EXYNOS_I80SOFT_TRIG_EN
#define EXYNOS_VIDCON1_IHSYNC_INVERT
#define EXYNOS_WINCON_DATAPATH_DMA
#define EXYNOS_VIDCON0_VCLKEN_NORMAL
#define EXYNOS_VIDCON0_ENVID_F_ENABLE
#define EXYNOS_BUFFER_SIZE(x)
#define EXYNOS_VIDCON0_CLKSEL_SCLK
#define EXYNOS_VIDCON2_WB_MASK
#define EXYNOS_I80START_TRIG
#define EXYNOS_WINCON_WSWP_ENABLE
#define EXYNOS_VIDOSD_LEFT_X(x)
#define EXYNOS_VIDADDR_OFFSIZE_E(x)
#define EXYNOS_VIDTCON0_VFPD(x)
#define EXYNOS_DP_CLK_ENABLE
#define EXYNOS_DUALRGB_MAIN_CNT(x)
#define EXYNOS_VIDOSD_TOP_Y(x)
#define EXYNOS_WINCON_BURSTLEN_MASK
#define EXYNOS_VIDTCON1_HBPD(x)
#define EXYNOS_WINSHMAP_CH_ENABLE(x)
#define EXYNOS_VIDCON0_CLKDIR_MASK
#define EXYNOS_VIDOSD_BOTTOM_Y(x)
#define EXYNOS_VIDCON0_ENVID_F_DISABLE
#define EXYNOS_VIDADDR_PAGEWIDTH(x)
#define EXYNOS_BUFFER_OFFSET(x)
#define EXYNOS_VIDCON1_IVCLK_RISING_EDGE
#define EXYNOS_WINSHMAP_CH_DISABLE(x)
#define EXYNOS_WINCON_DATAPATH_MASK
#define EXYNOS_VIDTCON1_HSPW(x)
#define EXYNOS_WINCON_ENWIN_ENABLE
#define EXYNOS_WINCON_ENWIN_DISABLE
#define EXYNOS_VIDTCON0_VBPD(x)
#define EXYNOS_VIDCON0_ENVID_ENABLE
#define EXYNOS_WINCON_BPPMODE_MASK
#define EXYNOS_VIDTCON1_HFPD(x)
#define EXYNOS_VIDCON0_CLKSEL_MASK
#define EXYNOS_VIDOSD_BOTTOM_Y_E(x)
#define EXYNOS_VIDCON0_CLKDIR_DIVIDED
#define EXYNOS_WINCON_INRGB_MASK
#define EXYNOS_VIDCON0_CLKVAL_F(x)
#define EXYNOS_VIDCON0_CLKVALUP_MASK
#define EXYNOS_WINCON_BURSTLEN_16WORD
#define EXYNOS_WINCON_BYTESWP_ENABLE
#define EXYNOS_VIDTCON2_HOZVAL(x)
#define EXYNOS_WINCON_BITSWP_ENABLE
#define EXYNOS_VIDADDR_PAGEWIDTH_E(x)
#define EXYNOS_VIDOSD_RIGHT_X(x)
#define EXYNOS_VIDTCON2_LINEVAL(x)
#define EXYNOS_VIDCON0_ENVID_DISABLE
#define EXYNOS_VIDCON0_VIDOUT_RGB
#define EXYNOS_VIDCON0_PNRMODE_MASK
#define EXYNOS_DUALRGB_BYPASS_DUAL
static void exynos5_set_system_display(void)
static unsigned long get_lcd_clk(void)
static void exynos_fimd_window_on(unsigned int win_id)
void exynos_fimd_lcd_init(vidinfo_t *vid)
void exynos_set_trigger(void)
static void exynos_fimd_lcd_on(void)
void exynos_fimd_lcd_off(void)
static void exynos_fimd_set_dp_clkcon(unsigned int enabled)
unsigned long exynos_fimd_calc_fbsize(vidinfo_t *vid)
static void exynos_fimd_set_buffer_address(vidinfo_t *vid, void *screen_base, int win_id)
static void exynos_fimd_set_clock(vidinfo_t *vid)
void exynos_fimd_lcd_disable(void)
int exynos_is_i80_frame_done(void)
static void exynos_fimd_set_par(vidinfo_t *vid, unsigned int win_id)
static void exynos_fimd_set_dualrgb(vidinfo_t *vid, unsigned int enabled)
void exynos_fimd_window_off(unsigned int win_id)
#define BIOS_SPEW
BIOS_SPEW - Excessively verbose output.
static struct exynos5_sysreg *const exynos_sysreg
unsigned long get_pll_clk(int pllreg)
unsigned int disp1blk_cfg