diff options
author | Antonino Daplas <adaplas@hotpop.com> | 2005-03-30 16:44:13 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-03-30 16:44:13 -0800 |
commit | a601b347030f3db06944aa2019f687b3275fdae3 (patch) | |
tree | 91249f8677767bc0090c3f236c1d236f6488f474 | |
parent | 56a0f592b5f9245285670f2a0f2cea070405c825 (diff) | |
download | history-a601b347030f3db06944aa2019f687b3275fdae3.tar.gz |
[PATCH] nvidiafb: Delete i2c bus on driver unload
The driver nvidiafb fails to delete the i2c bus on load failure or unload.
Fix
From: Antonino Daplas <adaplas@pol.net>
Signed-off-by: Antonino Daplas <adaplas@pol.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | drivers/video/nvidia/nv_i2c.c | 2 | ||||
-rw-r--r-- | drivers/video/nvidia/nv_of.c | 1 | ||||
-rw-r--r-- | drivers/video/nvidia/nv_proto.h | 2 | ||||
-rw-r--r-- | drivers/video/nvidia/nvidia.c | 6 |
4 files changed, 7 insertions, 4 deletions
diff --git a/drivers/video/nvidia/nv_i2c.c b/drivers/video/nvidia/nv_i2c.c index 9e49e9ee44190e..3757c1407c1901 100644 --- a/drivers/video/nvidia/nv_i2c.c +++ b/drivers/video/nvidia/nv_i2c.c @@ -146,7 +146,6 @@ void nvidia_create_i2c_busses(struct nvidia_par *par) nvidia_setup_i2c_bus(&par->chan[2], "BUS3"); } -#if 0 void nvidia_delete_i2c_busses(struct nvidia_par *par) { if (par->chan[0].par) @@ -162,7 +161,6 @@ void nvidia_delete_i2c_busses(struct nvidia_par *par) par->chan[2].par = NULL; } -#endif /* 0 */ static u8 *nvidia_do_probe_i2c_edid(struct nvidia_i2c_chan *chan) { diff --git a/drivers/video/nvidia/nv_of.c b/drivers/video/nvidia/nv_of.c index 660ac29d723e1a..7d12eb85310de0 100644 --- a/drivers/video/nvidia/nv_of.c +++ b/drivers/video/nvidia/nv_of.c @@ -28,6 +28,7 @@ #include "nv_proto.h" void nvidia_create_i2c_busses(struct nvidia_par *par) {} +void nvidia_delete_i2c_busses(struct nvidia_par *par) {} int nvidia_probe_i2c_connector(struct nvidia_par *par, int conn, u8 **out_edid) { diff --git a/drivers/video/nvidia/nv_proto.h b/drivers/video/nvidia/nv_proto.h index 0c5dd425eb5d86..42847ce1b8dd76 100644 --- a/drivers/video/nvidia/nv_proto.h +++ b/drivers/video/nvidia/nv_proto.h @@ -33,10 +33,12 @@ void NVLockUnlock(struct nvidia_par *par, int); /* in nvidia-i2c.c */ #if defined(CONFIG_FB_NVIDIA_I2C) || defined (CONFIG_PPC_OF) void nvidia_create_i2c_busses(struct nvidia_par *par); +void nvidia_delete_i2c_busses(struct nvidia_par *par); int nvidia_probe_i2c_connector(struct nvidia_par *par, int conn, u8 ** out_edid); #else #define nvidia_create_i2c_busses(...) +#define nvidia_delete_i2c_busses(...) #define nvidia_probe_i2c_connector(p, c, edid) \ do { \ *(edid) = NULL; \ diff --git a/drivers/video/nvidia/nvidia.c b/drivers/video/nvidia/nvidia.c index 701c8fad04774a..3a6555a8aaa252 100644 --- a/drivers/video/nvidia/nvidia.c +++ b/drivers/video/nvidia/nvidia.c @@ -1566,8 +1566,9 @@ static int __devinit nvidiafb_probe(struct pci_dev *pd, err_out_iounmap_fb: iounmap(info->screen_base); - err_out_free_base1: fb_destroy_modedb(info->monspecs.modedb); + nvidia_delete_i2c_busses(par); + err_out_free_base1: iounmap(par->REGS); err_out_free_base0: pci_release_regions(pd); @@ -1597,9 +1598,10 @@ static void __exit nvidiafb_remove(struct pci_dev *pd) info->fix.smem_len); #endif /* CONFIG_MTRR */ + iounmap(info->screen_base); fb_destroy_modedb(info->monspecs.modedb); + nvidia_delete_i2c_busses(par); iounmap(par->REGS); - iounmap(info->screen_base); pci_release_regions(pd); pci_disable_device(pd); kfree(info->pixmap.addr); |