From patchwork Wed Feb 13 22:28:32 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gerlando Falauto X-Patchwork-Id: 220287 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40D7A2C0292 for ; Thu, 14 Feb 2013 09:39:56 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751653Ab3BMWjy (ORCPT ); Wed, 13 Feb 2013 17:39:54 -0500 Received: from mail-de.keymile.com ([195.8.104.1]:56539 "HELO mail-de.keymile.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1751588Ab3BMWjv (ORCPT ); Wed, 13 Feb 2013 17:39:51 -0500 Received: from mailrelay.de.keymile.net ([10.9.1.54]) by eSafe SMTP Relay 1360763878; Wed, 13 Feb 2013 23:28:49 +0100 Received: from chber1-10555x.ch.keymile.net ([172.31.40.82]) by mailrelay.de.keymile.net (8.12.2/8.12.2) with ESMTP id r1DMR23E011206; Wed, 13 Feb 2013 23:27:10 +0100 (MET) From: Gerlando Falauto To: linux-i2c@vger.kernel.org Cc: giometti@linux.it, ml.lawnick@gmx.de, khali@linux-fr.org, holger.brunck@keymile.com, Gerlando Falauto Subject: [PATCH 2/2] i2c-mux: create "channel-n" symlinks for child segments Date: Wed, 13 Feb 2013 23:28:32 +0100 Message-Id: <1360794512-6338-3-git-send-email-gerlando.falauto@keymile.com> X-Mailer: git-send-email 1.7.10.1 In-Reply-To: <1360794512-6338-1-git-send-email-gerlando.falauto@keymile.com> References: <1360794512-6338-1-git-send-email-gerlando.falauto@keymile.com> X-ESAFE-STATUS: [srvhellgate.de.keymile.net] Mail allowed Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org For instance, by adding a pca9547 device with address 0x70 to bus i2c-0, you get /sys/class/i2c-dev/i2c-0/device/0-0070/channel-0 -> i2c-1 ... /sys/class/i2c-dev/i2c-0/device/0-0070/channel-7 -> i2c-8 Signed-off-by: Gerlando Falauto --- drivers/i2c/i2c-mux.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/i2c/i2c-mux.c b/drivers/i2c/i2c-mux.c index 01b8f8e..c984862 100644 --- a/drivers/i2c/i2c-mux.c +++ b/drivers/i2c/i2c-mux.c @@ -96,6 +96,7 @@ struct i2c_adapter *i2c_add_mux_adapter(struct i2c_adapter *parent, { struct i2c_mux_priv *priv; int ret; + char symlink_name[12]; priv = kzalloc(sizeof(struct i2c_mux_priv), GFP_KERNEL); if (!priv) @@ -142,6 +143,17 @@ struct i2c_adapter *i2c_add_mux_adapter(struct i2c_adapter *parent, dev_info(&parent->dev, "Added multiplexed i2c bus %d\n", i2c_adapter_id(&priv->adap)); + snprintf(symlink_name, sizeof(symlink_name), "channel-%d", chan_id); + ret = sysfs_create_link(&parent_device->kobj, + &priv->adap.dev.kobj, + symlink_name); + if (ret) + dev_err(parent_device, "Failed creating symlink %s\n", + symlink_name); + else + dev_info(parent_device, "Created symlink %s\n", + symlink_name); + return &priv->adap; } EXPORT_SYMBOL_GPL(i2c_add_mux_adapter); @@ -150,6 +162,11 @@ int i2c_del_mux_adapter(struct i2c_adapter *adap) { struct i2c_mux_priv *priv = adap->algo_data; int ret; + char symlink_name[12]; + + snprintf(symlink_name, sizeof(symlink_name), "channel-%d", priv->chan_id); + + sysfs_delete_link(&adap->dev.parent->kobj, &priv->adap.dev.kobj, symlink_name); ret = i2c_del_adapter(adap); if (ret < 0)