|
@@ -31,10 +31,15 @@
|
|
|
*/
|
|
|
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;
|