As we now have deferred probing, we can use a custom mechanism and
finally get rid of the legacy interface from the i2c core.

Signed-off-by: Wolfram Sang <w...@the-dreams.de>
---
 drivers/macintosh/therm_windtunnel.c | 25 +++++++++++++++++++++++--
 1 file changed, 23 insertions(+), 2 deletions(-)

diff --git a/drivers/macintosh/therm_windtunnel.c 
b/drivers/macintosh/therm_windtunnel.c
index 3b4a157714b1..9de83cdd0bca 100644
--- a/drivers/macintosh/therm_windtunnel.c
+++ b/drivers/macintosh/therm_windtunnel.c
@@ -431,7 +431,6 @@ static struct i2c_driver g4fan_driver = {
        .driver = {
                .name   = "therm_windtunnel",
        },
-       .attach_adapter = do_attach,
        .probe          = do_probe,
        .remove         = do_remove,
        .id_table       = therm_windtunnel_id,
@@ -444,7 +443,29 @@ static struct i2c_driver g4fan_driver = {
 
 static int therm_of_probe(struct platform_device *dev)
 {
-       return i2c_add_driver( &g4fan_driver );
+       struct i2c_adapter *adap;
+       int ret, i = 0;
+
+       adap = i2c_get_adapter(0);
+       if (!adap)
+               return -EPROBE_DEFER;
+
+       ret = i2c_add_driver(&g4fan_driver);
+       if (ret) {
+               i2c_put_adapter(adap);
+               return ret;
+       }
+
+       /* We assume Macs have consecutive I2C bus numbers starting at 0 */
+       while (adap) {
+               do_attach(adap);
+               if (x.running)
+                       break;
+               i2c_put_adapter(adap);
+               adap = i2c_get_adapter(++i);
+       }
+
+       return 0;
 }
 
 static int
-- 
2.1.3

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to