Lines Matching defs:sfb

889 	struct smtcfb_info *sfb = info->par;
896 switch (sfb->chip_id) {
975 struct smtcfb_info *sfb;
978 sfb = info->par;
983 switch (sfb->fb->fix.visual) {
991 if (sfb->fb->var.bits_per_pixel == 16) {
992 u32 *pal = sfb->fb->pseudo_palette;
994 val = chan_to_field(red, &sfb->fb->var.red);
995 val |= chan_to_field(green, &sfb->fb->var.green);
996 val |= chan_to_field(blue, &sfb->fb->var.blue);
999 u32 *pal = sfb->fb->pseudo_palette;
1001 val = chan_to_field(red, &sfb->fb->var.red);
1002 val |= chan_to_field(green, &sfb->fb->var.green);
1003 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;
1517 info = framebuffer_alloc(sizeof(*sfb), &pdev->dev);
1523 sfb = info->par;
1524 sfb->fb = info;
1525 sfb->chip_id = ent->device;
1526 sfb->pdev = pdev;
1531 info->pseudo_palette = sfb->colreg;
1532 info->par = sfb;
1534 pci_set_drvdata(pdev, sfb);
1540 pci_read_config_byte(pdev, PCI_REVISION_ID, &sfb->chip_rev_id);
1542 smem_size = sm7xx_vram_probe(sfb);
1546 switch (sfb->chip_id) {
1549 sfb->fb->fix.mmio_start = mmio_base + 0x00400000;
1550 sfb->fb->fix.mmio_len = 0x00400000;
1551 sfb->lfb = ioremap(mmio_base, mmio_addr);
1552 if (!sfb->lfb) {
1555 sfb->fb->fix.id);
1560 sfb->mmio = (smtc_regbaseaddress =
1561 sfb->lfb + 0x00700000);
1562 sfb->dp_regs = sfb->lfb + 0x00408000;
1563 sfb->vp_regs = sfb->lfb + 0x0040c000;
1564 if (sfb->fb->var.bits_per_pixel == 32) {
1565 sfb->lfb += big_addr;
1566 dev_info(&pdev->dev, "sfb->lfb=%p\n", sfb->lfb);
1576 if (sfb->fb->var.bits_per_pixel == 32)
1580 sfb->fb->fix.mmio_start = mmio_base;
1581 sfb->fb->fix.mmio_len = 0x00200000;
1582 sfb->dp_regs = ioremap(mmio_base, 0x00200000 + smem_size);
1583 if (!sfb->dp_regs) {
1586 sfb->fb->fix.id);
1591 sfb->lfb = sfb->dp_regs + 0x00200000;
1592 sfb->mmio = (smtc_regbaseaddress =
1593 sfb->dp_regs + 0x000c0000);
1594 sfb->vp_regs = sfb->dp_regs + 0x800;
1608 sm7xx_resolution_probe(sfb);
1611 if (sfb->fb->var.bits_per_pixel == 15)
1612 sfb->fb->var.bits_per_pixel = 16;
1614 sfb->fb->var.xres_virtual = sfb->fb->var.xres;
1615 sfb->fb->var.yres_virtual = sfb->fb->var.yres;
1616 err = smtc_map_smem(sfb, pdev, smem_size);
1624 memset_io(sfb->lfb, 0, sfb->fb->fix.smem_len);
1632 sfb->chip_id, sfb->chip_rev_id, sfb->fb->var.xres,
1633 sfb->fb->var.yres, sfb->fb->var.bits_per_pixel);
1640 smtc_unmap_smem(sfb);
1641 smtc_unmap_mmio(sfb);
1670 struct smtcfb_info *sfb;
1672 sfb = pci_get_drvdata(pdev);
1673 smtc_unmap_smem(sfb);
1674 smtc_unmap_mmio(sfb);
1675 unregister_framebuffer(sfb->fb);
1676 framebuffer_release(sfb->fb);
1683 struct smtcfb_info *sfb = dev_get_drvdata(device);
1693 fb_set_suspend(sfb->fb, 1);
1704 struct smtcfb_info *sfb = dev_get_drvdata(device);
1709 switch (sfb->chip_id) {
1718 if (sfb->fb->var.bits_per_pixel == 32)
1731 smtcfb_setmode(sfb);
1734 fb_set_suspend(sfb->fb, 0);