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);
1365 static void smtc_unmap_mmio(struct smtcfb_info *sfb)
1367 if (sfb && smtc_regbaseaddress)
1375 static int smtc_map_smem(struct smtcfb_info *sfb,
1378 sfb->fb->fix.smem_start = pci_resource_start(pdev, 0);
1380 if (sfb->chip_id == 0x720)
1382 sfb->fb->fix.smem_start += 0x00200000;
1385 if (sfb->fb->var.bits_per_pixel == 32)
1386 sfb->fb->fix.smem_start += big_addr;
1388 sfb->fb->fix.smem_len = smem_len;
1390 sfb->fb->screen_base = sfb->lfb;
1392 if (!sfb->fb->screen_base) {
1394 "%s: unable to map screen memory\n", sfb->fb->fix.id);
1405 static void smtc_unmap_smem(struct smtcfb_info *sfb)
1407 if (sfb && sfb->fb->screen_base) {
1408 if (sfb->chip_id == 0x720)
1409 sfb->fb->screen_base -= 0x00200000;
1410 iounmap(sfb->fb->screen_base);
1411 sfb->fb->screen_base = NULL;
1424 static u_long sm7xx_vram_probe(struct smtcfb_info *sfb)
1428 switch (sfb->chip_id) {
1457 static void sm7xx_resolution_probe(struct smtcfb_info *sfb)
1461 sfb->fb->var.xres = smtc_scr_info.lfb_width;
1462 sfb->fb->var.yres = smtc_scr_info.lfb_height;
1463 sfb->fb->var.bits_per_pixel = smtc_scr_info.lfb_depth;
1473 sfb->fb->var.xres = SCREEN_X_RES;
1474 sfb->fb->var.yres = SCREEN_Y_RES_PC;
1475 sfb->fb->var.bits_per_pixel = SCREEN_BPP;
1487 sfb->fb->var.yres = SCREEN_Y_RES_NETBOOK;
1491 big_pixel_depth(sfb->fb->var.bits_per_pixel, smtc_scr_info.lfb_depth);
1497 struct smtcfb_info *sfb;
1521 info = framebuffer_alloc(sizeof(*sfb), &pdev->dev);
1527 sfb = info->par;
1528 sfb->fb = info;
1529 sfb->chip_id = ent->device;
1530 sfb->pdev = pdev;
1534 info->pseudo_palette = sfb->colreg;
1535 info->par = sfb;
1537 pci_set_drvdata(pdev, sfb);
1543 pci_read_config_byte(pdev, PCI_REVISION_ID, &sfb->chip_rev_id);
1545 smem_size = sm7xx_vram_probe(sfb);
1549 switch (sfb->chip_id) {
1552 sfb->fb->fix.mmio_start = mmio_base + 0x00400000;
1553 sfb->fb->fix.mmio_len = 0x00400000;
1554 sfb->lfb = ioremap(mmio_base, mmio_addr);
1555 if (!sfb->lfb) {
1558 sfb->fb->fix.id);
1563 sfb->mmio = (smtc_regbaseaddress =
1564 sfb->lfb + 0x00700000);
1565 sfb->dp_regs = sfb->lfb + 0x00408000;
1566 sfb->vp_regs = sfb->lfb + 0x0040c000;
1567 if (sfb->fb->var.bits_per_pixel == 32) {
1568 sfb->lfb += big_addr;
1569 dev_info(&pdev->dev, "sfb->lfb=%p\n", sfb->lfb);
1579 if (sfb->fb->var.bits_per_pixel == 32)
1583 sfb->fb->fix.mmio_start = mmio_base;
1584 sfb->fb->fix.mmio_len = 0x00200000;
1585 sfb->dp_regs = ioremap(mmio_base, 0x00200000 + smem_size);
1586 if (!sfb->dp_regs) {
1589 sfb->fb->fix.id);
1594 sfb->lfb = sfb->dp_regs + 0x00200000;
1595 sfb->mmio = (smtc_regbaseaddress =
1596 sfb->dp_regs + 0x000c0000);
1597 sfb->vp_regs = sfb->dp_regs + 0x800;
1611 sm7xx_resolution_probe(sfb);
1614 if (sfb->fb->var.bits_per_pixel == 15)
1615 sfb->fb->var.bits_per_pixel = 16;
1617 sfb->fb->var.xres_virtual = sfb->fb->var.xres;
1618 sfb->fb->var.yres_virtual = sfb->fb->var.yres;
1619 err = smtc_map_smem(sfb, pdev, smem_size);
1627 memset_io(sfb->lfb, 0, sfb->fb->fix.smem_len);
1635 sfb->chip_id, sfb->chip_rev_id, sfb->fb->var.xres,
1636 sfb->fb->var.yres, sfb->fb->var.bits_per_pixel);
1643 smtc_unmap_smem(sfb);
1644 smtc_unmap_mmio(sfb);
1673 struct smtcfb_info *sfb;
1675 sfb = pci_get_drvdata(pdev);
1676 smtc_unmap_smem(sfb);
1677 smtc_unmap_mmio(sfb);
1678 unregister_framebuffer(sfb->fb);
1679 framebuffer_release(sfb->fb);
1686 struct smtcfb_info *sfb = dev_get_drvdata(device);
1696 fb_set_suspend(sfb->fb, 1);
1707 struct smtcfb_info *sfb = dev_get_drvdata(device);
1712 switch (sfb->chip_id) {
1721 if (sfb->fb->var.bits_per_pixel == 32)
1734 smtcfb_setmode(sfb);
1737 fb_set_suspend(sfb->fb, 0);