Lines Matching defs:sfb

895 	struct smtcfb_info *sfb = info->par;
902 switch (sfb->chip_id) {
981 struct smtcfb_info *sfb;
984 sfb = info->par;
989 switch (sfb->fb->fix.visual) {
997 if (sfb->fb->var.bits_per_pixel == 16) {
998 u32 *pal = sfb->fb->pseudo_palette;
1000 val = chan_to_field(red, &sfb->fb->var.red);
1001 val |= chan_to_field(green, &sfb->fb->var.green);
1002 val |= chan_to_field(blue, &sfb->fb->var.blue);
1005 u32 *pal = sfb->fb->pseudo_palette;
1007 val = chan_to_field(red, &sfb->fb->var.red);
1008 val |= chan_to_field(green, &sfb->fb->var.green);
1009 val |= chan_to_field(blue, &sfb->fb->var.blue);
1157 static void sm7xx_set_timing(struct smtcfb_info *sfb)
1162 dev_dbg(&sfb->pdev->dev,
1163 "sfb->width=%d sfb->height=%d sfb->fb->var.bits_per_pixel=%d sfb->hz=%d\n",
1164 sfb->width, sfb->height, sfb->fb->var.bits_per_pixel, sfb->hz);
1167 if (vgamode[j].mmsizex != sfb->width ||
1168 vgamode[j].mmsizey != sfb->height ||
1169 vgamode[j].bpp != sfb->fb->var.bits_per_pixel ||
1170 vgamode[j].hz != sfb->hz)
1173 dev_dbg(&sfb->pdev->dev,
1178 dev_dbg(&sfb->pdev->dev, "vgamode index=%d\n", j);
1238 writel(0x0, sfb->vp_regs + 0x0C);
1239 writel(0x0, sfb->vp_regs + 0x40);
1242 m_nscreenstride = (sfb->width * sfb->fb->var.bits_per_pixel) / 64;
1243 switch (sfb->fb->var.bits_per_pixel) {
1245 writel(0x0, sfb->vp_regs + 0x0);
1248 writel(0x00020000, sfb->vp_regs + 0x0);
1251 writel(0x00040000, sfb->vp_regs + 0x0);
1254 writel(0x00030000, sfb->vp_regs + 0x0);
1258 sfb->vp_regs + 0x10);
1261 static void smtc_set_timing(struct smtcfb_info *sfb)
1263 switch (sfb->chip_id) {
1267 sm7xx_set_timing(sfb);
1272 static void smtcfb_setmode(struct smtcfb_info *sfb)
1274 switch (sfb->fb->var.bits_per_pixel) {
1276 sfb->fb->fix.visual = FB_VISUAL_TRUECOLOR;
1277 sfb->fb->fix.line_length = sfb->fb->var.xres * 4;
1278 sfb->fb->var.red.length = 8;
1279 sfb->fb->var.green.length = 8;
1280 sfb->fb->var.blue.length = 8;
1281 sfb->fb->var.red.offset = 16;
1282 sfb->fb->var.green.offset = 8;
1283 sfb->fb->var.blue.offset = 0;
1286 sfb->fb->fix.visual = FB_VISUAL_TRUECOLOR;
1287 sfb->fb->fix.line_length = sfb->fb->var.xres * 3;
1288 sfb->fb->var.red.length = 8;
1289 sfb->fb->var.green.length = 8;
1290 sfb->fb->var.blue.length = 8;
1291 sfb->fb->var.red.offset = 16;
1292 sfb->fb->var.green.offset = 8;
1293 sfb->fb->var.blue.offset = 0;
1296 sfb->fb->fix.visual = FB_VISUAL_PSEUDOCOLOR;
1297 sfb->fb->fix.line_length = sfb->fb->var.xres;
1298 sfb->fb->var.red.length = 3;
1299 sfb->fb->var.green.length = 3;
1300 sfb->fb->var.blue.length = 2;
1301 sfb->fb->var.red.offset = 5;
1302 sfb->fb->var.green.offset = 2;
1303 sfb->fb->var.blue.offset = 0;
1307 sfb->fb->fix.visual = FB_VISUAL_TRUECOLOR;
1308 sfb->fb->fix.line_length = sfb->fb->var.xres * 2;
1309 sfb->fb->var.red.length = 5;
1310 sfb->fb->var.green.length = 6;
1311 sfb->fb->var.blue.length = 5;
1312 sfb->fb->var.red.offset = 11;
1313 sfb->fb->var.green.offset = 5;
1314 sfb->fb->var.blue.offset = 0;
1318 sfb->width = sfb->fb->var.xres;
1319 sfb->height = sfb->fb->var.yres;
1320 sfb->hz = 60;
1321 smtc_set_timing(sfb);
1364 static void smtc_unmap_mmio(struct smtcfb_info *sfb)
1366 if (sfb && smtc_regbaseaddress)
1374 static int smtc_map_smem(struct smtcfb_info *sfb,
1377 sfb->fb->fix.smem_start = pci_resource_start(pdev, 0);
1379 if (sfb->chip_id == 0x720)
1381 sfb->fb->fix.smem_start += 0x00200000;
1384 if (sfb->fb->var.bits_per_pixel == 32)
1385 sfb->fb->fix.smem_start += big_addr;
1387 sfb->fb->fix.smem_len = smem_len;
1389 sfb->fb->screen_base = sfb->lfb;
1391 if (!sfb->fb->screen_base) {
1393 "%s: unable to map screen memory\n", sfb->fb->fix.id);
1404 static void smtc_unmap_smem(struct smtcfb_info *sfb)
1406 if (sfb && sfb->fb->screen_base) {
1407 if (sfb->chip_id == 0x720)
1408 sfb->fb->screen_base -= 0x00200000;
1409 iounmap(sfb->fb->screen_base);
1410 sfb->fb->screen_base = NULL;
1423 static u_long sm7xx_vram_probe(struct smtcfb_info *sfb)
1427 switch (sfb->chip_id) {
1456 static void sm7xx_resolution_probe(struct smtcfb_info *sfb)
1460 sfb->fb->var.xres = smtc_scr_info.lfb_width;
1461 sfb->fb->var.yres = smtc_scr_info.lfb_height;
1462 sfb->fb->var.bits_per_pixel = smtc_scr_info.lfb_depth;
1472 sfb->fb->var.xres = SCREEN_X_RES;
1473 sfb->fb->var.yres = SCREEN_Y_RES_PC;
1474 sfb->fb->var.bits_per_pixel = SCREEN_BPP;
1486 sfb->fb->var.yres = SCREEN_Y_RES_NETBOOK;
1490 big_pixel_depth(sfb->fb->var.bits_per_pixel, smtc_scr_info.lfb_depth);
1496 struct smtcfb_info *sfb;
1520 info = framebuffer_alloc(sizeof(*sfb), &pdev->dev);
1526 sfb = info->par;
1527 sfb->fb = info;
1528 sfb->chip_id = ent->device;
1529 sfb->pdev = pdev;
1533 info->pseudo_palette = sfb->colreg;
1534 info->par = sfb;
1536 pci_set_drvdata(pdev, sfb);
1542 pci_read_config_byte(pdev, PCI_REVISION_ID, &sfb->chip_rev_id);
1544 smem_size = sm7xx_vram_probe(sfb);
1548 switch (sfb->chip_id) {
1551 sfb->fb->fix.mmio_start = mmio_base + 0x00400000;
1552 sfb->fb->fix.mmio_len = 0x00400000;
1553 sfb->lfb = ioremap(mmio_base, mmio_addr);
1554 if (!sfb->lfb) {
1557 sfb->fb->fix.id);
1562 sfb->mmio = (smtc_regbaseaddress =
1563 sfb->lfb + 0x00700000);
1564 sfb->dp_regs = sfb->lfb + 0x00408000;
1565 sfb->vp_regs = sfb->lfb + 0x0040c000;
1566 if (sfb->fb->var.bits_per_pixel == 32) {
1567 sfb->lfb += big_addr;
1568 dev_info(&pdev->dev, "sfb->lfb=%p\n", sfb->lfb);
1578 if (sfb->fb->var.bits_per_pixel == 32)
1582 sfb->fb->fix.mmio_start = mmio_base;
1583 sfb->fb->fix.mmio_len = 0x00200000;
1584 sfb->dp_regs = ioremap(mmio_base, 0x00200000 + smem_size);
1585 if (!sfb->dp_regs) {
1588 sfb->fb->fix.id);
1593 sfb->lfb = sfb->dp_regs + 0x00200000;
1594 sfb->mmio = (smtc_regbaseaddress =
1595 sfb->dp_regs + 0x000c0000);
1596 sfb->vp_regs = sfb->dp_regs + 0x800;
1610 sm7xx_resolution_probe(sfb);
1613 if (sfb->fb->var.bits_per_pixel == 15)
1614 sfb->fb->var.bits_per_pixel = 16;
1616 sfb->fb->var.xres_virtual = sfb->fb->var.xres;
1617 sfb->fb->var.yres_virtual = sfb->fb->var.yres;
1618 err = smtc_map_smem(sfb, pdev, smem_size);
1626 memset_io(sfb->lfb, 0, sfb->fb->fix.smem_len);
1634 sfb->chip_id, sfb->chip_rev_id, sfb->fb->var.xres,
1635 sfb->fb->var.yres, sfb->fb->var.bits_per_pixel);
1642 smtc_unmap_smem(sfb);
1643 smtc_unmap_mmio(sfb);
1672 struct smtcfb_info *sfb;
1674 sfb = pci_get_drvdata(pdev);
1675 smtc_unmap_smem(sfb);
1676 smtc_unmap_mmio(sfb);
1677 unregister_framebuffer(sfb->fb);
1678 framebuffer_release(sfb->fb);
1685 struct smtcfb_info *sfb = dev_get_drvdata(device);
1695 fb_set_suspend(sfb->fb, 1);
1706 struct smtcfb_info *sfb = dev_get_drvdata(device);
1711 switch (sfb->chip_id) {
1720 if (sfb->fb->var.bits_per_pixel == 32)
1733 smtcfb_setmode(sfb);
1736 fb_set_suspend(sfb->fb, 0);