Lines Matching refs:win

63 #define OSD_BASE(win, variant) ((variant).osd + ((win) * (variant).osd_stride))  argument
64 #define VIDOSD_A(win, variant) (OSD_BASE(win, variant) + 0x00) argument
65 #define VIDOSD_B(win, variant) (OSD_BASE(win, variant) + 0x04) argument
66 #define VIDOSD_C(win, variant) (OSD_BASE(win, variant) + 0x08) argument
67 #define VIDOSD_D(win, variant) (OSD_BASE(win, variant) + 0x0C) argument
139 struct s3c_fb_win_variant *win[S3C_FB_MAX_WIN]; member
229 static bool s3c_fb_validate_win_bpp(struct s3c_fb_win *win, unsigned int bpp) in s3c_fb_validate_win_bpp() argument
231 return win->variant.valid_bpp & VALID_BPP(bpp); in s3c_fb_validate_win_bpp()
245 struct s3c_fb_win *win = info->par; in s3c_fb_check_var() local
246 struct s3c_fb *sfb = win->parent; in s3c_fb_check_var()
253 if (!s3c_fb_validate_win_bpp(win, var->bits_per_pixel)) { in s3c_fb_check_var()
255 win->index, var->bits_per_pixel); in s3c_fb_check_var()
268 if (sfb->variant.palette[win->index] != 0) { in s3c_fb_check_var()
395 static void vidosd_set_size(struct s3c_fb_win *win, u32 size) in vidosd_set_size() argument
397 struct s3c_fb *sfb = win->parent; in vidosd_set_size()
400 if (win->variant.osd_size_off) in vidosd_set_size()
401 writel(size, sfb->regs + OSD_BASE(win->index, sfb->variant) in vidosd_set_size()
402 + win->variant.osd_size_off); in vidosd_set_size()
411 static void vidosd_set_alpha(struct s3c_fb_win *win, u32 alpha) in vidosd_set_alpha() argument
413 struct s3c_fb *sfb = win->parent; in vidosd_set_alpha()
415 if (win->variant.has_osd_alpha) in vidosd_set_alpha()
416 writel(alpha, sfb->regs + VIDOSD_C(win->index, sfb->variant)); in vidosd_set_alpha()
425 static void shadow_protect_win(struct s3c_fb_win *win, bool protect) in shadow_protect_win() argument
427 struct s3c_fb *sfb = win->parent; in shadow_protect_win()
435 writel(reg | SHADOWCON_WINx_PROTECT(win->index), in shadow_protect_win()
443 writel(reg & ~SHADOWCON_WINx_PROTECT(win->index), in shadow_protect_win()
491 struct s3c_fb_win *win = info->par; in s3c_fb_set_par() local
492 struct s3c_fb *sfb = win->parent; in s3c_fb_set_par()
495 int win_no = win->index; in s3c_fb_set_par()
504 shadow_protect_win(win, 1); in s3c_fb_set_par()
514 if (win->variant.palette_sz >= 256) in s3c_fb_set_par()
576 vidosd_set_alpha(win, alpha); in s3c_fb_set_par()
577 vidosd_set_size(win, data); in s3c_fb_set_par()
587 sfb->enabled |= (1 << win->index); in s3c_fb_set_par()
678 shadow_protect_win(win, 0); in s3c_fb_set_par()
700 struct s3c_fb_win *win, in s3c_fb_update_palette() argument
707 palreg = sfb->regs + sfb->variant.palette[win->index]; in s3c_fb_update_palette()
710 __func__, win->index, reg, palreg, value); in s3c_fb_update_palette()
712 win->palette_buffer[reg] = value; in s3c_fb_update_palette()
717 if (win->variant.palette_16bpp) in s3c_fb_update_palette()
746 struct s3c_fb_win *win = info->par; in s3c_fb_setcolreg() local
747 struct s3c_fb *sfb = win->parent; in s3c_fb_setcolreg()
751 __func__, win->index, regno, red, green, blue); in s3c_fb_setcolreg()
771 if (regno < win->variant.palette_sz) { in s3c_fb_setcolreg()
772 val = chan_to_field(red, &win->palette.r); in s3c_fb_setcolreg()
773 val |= chan_to_field(green, &win->palette.g); in s3c_fb_setcolreg()
774 val |= chan_to_field(blue, &win->palette.b); in s3c_fb_setcolreg()
776 s3c_fb_update_palette(sfb, win, regno, val); in s3c_fb_setcolreg()
799 struct s3c_fb_win *win = info->par; in s3c_fb_blank() local
800 struct s3c_fb *sfb = win->parent; in s3c_fb_blank()
801 unsigned int index = win->index; in s3c_fb_blank()
819 shadow_protect_win(win, 1); in s3c_fb_blank()
822 shadow_protect_win(win, 0); in s3c_fb_blank()
826 shadow_protect_win(win, 1); in s3c_fb_blank()
828 shadow_protect_win(win, 0); in s3c_fb_blank()
840 shadow_protect_win(win, 1); in s3c_fb_blank()
849 shadow_protect_win(win, 0); in s3c_fb_blank()
870 struct s3c_fb_win *win = info->par; in s3c_fb_pan_display() local
871 struct s3c_fb *sfb = win->parent; in s3c_fb_pan_display()
872 void __iomem *buf = sfb->regs + win->index * 8; in s3c_fb_pan_display()
904 shadow_protect_win(win, 1); in s3c_fb_pan_display()
909 shadow_protect_win(win, 0); in s3c_fb_pan_display()
1020 struct s3c_fb_win *win = info->par; in s3c_fb_ioctl() local
1021 struct s3c_fb *sfb = win->parent; in s3c_fb_ioctl()
1083 static int s3c_fb_alloc_memory(struct s3c_fb *sfb, struct s3c_fb_win *win) in s3c_fb_alloc_memory() argument
1085 struct s3c_fb_pd_win *windata = win->windata; in s3c_fb_alloc_memory()
1087 struct fb_info *fbi = win->fbinfo; in s3c_fb_alloc_memory()
1129 static void s3c_fb_free_memory(struct s3c_fb *sfb, struct s3c_fb_win *win) in s3c_fb_free_memory() argument
1131 struct fb_info *fbi = win->fbinfo; in s3c_fb_free_memory()
1145 static void s3c_fb_release_win(struct s3c_fb *sfb, struct s3c_fb_win *win) in s3c_fb_release_win() argument
1149 if (win->fbinfo) { in s3c_fb_release_win()
1152 data &= ~SHADOWCON_CHx_ENABLE(win->index); in s3c_fb_release_win()
1153 data &= ~SHADOWCON_CHx_LOCAL_ENABLE(win->index); in s3c_fb_release_win()
1156 unregister_framebuffer(win->fbinfo); in s3c_fb_release_win()
1157 if (win->fbinfo->cmap.len) in s3c_fb_release_win()
1158 fb_dealloc_cmap(&win->fbinfo->cmap); in s3c_fb_release_win()
1159 s3c_fb_free_memory(sfb, win); in s3c_fb_release_win()
1160 framebuffer_release(win->fbinfo); in s3c_fb_release_win()
1180 struct s3c_fb_win *win; in s3c_fb_probe_win() local
1198 windata = sfb->pdata->win[win_no]; in s3c_fb_probe_win()
1205 win = fbinfo->par; in s3c_fb_probe_win()
1206 *res = win; in s3c_fb_probe_win()
1208 win->variant = *variant; in s3c_fb_probe_win()
1209 win->fbinfo = fbinfo; in s3c_fb_probe_win()
1210 win->parent = sfb; in s3c_fb_probe_win()
1211 win->windata = windata; in s3c_fb_probe_win()
1212 win->index = win_no; in s3c_fb_probe_win()
1213 win->palette_buffer = (u32 *)(win + 1); in s3c_fb_probe_win()
1215 ret = s3c_fb_alloc_memory(sfb, win); in s3c_fb_probe_win()
1222 if (win->variant.palette_16bpp) { in s3c_fb_probe_win()
1224 win->palette.r.offset = 11; in s3c_fb_probe_win()
1225 win->palette.r.length = 5; in s3c_fb_probe_win()
1226 win->palette.g.offset = 5; in s3c_fb_probe_win()
1227 win->palette.g.length = 6; in s3c_fb_probe_win()
1228 win->palette.b.offset = 0; in s3c_fb_probe_win()
1229 win->palette.b.length = 5; in s3c_fb_probe_win()
1233 win->palette.r.offset = 16; in s3c_fb_probe_win()
1234 win->palette.r.length = 8; in s3c_fb_probe_win()
1235 win->palette.g.offset = 8; in s3c_fb_probe_win()
1236 win->palette.g.length = 8; in s3c_fb_probe_win()
1237 win->palette.b.offset = 0; in s3c_fb_probe_win()
1238 win->palette.b.length = 8; in s3c_fb_probe_win()
1253 fbinfo->pseudo_palette = &win->pseudo_palette; in s3c_fb_probe_win()
1265 ret = fb_alloc_cmap(&fbinfo->cmap, win->variant.palette_sz, 1); in s3c_fb_probe_win()
1342 static void s3c_fb_clear_win(struct s3c_fb *sfb, int win) in s3c_fb_clear_win() argument
1347 writel(0, regs + sfb->variant.wincon + (win * 4)); in s3c_fb_clear_win()
1348 writel(0, regs + VIDOSD_A(win, sfb->variant)); in s3c_fb_clear_win()
1349 writel(0, regs + VIDOSD_B(win, sfb->variant)); in s3c_fb_clear_win()
1350 writel(0, regs + VIDOSD_C(win, sfb->variant)); in s3c_fb_clear_win()
1354 reg &= ~(SHADOWCON_WINx_PROTECT(win) | in s3c_fb_clear_win()
1355 SHADOWCON_CHx_ENABLE(win) | in s3c_fb_clear_win()
1356 SHADOWCON_CHx_LOCAL_ENABLE(win)); in s3c_fb_clear_win()
1369 int win; in s3c_fb_probe() local
1464 for (win = 0; win < fbdrv->variant.nr_windows; win++) in s3c_fb_probe()
1465 s3c_fb_clear_win(sfb, win); in s3c_fb_probe()
1468 for (win = 0; win < (fbdrv->variant.nr_windows - 1); win++) { in s3c_fb_probe()
1471 regs += (win * 8); in s3c_fb_probe()
1480 for (win = 0; win < fbdrv->variant.nr_windows; win++) { in s3c_fb_probe()
1481 if (!pd->win[win]) in s3c_fb_probe()
1484 ret = s3c_fb_probe_win(sfb, win, fbdrv->win[win], in s3c_fb_probe()
1485 &sfb->windows[win]); in s3c_fb_probe()
1487 dev_err(dev, "failed to create window %d\n", win); in s3c_fb_probe()
1488 for (; win >= 0; win--) in s3c_fb_probe()
1489 s3c_fb_release_win(sfb, sfb->windows[win]); in s3c_fb_probe()
1524 int win; in s3c_fb_remove() local
1528 for (win = 0; win < S3C_FB_MAX_WIN; win++) in s3c_fb_remove()
1529 if (sfb->windows[win]) in s3c_fb_remove()
1530 s3c_fb_release_win(sfb, sfb->windows[win]); in s3c_fb_remove()
1547 struct s3c_fb_win *win; in s3c_fb_suspend() local
1553 win = sfb->windows[win_no]; in s3c_fb_suspend()
1554 if (!win) in s3c_fb_suspend()
1558 s3c_fb_blank(FB_BLANK_POWERDOWN, win->fbinfo); in s3c_fb_suspend()
1575 struct s3c_fb_win *win; in s3c_fb_resume() local
1604 win = sfb->windows[win_no]; in s3c_fb_resume()
1605 if (!win) in s3c_fb_resume()
1608 shadow_protect_win(win, 1); in s3c_fb_resume()
1612 shadow_protect_win(win, 0); in s3c_fb_resume()
1619 win = sfb->windows[win_no]; in s3c_fb_resume()
1620 if (!win) in s3c_fb_resume()
1624 s3c_fb_set_par(win->fbinfo); in s3c_fb_resume()
1801 .win[0] = &s3c_fb_data_64xx_wins[0],
1802 .win[1] = &s3c_fb_data_64xx_wins[1],
1803 .win[2] = &s3c_fb_data_64xx_wins[2],
1804 .win[3] = &s3c_fb_data_64xx_wins[3],
1805 .win[4] = &s3c_fb_data_64xx_wins[4],
1834 .win[0] = &s3c_fb_data_s5p_wins[0],
1835 .win[1] = &s3c_fb_data_s5p_wins[1],
1836 .win[2] = &s3c_fb_data_s5p_wins[2],
1837 .win[3] = &s3c_fb_data_s5p_wins[3],
1838 .win[4] = &s3c_fb_data_s5p_wins[4],
1866 .win[0] = &s3c_fb_data_s5p_wins[0],
1867 .win[1] = &s3c_fb_data_s5p_wins[1],
1868 .win[2] = &s3c_fb_data_s5p_wins[2],
1869 .win[3] = &s3c_fb_data_s5p_wins[3],
1870 .win[4] = &s3c_fb_data_s5p_wins[4],
1897 .win[0] = &s3c_fb_data_s5p_wins[0],
1898 .win[1] = &s3c_fb_data_s5p_wins[1],
1899 .win[2] = &s3c_fb_data_s5p_wins[2],
1900 .win[3] = &s3c_fb_data_s5p_wins[3],
1901 .win[4] = &s3c_fb_data_s5p_wins[4],
1926 .win[0] = &(struct s3c_fb_win_variant) {
1930 .win[1] = &(struct s3c_fb_win_variant) {