aboutsummaryrefslogtreecommitdiff
path: root/sound/ppc/keywest.c
diff options
context:
space:
mode:
authorJens Axboe <jens.axboe@oracle.com>2009-10-05 09:30:10 +0200
committerJens Axboe <jens.axboe@oracle.com>2009-10-05 09:30:10 +0200
commit5d13379a4dba717fb75b749acc0f928c2c02db17 (patch)
treeab5bf870206e6ea8e744390cdb37cb14f7e78257 /sound/ppc/keywest.c
parent08dc8726d4be85bca793141c827574fd32a681bb (diff)
parent374576a8b6f865022c0fd1ca62396889b23d66dd (diff)
Merge branch 'master' into for-2.6.33
Diffstat (limited to 'sound/ppc/keywest.c')
-rw-r--r--sound/ppc/keywest.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/sound/ppc/keywest.c b/sound/ppc/keywest.c
index 835fa19ed46..d06f780bd7e 100644
--- a/sound/ppc/keywest.c
+++ b/sound/ppc/keywest.c
@@ -59,6 +59,18 @@ static int keywest_attach_adapter(struct i2c_adapter *adapter)
strlcpy(info.type, "keywest", I2C_NAME_SIZE);
info.addr = keywest_ctx->addr;
keywest_ctx->client = i2c_new_device(adapter, &info);
+ if (!keywest_ctx->client)
+ return -ENODEV;
+ /*
+ * We know the driver is already loaded, so the device should be
+ * already bound. If not it means binding failed, and then there
+ * is no point in keeping the device instantiated.
+ */
+ if (!keywest_ctx->client->driver) {
+ i2c_unregister_device(keywest_ctx->client);
+ keywest_ctx->client = NULL;
+ return -ENODEV;
+ }
/*
* Let i2c-core delete that device on driver removal.
@@ -86,7 +98,7 @@ static const struct i2c_device_id keywest_i2c_id[] = {
{ }
};
-struct i2c_driver keywest_driver = {
+static struct i2c_driver keywest_driver = {
.driver = {
.name = "PMac Keywest Audio",
},