/* sunxvr2500.c: Sun 3DLABS XVR-2500 et al. fb driver for sparc64 systems * * License: GPL * * Copyright (C) 2007 David S. Miller (davem@davemloft.net)
*/
info = framebuffer_alloc(sizeof(struct s3d_info), &pdev->dev); if (!info) {
err = -ENOMEM; goto err_disable;
}
sp = info->par;
sp->info = info;
sp->pdev = pdev;
sp->of_node = pci_device_to_OF_node(pdev); if (!sp->of_node) {
printk(KERN_ERR "s3d: Cannot find OF node of %s\n",
pci_name(pdev));
err = -ENODEV; goto err_release_fb;
}
sp->fb_base_phys = pci_resource_start (pdev, 1);
err = pci_request_region(pdev, 1, "s3d framebuffer"); if (err < 0) {
printk("s3d: Cannot request region 1 for %s\n",
pci_name(pdev)); goto err_release_fb;
}
err = s3d_get_props(sp); if (err) goto err_release_pci;
/* XXX 'linebytes' is often wrong, it is equal to the width * XXX with depth of 32 on my XVR-2500 which is clearly not * XXX right. So we don't try to use it.
*/ switch (sp->depth) { case 8:
info->fix.line_length = sp->width; break; case 16:
info->fix.line_length = sp->width * 2; break; case 24:
info->fix.line_length = sp->width * 3; break; case 32:
info->fix.line_length = sp->width * 4; break;
}
sp->fb_size = info->fix.line_length * sp->height;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.