From patchwork Wed Jul 10 19:03:21 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guenter Roeck X-Patchwork-Id: 258222 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 1D93E2C02BD for ; Thu, 11 Jul 2013 05:03:32 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753999Ab3GJTDa (ORCPT ); Wed, 10 Jul 2013 15:03:30 -0400 Received: from mail-pa0-f66.google.com ([209.85.220.66]:58052 "EHLO mail-pa0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752571Ab3GJTD3 (ORCPT ); Wed, 10 Jul 2013 15:03:29 -0400 Received: by mail-pa0-f66.google.com with SMTP id kl14so4880801pab.9 for ; Wed, 10 Jul 2013 12:03:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:x-mailer; bh=4Ds3/qfbp07QufH6j0Uk/FLcKa47MUmzwFtz0ZlxU9M=; b=FLIouYAjlyvy+JM4IX/3MKlivU+Ae7nPbbC2jO+EIlfHpzD9PnWXK/nHPs21slm1JU Bw2Uqmzd5kZMdM1r4w7qeFHqId0obTnl4LtL88lU/Q0oUNcjAd+RZ6GN3nuXX01wuae1 Q0q9N/KZr7pu/fKvof4CUD6QwUEqatN1plWnj+oLI5F6WGhuRmXtXL2SaLa/pY+V++om DUj6onf7E0rNGiyvlg9WUVikmYrCw7zTKtij7pKkJWhFD4Isn9hP+NZ8JoR+5nJDcvZG qcj2QramCfiPICIDgBXKnGDIEnnFDcHgMGrZhzzpCLy1KjOLkMChOPRf//+Vp3BqyLEP 8bbg== X-Received: by 10.66.243.5 with SMTP id wu5mr29198566pac.44.1373483009033; Wed, 10 Jul 2013 12:03:29 -0700 (PDT) Received: from localhost (108-223-40-66.lightspeed.sntcca.sbcglobal.net. [108.223.40.66]) by mx.google.com with ESMTPSA id sz6sm37666889pab.5.2013.07.10.12.03.25 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Wed, 10 Jul 2013 12:03:26 -0700 (PDT) From: Guenter Roeck To: linux-i2c@vger.kernel.org Cc: Wolfram Sang , Jean Delvare , Guenter Roeck Subject: [PATCH] i2c: mpc: Define unique I2C adapter names Date: Wed, 10 Jul 2013 12:03:21 -0700 Message-Id: <1373483001-24951-1-git-send-email-linux@roeck-us.net> X-Mailer: git-send-email 1.7.9.7 Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org The I2C adapters on Freescale MPC107/824x/85xx/512x/52xx/83xx/86xx all have the same name "MPC adapter". Since I2C adapter numbers can change across reboots and even after loading/unloading an I2C bus master driver, adapter names have to be used to identify adapters and thus should be unique and well defined. Since this is not the case with this driver, it is difficult if not impossible to identify a specific adapter from user space on affected platforms. To remedy the problem, use the adapter memory address as part of the adapter name. With this patch, adapter names are: On P2020: MPC adapter at 0xfff703000 MPC adapter at 0xfff703100 On P5040: MPC adapter at 0xffe118000 MPC adapter at 0xffe118100 MPC adapter at 0xffe119000 MPC adapter at 0xffe119100 Signed-off-by: Guenter Roeck Acked-by: Jean Delvare --- drivers/i2c/busses/i2c-mpc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c index 7607dc0..99acf63 100644 --- a/drivers/i2c/busses/i2c-mpc.c +++ b/drivers/i2c/busses/i2c-mpc.c @@ -609,7 +609,6 @@ static const struct i2c_algorithm mpc_algo = { static struct i2c_adapter mpc_ops = { .owner = THIS_MODULE, - .name = "MPC adapter", .algo = &mpc_algo, .timeout = HZ, }; @@ -623,6 +622,7 @@ static int fsl_i2c_probe(struct platform_device *op) u32 clock = MPC_I2C_CLOCK_LEGACY; int result = 0; int plen; + struct resource res; match = of_match_device(mpc_i2c_of_match, &op->dev); if (!match) @@ -682,6 +682,9 @@ static int fsl_i2c_probe(struct platform_device *op) platform_set_drvdata(op, i2c); i2c->adap = mpc_ops; + of_address_to_resource(op->dev.of_node, 0, &res); + scnprintf(i2c->adap.name, sizeof(i2c->adap.name), + "MPC adapter at 0x%llx", (unsigned long long)res.start); i2c_set_adapdata(&i2c->adap, i2c); i2c->adap.dev.parent = &op->dev; i2c->adap.dev.of_node = of_node_get(op->dev.of_node);