Skip to content

Commit

Permalink
nvidiafb: access CRT registers safely
Browse files Browse the repository at this point in the history
Use Read/WriteCrtc() to access CRTC registers in nv_i2c.c.  These are safer
  because it uses the correct CRTC base (0x3bx or 0x3dx).

Signed-off-by: Antonino Daplas <adaplas@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Antonino A. Daplas authored and Linus Torvalds committed May 8, 2007
1 parent b9b2696 commit e296927
Showing 1 changed file with 6 additions and 12 deletions.
18 changes: 6 additions & 12 deletions drivers/video/nvidia/nv_i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,14 @@ static void nvidia_gpio_setscl(void *data, int state)
struct nvidia_par *par = chan->par;
u32 val;

VGA_WR08(par->PCIO, 0x3d4, chan->ddc_base + 1);
val = VGA_RD08(par->PCIO, 0x3d5) & 0xf0;
val = NVReadCrtc(par, chan->ddc_base + 1) & 0xf0;

if (state)
val |= 0x20;
else
val &= ~0x20;

VGA_WR08(par->PCIO, 0x3d4, chan->ddc_base + 1);
VGA_WR08(par->PCIO, 0x3d5, val | 0x1);
NVWriteCrtc(par, chan->ddc_base + 1, val | 0x01);
}

static void nvidia_gpio_setsda(void *data, int state)
Expand All @@ -48,16 +46,14 @@ static void nvidia_gpio_setsda(void *data, int state)
struct nvidia_par *par = chan->par;
u32 val;

VGA_WR08(par->PCIO, 0x3d4, chan->ddc_base + 1);
val = VGA_RD08(par->PCIO, 0x3d5) & 0xf0;
val = NVReadCrtc(par, chan->ddc_base + 1) & 0xf0;

if (state)
val |= 0x10;
else
val &= ~0x10;

VGA_WR08(par->PCIO, 0x3d4, chan->ddc_base + 1);
VGA_WR08(par->PCIO, 0x3d5, val | 0x1);
NVWriteCrtc(par, chan->ddc_base + 1, val | 0x01);
}

static int nvidia_gpio_getscl(void *data)
Expand All @@ -66,8 +62,7 @@ static int nvidia_gpio_getscl(void *data)
struct nvidia_par *par = chan->par;
u32 val = 0;

VGA_WR08(par->PCIO, 0x3d4, chan->ddc_base);
if (VGA_RD08(par->PCIO, 0x3d5) & 0x04)
if (NVReadCrtc(par, chan->ddc_base) & 0x04)
val = 1;

return val;
Expand All @@ -79,8 +74,7 @@ static int nvidia_gpio_getsda(void *data)
struct nvidia_par *par = chan->par;
u32 val = 0;

VGA_WR08(par->PCIO, 0x3d4, chan->ddc_base);
if (VGA_RD08(par->PCIO, 0x3d5) & 0x08)
if (NVReadCrtc(par, chan->ddc_base) & 0x08)
val = 1;

return val;
Expand Down

0 comments on commit e296927

Please sign in to comment.