static void exynos_fimd_set_par(unsigned int win_id) { unsigned int cfg = 0; /* set window control */ cfg = readl((unsigned int)&fimd_ctrl->wincon0 + EXYNOS_WINCON(win_id)); cfg &= ~(EXYNOS_WINCON_BITSWP_ENABLE | EXYNOS_WINCON_BYTESWP_ENABLE | EXYNOS_WINCON_HAWSWP_ENABLE | EXYNOS_WINCON_WSWP_ENABLE | EXYNOS_WINCON_BURSTLEN_MASK | EXYNOS_WINCON_BPPMODE_MASK | EXYNOS_WINCON_INRGB_MASK | EXYNOS_WINCON_DATAPATH_MASK); /* DATAPATH is DMA */ cfg |= EXYNOS_WINCON_DATAPATH_DMA; if (pvid->logo_on) /* To get proprietary LOGO */ cfg |= EXYNOS_WINCON_WSWP_ENABLE; else /* To get output console on LCD */ cfg |= EXYNOS_WINCON_HAWSWP_ENABLE; /* dma burst is 16 */ cfg |= EXYNOS_WINCON_BURSTLEN_16WORD; if (pvid->logo_on) /* To get proprietary LOGO */ cfg |= EXYNOS_WINCON_BPPMODE_24BPP_888; else /* To get output console on LCD */ cfg |= EXYNOS_WINCON_BPPMODE_16BPP_565; writel(cfg, (unsigned int)&fimd_ctrl->wincon0 + EXYNOS_WINCON(win_id)); /* set window position to x=0, y=0*/ cfg = EXYNOS_VIDOSD_LEFT_X(0) | EXYNOS_VIDOSD_TOP_Y(0); writel(cfg, (unsigned int)&fimd_ctrl->vidosd0a + EXYNOS_VIDOSD(win_id)); cfg = EXYNOS_VIDOSD_RIGHT_X(pvid->vl_col - 1) | EXYNOS_VIDOSD_BOTTOM_Y(pvid->vl_row - 1) | EXYNOS_VIDOSD_RIGHT_X_E(1) | EXYNOS_VIDOSD_BOTTOM_Y_E(0); writel(cfg, (unsigned int)&fimd_ctrl->vidosd0b + EXYNOS_VIDOSD(win_id)); /* set window size for window0*/ cfg = EXYNOS_VIDOSD_SIZE(pvid->vl_col * pvid->vl_row); writel(cfg, (unsigned int)&fimd_ctrl->vidosd0c + EXYNOS_VIDOSD(win_id)); }
static void exynos_fimd_set_par(unsigned int win_id) { unsigned int cfg = 0; struct exynos_fb *fimd_ctrl = (struct exynos_fb *)samsung_get_base_fimd(); /* set window control */ cfg = readl((unsigned int)&fimd_ctrl->wincon0 + EXYNOS_WINCON(win_id)); cfg &= ~(EXYNOS_WINCON_BITSWP_ENABLE | EXYNOS_WINCON_BYTESWP_ENABLE | EXYNOS_WINCON_HAWSWP_ENABLE | EXYNOS_WINCON_WSWP_ENABLE | EXYNOS_WINCON_BURSTLEN_MASK | EXYNOS_WINCON_BPPMODE_MASK | EXYNOS_WINCON_INRGB_MASK | EXYNOS_WINCON_DATAPATH_MASK); /* DATAPATH is DMA */ cfg |= EXYNOS_WINCON_DATAPATH_DMA; /* bpp is 32 */ cfg |= EXYNOS_WINCON_WSWP_ENABLE; /* dma burst is 16 */ cfg |= EXYNOS_WINCON_BURSTLEN_16WORD; /* pixel format is unpacked RGB888 */ cfg |= EXYNOS_WINCON_BPPMODE_24BPP_888; writel(cfg, (unsigned int)&fimd_ctrl->wincon0 + EXYNOS_WINCON(win_id)); /* set window position to x=0, y=0*/ cfg = EXYNOS_VIDOSD_LEFT_X(0) | EXYNOS_VIDOSD_TOP_Y(0); writel(cfg, (unsigned int)&fimd_ctrl->vidosd0a + EXYNOS_VIDOSD(win_id)); cfg = EXYNOS_VIDOSD_RIGHT_X(pvid->vl_col - 1) | EXYNOS_VIDOSD_BOTTOM_Y(pvid->vl_row - 1) | EXYNOS_VIDOSD_RIGHT_X_E(1) | EXYNOS_VIDOSD_BOTTOM_Y_E(0); writel(cfg, (unsigned int)&fimd_ctrl->vidosd0b + EXYNOS_VIDOSD(win_id)); /* set window size for window0*/ cfg = EXYNOS_VIDOSD_SIZE(pvid->vl_col * pvid->vl_row); writel(cfg, (unsigned int)&fimd_ctrl->vidosd0c + EXYNOS_VIDOSD(win_id)); }