Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney...
[deliverable/linux.git] / sound / ppc / keywest.c
index d7627bae08362e87aac7d079a686bad37558c19d..6120a067494a443cced5cfb5b320ad1abacd7bfe 100644 (file)
  */
 static struct pmac_keywest *keywest_ctx;
 
+static bool keywest_probed;
 
 static int keywest_probe(struct i2c_client *client,
                         const struct i2c_device_id *id)
 {
+       keywest_probed = true;
+       /* If instantiated via i2c-powermac, we still need to set the client */
+       if (!keywest_ctx->client)
+               keywest_ctx->client = client;
        i2c_set_clientdata(client, keywest_ctx);
        return 0;
 }
@@ -92,7 +97,8 @@ static int keywest_remove(struct i2c_client *client)
 
 
 static const struct i2c_device_id keywest_i2c_id[] = {
-       { "keywest", 0 },
+       { "MAC,tas3004", 0 },           /* instantiated by i2c-powermac */
+       { "keywest", 0 },               /* instantiated by us if needed */
        { }
 };
 
@@ -149,8 +155,13 @@ int snd_pmac_keywest_init(struct pmac_keywest *i2c)
                return err;
        }
 
+       /* There was already a device from i2c-powermac. Great, let's return */
+       if (keywest_probed)
+               return 0;
+
        /* We assume Macs have consecutive I2C bus numbers starting at 0 */
        while (adap) {
+               /* Scan for devices to be bound to */
                err = keywest_attach_adapter(adap);
                if (!err)
                        return 0;
This page took 0.024417 seconds and 5 git commands to generate.