From patchwork Wed Nov 17 20:33:42 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Ari Savolainen X-Patchwork-Id: 334211 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id oAHLxxPM004757 for ; Wed, 17 Nov 2010 22:00:24 GMT Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 142E5A0F1A for ; Wed, 17 Nov 2010 13:59:59 -0800 (PST) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-iw0-f177.google.com (mail-iw0-f177.google.com [209.85.214.177]) by gabe.freedesktop.org (Postfix) with ESMTP id 83ABB9E746 for ; Wed, 17 Nov 2010 12:33:46 -0800 (PST) Received: by iwn8 with SMTP id 8so2543613iwn.36 for ; Wed, 17 Nov 2010 12:33:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:content-type:content-transfer-encoding; bh=uQhXr0HrH6bgDTXAPLHp63BeT9PchgQuVI2npl7scsM=; b=fpi2pbcO1RmNoOY7NhoyyrMhKBBN6WMoc2dIR1/8m0ybmgOFHhUQs6gJ17r9X/R1Ui H2P+hNVIosl3nSLSmSvh/3v4FI+Y61yCnK7Ib8/HpVr4ljNHZmbxLt4QUh/Z0xtTElqp NtWw7KCrmELWMVv8pSdRCjOH+vfbH/MxT+PVo= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type :content-transfer-encoding; b=uhwAWL/Yamhs0t18ghDa7xd60PCI0JWKCHM3snBnfCaqub4f3sIwVWT9WTgKdTbbKb yV/CoSmC0DT48LNN7+CdeCVRDnFryrsxqoJq1yH/SBrrSkLVl2ChOP4YeSLmQiAUIRWM r+2bSSFR7ewAzuHuOm/fGKzK+1ddxmdvYTiP8= MIME-Version: 1.0 Received: by 10.231.182.131 with SMTP id cc3mr7855210ibb.36.1290026022510; Wed, 17 Nov 2010 12:33:42 -0800 (PST) Received: by 10.42.171.197 with HTTP; Wed, 17 Nov 2010 12:33:42 -0800 (PST) Date: Wed, 17 Nov 2010 22:33:42 +0200 Message-ID: Subject: PROBLEM: Registering radeon display connectors fails due to missing adapter name From: Ari Savolainen To: David Airlie , Dave Airlie , Alex Deucher , Tyson Whitehead , Jean Delvare , dri-devel@lists.freedesktop.org X-Mailman-Approved-At: Wed, 17 Nov 2010 13:59:47 -0800 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org Errors-To: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter1.kernel.org [140.211.167.41]); Wed, 17 Nov 2010 22:00:24 +0000 (UTC) X-MIME-Autoconverted: from quoted-printable to 8bit by demeter1.kernel.org id oAHLxxPM004757 diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c index d231f68..6b4cc56 100644 --- a/drivers/i2c/i2c-core.c +++ b/drivers/i2c/i2c-core.c @@ -848,6 +848,18 @@ static int i2c_register_adapter(struct i2c_adapter *adap) goto out_list; } + /* Sanity checks */ + if (unlikely(adap->name[0] == '\0')) { + pr_err("i2c-core: Attempt to register an adapter with " + "no name!\n"); + return -EINVAL; + } + if (unlikely(!adap->algo)) { + pr_err("i2c-core: Attempt to register adapter '%s' with " + "no algo!\n", adap->name); + return -EINVAL; + } + rt_mutex_init(&adap->bus_lock); mutex_init(&adap->userspace_clients_lock); INIT_LIST_HEAD(&adap->userspace_clients); dmesg output that shows the problem: [    3.870533] i2c-core: Attempt to register an adapter with no name! [    3.870591] [drm] Failed to register i2c DP-auxch [    3.870647] i2c-core: Attempt to register an adapter with no name! [    3.870708] [drm] Failed to register i2c DP-auxch [    3.870821] [drm] Radeon Display Connectors [    3.870824] [drm] Connector 0: [    3.870825] [drm]   DVI-I [    3.870827] [drm]   HPD1 [    3.870829] [drm]   DDC: 0x7e20 0x7e20 0x7e24 0x7e24 0x7e28 0x7e28 0x7e2c 0x7e2c [    3.870831] [drm]   Encoders: [    3.870833] [drm]     CRT2: INTERNAL_KLDSCP_DAC2 [    3.870834] [drm]     DFP1: INTERNAL_UNIPHY The corresponding output was originally like this: [    3.781507] [drm] Radeon Display Connectors [    3.781510] [drm] Connector 0: [    3.781511] [drm]   DisplayPort [    3.781513] [drm]   HPD2 [    3.781515] [drm]   DDC: 0x7e50 0x7e50 0x7e54 0x7e54 0x7e58 0x7e58 0x7e5c 0x7e5c [    3.781517] [drm]   Encoders: [    3.781518] [drm]     DFP2: INTERNAL_UNIPHY1 [    3.781520] [drm] Connector 1: [    3.781521] [drm]   DisplayPort [    3.781522] [drm]   HPD3 [    3.781524] [drm]   DDC: 0x7f10 0x7f10 0x7f14 0x7f14 0x7f18 0x7f18 0x7f1c 0x7f1c [    3.781526] [drm]   Encoders: [    3.781528] [drm]     DFP3: INTERNAL_UNIPHY1 [    3.781529] [drm] Connector 2: [    3.781531] [drm]   DVI-I [    3.781532] [drm]   HPD1 [    3.781534] [drm]   DDC: 0x7e20 0x7e20 0x7e24 0x7e24 0x7e28 0x7e28 0x7e2c 0x7e2c [    3.781535] [drm]   Encoders: [    3.781537] [drm]     CRT2: INTERNAL_KLDSCP_DAC2 [    3.781538] [drm]     DFP1: INTERNAL_UNIPHY A change like this fixes the problem: diff --git a/drivers/gpu/drm/radeon/radeon_i2c.c b/drivers/gpu/drm/radeon/radeon_i2c.c index 0cfbba0..65d05c0 100644 --- a/drivers/gpu/drm/radeon/radeon_i2c.c +++ b/drivers/gpu/drm/radeon/radeon_i2c.c @@ -946,6 +946,7 @@ struct radeon_i2c_chan *radeon_i2c_create_dp(struct drm_device *dev,         i2c->rec = *rec;         i2c->adapter.owner = THIS_MODULE;         i2c->dev = dev; +       sprintf(i2c->adapter.name, "Radeon i2c bus %s", name);         i2c_set_adapdata(&i2c->adapter, i2c);         i2c->adapter.algo_data = &i2c->algo.dp;