]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/video/riva/fbdev.c
Merge branches 'release', 'acpica', 'bugzilla-10224', 'bugzilla-9772', 'bugzilla...
[karo-tx-linux.git] / drivers / video / riva / fbdev.c
index 1d1c7c624d7f04be2c854741fdac775e6674d7bf..d94c57ffbdb1661b4c7b3476ce406275388980ca 100644 (file)
 #include "rivafb.h"
 #include "nvreg.h"
 
-#ifndef CONFIG_PCI             /* sanity check */
-#error This driver requires PCI support.
-#endif
-
 /* version number of this driver */
 #define RIVAFB_VERSION "0.9.5b"
 
 #define NVTRACE          if(0) printk
 #endif
 
-#define NVTRACE_ENTER(...)  NVTRACE("%s START\n", __FUNCTION__)
-#define NVTRACE_LEAVE(...)  NVTRACE("%s END\n", __FUNCTION__)
+#define NVTRACE_ENTER(...)  NVTRACE("%s START\n", __func__)
+#define NVTRACE_LEAVE(...)  NVTRACE("%s END\n", __func__)
 
 #ifdef CONFIG_FB_RIVA_DEBUG
 #define assert(expr) \
        if(!(expr)) { \
        printk( "Assertion failed! %s,%s,%s,line=%d\n",\
-       #expr,__FILE__,__FUNCTION__,__LINE__); \
+       #expr,__FILE__,__func__,__LINE__); \
        BUG(); \
        }
 #else
@@ -285,8 +281,6 @@ static const struct riva_regs reg_template = {
 #define MAX_LEVEL 0x534
 #define LEVEL_STEP ((MAX_LEVEL - MIN_LEVEL) / FB_BACKLIGHT_MAX)
 
-static struct backlight_properties riva_bl_data;
-
 static int riva_bl_get_level_brightness(struct riva_par *par,
                int level)
 {
@@ -309,7 +303,7 @@ static int riva_bl_get_level_brightness(struct riva_par *par,
 
 static int riva_bl_update_status(struct backlight_device *bd)
 {
-       struct riva_par *par = class_get_devdata(&bd->class_dev);
+       struct riva_par *par = bl_get_data(bd);
        U032 tmp_pcrt, tmp_pmc;
        int level;
 
@@ -319,15 +313,15 @@ static int riva_bl_update_status(struct backlight_device *bd)
        else
                level = bd->props.brightness;
 
-       tmp_pmc = par->riva.PMC[0x10F0/4] & 0x0000FFFF;
-       tmp_pcrt = par->riva.PCRTC0[0x081C/4] & 0xFFFFFFFC;
+       tmp_pmc = NV_RD32(par->riva.PMC, 0x10F0) & 0x0000FFFF;
+       tmp_pcrt = NV_RD32(par->riva.PCRTC0, 0x081C) & 0xFFFFFFFC;
        if(level > 0) {
                tmp_pcrt |= 0x1;
                tmp_pmc |= (1 << 31); /* backlight bit */
                tmp_pmc |= riva_bl_get_level_brightness(par, level) << 16; /* level */
        }
-       par->riva.PCRTC0[0x081C/4] = tmp_pcrt;
-       par->riva.PMC[0x10F0/4] = tmp_pmc;
+       NV_WR32(par->riva.PCRTC0, 0x081C, tmp_pcrt);
+       NV_WR32(par->riva.PMC, 0x10F0, tmp_pmc);
 
        return 0;
 }
@@ -372,7 +366,7 @@ static void riva_bl_init(struct riva_par *par)
                FB_BACKLIGHT_MAX);
 
        bd->props.max_brightness = FB_BACKLIGHT_LEVELS - 1;
-       bd->props.brightness = riva_bl_data.max_brightness;
+       bd->props.brightness = bd->props.max_brightness;
        bd->props.power = FB_BLANK_UNBLANK;
        backlight_update_status(bd);
 
@@ -1762,13 +1756,13 @@ static int __devinit riva_get_EDID_OF(struct fb_info *info, struct pci_dev *pd)
        NVTRACE_ENTER();
        dp = pci_device_to_OF_node(pd);
        for (; dp != NULL; dp = dp->child) {
-               disptype = get_property(dp, "display-type", NULL);
+               disptype = of_get_property(dp, "display-type", NULL);
                if (disptype == NULL)
                        continue;
                if (strncmp(disptype, "LCD", 3) != 0)
                        continue;
                for (i = 0; propnames[i] != NULL; ++i) {
-                       pedid = get_property(dp, propnames[i], NULL);
+                       pedid = of_get_property(dp, propnames[i], NULL);
                        if (pedid != NULL) {
                                par->EDID = (unsigned char *)pedid;
                                NVTRACE("LCD found.\n");
@@ -1790,8 +1784,10 @@ static int __devinit riva_get_EDID_i2c(struct fb_info *info)
 
        NVTRACE_ENTER();
        riva_create_i2c_busses(par);
-       for (i = 0; i < par->bus; i++) {
-               riva_probe_i2c_connector(par, i+1, &par->EDID);
+       for (i = 0; i < 3; i++) {
+               if (!par->chan[i].par)
+                       continue;
+               riva_probe_i2c_connector(par, i, &par->EDID);
                if (par->EDID && !fb_parse_edid(par->EDID, &var)) {
                        printk(PFX "Found EDID Block from BUS %i\n", i);
                        break;
@@ -2106,7 +2102,7 @@ err_ret:
        return ret;
 }
 
-static void __exit rivafb_remove(struct pci_dev *pd)
+static void __devexit rivafb_remove(struct pci_dev *pd)
 {
        struct fb_info *info = pci_get_drvdata(pd);
        struct riva_par *par = info->par;
@@ -2146,7 +2142,7 @@ static void __exit rivafb_remove(struct pci_dev *pd)
  * ------------------------------------------------------------------------- */
 
 #ifndef MODULE
-static int __init rivafb_setup(char *options)
+static int __devinit rivafb_setup(char *options)
 {
        char *this_opt;
 
@@ -2187,7 +2183,7 @@ static struct pci_driver rivafb_driver = {
        .name           = "rivafb",
        .id_table       = rivafb_pci_tbl,
        .probe          = rivafb_probe,
-       .remove         = __exit_p(rivafb_remove),
+       .remove         = __devexit_p(rivafb_remove),
 };
 
 
@@ -2213,14 +2209,12 @@ static int __devinit rivafb_init(void)
 
 module_init(rivafb_init);
 
-#ifdef MODULE
 static void __exit rivafb_exit(void)
 {
        pci_unregister_driver(&rivafb_driver);
 }
 
 module_exit(rivafb_exit);
-#endif /* MODULE */
 
 module_param(noaccel, bool, 0);
 MODULE_PARM_DESC(noaccel, "bool: disable acceleration");