diff options
author | Dennis Munsie <dmunsie@cecropia.com> | 2006-06-20 14:55:55 -0400 |
---|---|---|
committer | Dave Airlie <airlied@linux.ie> | 2006-07-03 19:04:37 +1000 |
commit | 7627899b11ece118b46fbf652e944f9a239f6cd1 (patch) | |
tree | cd0e9e56a144193b64885fb6a1eb3a2068e4f168 /drivers/video/intelfb | |
parent | 1f6e8449e11fd79ee30456ce7ec973317b8dd6ae (diff) | |
download | op-kernel-dev-7627899b11ece118b46fbf652e944f9a239f6cd1.zip op-kernel-dev-7627899b11ece118b46fbf652e944f9a239f6cd1.tar.gz |
intelfb: add preliminary i2c support
Adds code to unregister the I2C buses in the cleanup function.
Signed-off-by: Dennis Munsie <dmunsie@cecropia.com>
Diffstat (limited to 'drivers/video/intelfb')
-rw-r--r-- | drivers/video/intelfb/intelfb.h | 1 | ||||
-rw-r--r-- | drivers/video/intelfb/intelfb_i2c.c | 16 | ||||
-rw-r--r-- | drivers/video/intelfb/intelfbdrv.c | 5 |
3 files changed, 22 insertions, 0 deletions
diff --git a/drivers/video/intelfb/intelfb.h b/drivers/video/intelfb/intelfb.h index 6ef38c9..abdadc2 100644 --- a/drivers/video/intelfb/intelfb.h +++ b/drivers/video/intelfb/intelfb.h @@ -367,6 +367,7 @@ extern int intelfb_var_to_depth(const struct fb_var_screeninfo *var); #ifdef CONFIG_FB_INTEL_I2C extern void intelfb_create_i2c_busses(struct intelfb_info *dinfo); +extern void intelfb_delete_i2c_busses(struct intelfb_info *dinfo); #endif #endif /* _INTELFB_H */ diff --git a/drivers/video/intelfb/intelfb_i2c.c b/drivers/video/intelfb/intelfb_i2c.c index d735723..c1113d6 100644 --- a/drivers/video/intelfb/intelfb_i2c.c +++ b/drivers/video/intelfb/intelfb_i2c.c @@ -182,3 +182,19 @@ void intelfb_create_i2c_busses(struct intelfb_info *dinfo) } dinfo->num_outputs = i; } + +void intelfb_delete_i2c_busses(struct intelfb_info *dinfo) +{ + int i; + + for (i = 0; i < MAX_OUTPUTS; i++) { + if (dinfo->output[i].i2c_bus.dinfo) { + i2c_bit_del_bus(&dinfo->output[i].i2c_bus.adapter); + dinfo->output[i].i2c_bus.dinfo = NULL; + } + if (dinfo->output[i].ddc_bus.dinfo) { + i2c_bit_del_bus(&dinfo->output[i].ddc_bus.adapter); + dinfo->output[i].ddc_bus.dinfo = NULL; + } + } +} diff --git a/drivers/video/intelfb/intelfbdrv.c b/drivers/video/intelfb/intelfbdrv.c index f412b5a..f6e30b3 100644 --- a/drivers/video/intelfb/intelfbdrv.c +++ b/drivers/video/intelfb/intelfbdrv.c @@ -474,6 +474,11 @@ cleanup(struct intelfb_info *dinfo) agp_free_memory(dinfo->gtt_ring_mem); } +#ifdef CONFIG_FB_INTEL_I2C + /* un-register I2C bus */ + intelfb_delete_i2c_busses(dinfo); +#endif + if (dinfo->mmio_base) iounmap((void __iomem *)dinfo->mmio_base); if (dinfo->aperture.virtual) |