diff -Nru a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
--- a/drivers/i2c/i2c-core.c	Tue May  6 16:37:55 2003
+++ b/drivers/i2c/i2c-core.c	Tue May  6 16:37:55 2003
@@ -76,6 +76,7 @@
 int i2c_add_adapter(struct i2c_adapter *adap)
 {
 	int res = 0, i, j;
+	int addr;
 
 	down(&core_lists);
 	for (i = 0; i < I2C_ADAP_MAX; i++)
@@ -102,6 +103,13 @@
 	sprintf(adap->dev.bus_id, "i2c-%d", i);
 	adap->dev.driver = &i2c_generic_driver;
 	device_register(&adap->dev);
+
+	/* Scan the bus to find all valid addresses */
+	for (addr = 0x00; addr <= 0x7f; addr++) {
+		if (i2c_smbus_xfer (adap, addr, 0, 0, 0, I2C_SMBUS_QUICK, NULL) >= 0) {
+			printk ("GREG: address at %02x\n", addr);
+		}
+	}
 
 	/* inform drivers of new adapters */
 	for (j=0;j<I2C_DRIVER_MAX;j++)
