diff options
Diffstat (limited to 'sound/ppc/keywest.c')
-rw-r--r-- | sound/ppc/keywest.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/sound/ppc/keywest.c b/sound/ppc/keywest.c index d7627bae0836..6120a067494a 100644 --- a/sound/ppc/keywest.c +++ b/sound/ppc/keywest.c @@ -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; |