From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935508AbcIFPcR (ORCPT ); Tue, 6 Sep 2016 11:32:17 -0400 Received: from mail-db5eur01on0094.outbound.protection.outlook.com ([104.47.2.94]:37408 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S935717AbcIFPaq (ORCPT ); Tue, 6 Sep 2016 11:30:46 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peda@axentia.se; Subject: Re: [patch 2/2] i2c: mux: mellanox: add driver To: , References: <1472492176-195844-1-git-send-email-vadimp@mellanox.com> CC: , , , Michael Shych From: Peter Rosin Organization: Axentia Technologies AB Message-ID: <28257715-935c-a924-ecc6-e58e109a79f8@axentia.se> Date: Tue, 6 Sep 2016 13:00:16 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: <1472492176-195844-1-git-send-email-vadimp@mellanox.com> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-Originating-IP: [217.210.101.82] X-ClientProxiedBy: DB3PR01CA0056.eurprd01.prod.exchangelabs.com (10.242.133.159) To VI1PR0201MB2317.eurprd02.prod.outlook.com (10.168.63.19) X-MS-Office365-Filtering-Correlation-Id: 0b4f7c13-1233-4a49-f86d-08d3d644fff8 X-Microsoft-Exchange-Diagnostics: 1;VI1PR0201MB2317;2:k+puQ6mWNS2/58/Kldozb3ULHvr6a2zQpm5XN07g37u8+4Q1+x6WmW8e9YhjcXhg01eoElbcPLTduVKjid4VbkxYKkroDC+Mi5Pznev7cAaoOYNNoAHwLUU9dqLT6OrxMNKpb+OM0IfDyhf2lKgdybqcBjZgE+kYX3i8C5Gl5RC/STBj0WWLv6SkNbTnpSOf;3:6ORYXDB//8+ZZFCGYOPJqOM07P59BR+IFElo5LLueUBT0q+Nr1IZGqj+SbAEOPyP78BHaDVN3KGp567XKNpWm7KsLveTazi1O7XB7EEY3SzYzqM0VEUTD7aqDFvc8hPS;25:x/HndLd6Am7vLBOgJqoTL6E3beIumzMlou012znxucPG82wClbB9pB3wFP6aP5nZ+4ma+x3Gk80LtgHIMZnChzo0xNDedtGhZ99EMUedIlIHoAfTVqd3LYwLQetujDJkgh1bUtR3ptSsJCuhvQUrlQO8yaBkVbX+2DyrniCAd/iw3sBW/LACk3LhTq2x58FnlyLbqerw34Yryg1IE17H38/PG6X6jPvDaCcotbUMji1WS7srNeKuZr1UMJxnZP/Mn4rqqCH00y0cMmrNgR4N84XircnJr+l34ofn7zjsFL1hDBoS0NPKxB+6MuBn5LnbFJVBsAdnpnudoUSFKxMh8ALqKHFEWQOQqQyrUCoNAvPW0mph0Ql+PrIial692EBktUJ6rP+jBGPrwXIZYV5DhB6yMmiNv+khcca3HIJfgIU= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0201MB2317; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0201MB2317;31:gZjyIYvVW220fsDIWWDKZQrUaehO9bBvlIGWAR4u1iV+4Sww6MQ5PXPmSLrkxDFj1Ih6EukC0O6v6g5T6rtV38x1jh6X+/6BdB5oJfWx4WxOefzs0fgyoYDgeJ4C6LRtDFOUE5YPRe+/PmI9IIZ9u5kGayyIAlQGeUy3No5y+xws2VdH6aMLSYmIAobePxjGB3n63oX25jaOHgWyGHpPXSULMnAhxKh8tw8w6g2YZw4=;4:N8CK1U/C5lEaYYQUEKbVPuFzAw4433DtUstu7djVyQYVhqXk/W1LadV4k2eD7/ucSDvxAJTG/PdnFobHWwBDb71eXt/fJOCUKx4i7wgfwvg1XhTyzIp97DSSDB1b/yN5lfNshYTcrlAwLcuNCXBZpzBAl9HKkQrVlJXB0lEPJHzCJnHp73B+178jPDc92g55aelGjX54KB7ZR1yLpBRdleXeBq7FfsypPKFm+q9gZCXxavZxJcCf9THEH707btfmg+bq5nPCCpHhr7lkY9DiYWLnO1GYOU4sX8SJo/aziObYhtp118F07HYooAJ7r8r8zFI2UKzqZsp7bS1aC4lKuWz7GKrJF35bxAf/xcblrR3utAIJzue0BF//UZfdwwpk3+Y4tgGsjyhjZQ8W+DwHJkben5zzTIGEWk4eMilBzyo= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6043046)(6042046);SRVR:VI1PR0201MB2317;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0201MB2317; X-Forefront-PRVS: 0057EE387C X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(7916002)(377424004)(199003)(189002)(24454002)(4326007)(7736002)(2906002)(7846002)(86362001)(230700001)(586003)(6116002)(305945005)(36756003)(3846002)(106356001)(31696002)(54356999)(68736007)(50986999)(42186005)(65806001)(117156001)(65956001)(66066001)(76176999)(74482002)(92566002)(33646002)(31686004)(105586002)(4001350100001)(81166006)(81156014)(19580405001)(97736004)(189998001)(47776003)(5001770100001)(19580395003)(50466002)(64126003)(101416001)(8676002)(77096005)(65826007)(2950100001)(83506001)(23746002)(5660300001)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0201MB2317;H:[192.168.0.125];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;VI1PR0201MB2317;23:2SNasj+btQ372p46AEoLc98GX5wffe9nKPs?= =?Windows-1252?Q?ODTnBK+JWvBfGo6QHvUeWhKwgbcO1kpv/VW2rqm+eLq210xHh3JEvMUJ?= =?Windows-1252?Q?72zosakML9ysqD2IijUlGzpKxJsGNq+uahYKoWkHwpKo2z/NU8zyQQao?= =?Windows-1252?Q?ugHGeTc8WE2p4lCxp4eLA1C1lu/LZlCU9me2i1o7LUT/yOyXS2g5/NTl?= =?Windows-1252?Q?UFlMNJlCsxEG2oPQ4CPaPPRELnWgQDxcAbMcKyAIm5ojZbuh/CdWX9QR?= =?Windows-1252?Q?TcPEUmaGbydQENdicXCKjZAwu+y9wSyF+nmCbsvgo8hdt3VIB2gl1ou0?= =?Windows-1252?Q?IpCS7AWNrFjq7XEM03AoPOnYfZWEdrQk2668GdsussUaSwk1u9RLla2m?= =?Windows-1252?Q?HeTN9JeHW08P9NcXyd+asyZVu9DAYAbBZTzgJmAXikicRGI3ZNxcjeXW?= =?Windows-1252?Q?tdUxbjWZLQkgU3lPuEO/Heph3PTlXPS/aTuHGQBQBc5a1S0hzLFtt74n?= =?Windows-1252?Q?vE5vbRCgreHQ5ljuTaE0/cQcFZcnHBZzQKg45y/3jlczqSF+aR5WKsCo?= =?Windows-1252?Q?pOb6NhP6SoivH0byVWOSK2qsxDcsbUMI25kKZsVjWiSPmR7mCOezd3hP?= =?Windows-1252?Q?gN1NNzpzqoxuq5VDYK70gPkeKSf9uDECH1/ORfnmGX+i9pB2QbyQBKrS?= =?Windows-1252?Q?JdzYl6U9S60ynGJPRIisEfknbz7ByVM6n8qHoVtfo2F66nnzNJvx6NDR?= =?Windows-1252?Q?lnjH/jDAybUwrWZFdb7U6/BhADbjBSLnpyVZibuSjXkLKScdRitarsLC?= =?Windows-1252?Q?f4GTfs1hXiqWvr21XDcYzZeuGfgWxlCLlDOs+EDAfIS+ErQ854/Wzg9i?= =?Windows-1252?Q?H7erRRD2NVsLErxd6qea/ZpmsK+OKw18sdiHgF8omq3hwj/+7Kb6JVU0?= =?Windows-1252?Q?Cliz8yFcGLuB1CsJqjprCRlpnv1UzqxBFtzx1tS/vkwv5OB4f+nJOoaB?= =?Windows-1252?Q?zigMPWLSDgq+s2avREz/6GFofEs5UL8Ja65ZZLsvYyHwNVq4LdQ1CFfB?= =?Windows-1252?Q?vNDQq4Nv1sz6OUPb5V0xl7qtHE89HdvLgblZlecTTYdFsW8B+kh4l478?= =?Windows-1252?Q?zdwguNhbxx3m4o8cVyIW9LahryZ2fGdsdlbxmoYBNPUKXBmJgpTYjro4?= =?Windows-1252?Q?N4F4igj8yDkphKFovGyU9Fi/mMeCY2xGzDGrRYMeqJ3AOWpapejwDgck?= =?Windows-1252?Q?eW+ibetkqfSD7UPbZzzOtTO+XRIV0wpwt4n4UIziGY5IH13VJ2xH46+l?= =?Windows-1252?Q?Vp/7JQGWoroBmyl+r5ySp8bAnOkHX18Zes/HNvPWmTwDlkDULSdefEdN?= =?Windows-1252?Q?ax7Knp8Qq8w2Ly71xWO5fSgkciT/TDeMfhLG7Y+hsUn/ig32jtEFf7je?= =?Windows-1252?Q?0p2nZh1lTnfDFtSfR1uqW?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0201MB2317;6:ykEZdNAj2NHvpggH0mC33aURLtP+v+5Nd87HSPZcpSaz9JFWNFWx5jkjCizCP6i1Byqj8kJ//rmbheG9okS+tiO47h6UgvRefa56+QtaqjAjJVch2JUl648GHMseZz7CWYUNHTiubhF8TD01LdqUhS8L7gfoQoc0I+Z41VgLRX9txysZumlZC7qXfh+CFbPX299MFyl0ufgqV7FEdP5emoLm/ISZF0vcUUPruYEsrbKGVZusDI509bzWxbmWXjmQ5KaWaex2wDggIFydjSxkfDtoN6IUmDT4E2KuG689J0cwOSwM+ll9k5eURhmWXvA0;5:x3CsHiY3dwW4/niSNGDNmCaK+XD3JbnudP6W48HkZZbbk60COCpxiByNQtxCZ5WPupHGr85kgrtiWoHysxJ2k1zFoKFQIGu6pDfSPJTQIhblq7YV2qvyqPDyuscnPvolBTOeb9OjALBg8fnB2BCnMg==;24:8vyu01nfvAoQwzhh8paJErHmWBP3CXdjxCdOjFGbwrl/xJ6hcui6+KIGk7I87UyPe5ycEmV+Tgj3MzUa9rJ1c5SI62vKGN7DuIZ3s9N1SFA=;7:d0Hqs7zKYerZTFtQLIVhzzQrNZ657KH4ejRHhOic60AuCBeNS3mh9VB7BlHDvlOnjBF/y64Ux4H1WYomDWyKYHPE7MHAgyPxDrGHrTYq57F+OPdvrX+hhuR6dX+KlylQYk96CvCWa4+WczaSQ1rZQ6qNulvDHnPFHSzhT69cOMt/IRD/BHCtflh6MbyxWisaFRCQ8HcTMhteOs+cNMYjfZIfYfvL7Y3oXPaMMW8M89IpBDBUTkmNdT3HIYikU/1N SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: axentia.se X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Sep 2016 11:00:21.9449 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0201MB2317 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2016-08-29 19:36, vadimp@mellanox.com wrote: > From: Vadim Pasternak > > This driver allows I2C routing controlled through CPLD select registers on > wide range of Mellanox systems (CPLD Lattice device). > MUX selection is provided by digital and analog HW. Analog part is not > under SW control. > Digital part is under CPLD control (channel selection/de-selection). > > Connectivity schema. > i2c-mlxcpld Digital Analog > driver > *--------* * -> mux1 (virt bus2) -> mux ->| > | I2CLPC | i2c physical * -> mux2 (virt bus3) -> mux ->| > | bridge | bus 1 *---------* | > | logic |---------------------> * mux reg * | > | in CPLD| *---------* | > *--------* i2c-mux-mlxpcld ^ * -> muxn (virt busn) -> mux ->| > | driver | | > | *---------------* | Devices > | * CPLD (LPC bus)* select | > | * registers for *--------* > | * mux selection * deselect > | *---------------* > | | > <--------> <-----------> > i2c cntrl Board cntrl reg > reg space space (mux select, > | IO, LED, WD, info) > | | *-----* *-----* > *------------- LPC bus --------------| PCH |---| CPU | > *-----* *-----* > > i2c-mux-mlxpcld does not necessary required i2c-mlxcpld. It can be use > along with another bus driver, and still control i2c routing through CPLD > mux selection, in case the system is equipped with CPLD capable of mux > selection control. > > The Kconfig currently controlling compilation of this code is: > drivers/i2c/muxes/Kconfig:config I2C_MUX_MLXCPLD > > Signed-off-by: Michael Shych > Signed-off-by: Vadim Pasternak > Reviewed-by: Jiri Pirko BTW, it just occurred to me that you could perhaps use (and extend if needed) the i2c_mux_reg driver for the lpc_access cases. Have you explored that option? It looks like a nice fit, and limiting this new driver to i2c_access would make it significantly simpler with only one device (mux module) and one access method (i2c) to support. Cheers, Peter From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Rosin Subject: Re: [patch 2/2] i2c: mux: mellanox: add driver Date: Tue, 6 Sep 2016 13:00:16 +0200 Message-ID: <28257715-935c-a924-ecc6-e58e109a79f8@axentia.se> References: <1472492176-195844-1-git-send-email-vadimp@mellanox.com> Mime-Version: 1.0 Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1472492176-195844-1-git-send-email-vadimp@mellanox.com> Sender: linux-kernel-owner@vger.kernel.org To: vadimp@mellanox.com, wsa@the-dreams.de Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, jiri@resnulli.us, Michael Shych List-Id: linux-i2c@vger.kernel.org On 2016-08-29 19:36, vadimp@mellanox.com wrote: > From: Vadim Pasternak > > This driver allows I2C routing controlled through CPLD select registers on > wide range of Mellanox systems (CPLD Lattice device). > MUX selection is provided by digital and analog HW. Analog part is not > under SW control. > Digital part is under CPLD control (channel selection/de-selection). > > Connectivity schema. > i2c-mlxcpld Digital Analog > driver > *--------* * -> mux1 (virt bus2) -> mux ->| > | I2CLPC | i2c physical * -> mux2 (virt bus3) -> mux ->| > | bridge | bus 1 *---------* | > | logic |---------------------> * mux reg * | > | in CPLD| *---------* | > *--------* i2c-mux-mlxpcld ^ * -> muxn (virt busn) -> mux ->| > | driver | | > | *---------------* | Devices > | * CPLD (LPC bus)* select | > | * registers for *--------* > | * mux selection * deselect > | *---------------* > | | > <--------> <-----------> > i2c cntrl Board cntrl reg > reg space space (mux select, > | IO, LED, WD, info) > | | *-----* *-----* > *------------- LPC bus --------------| PCH |---| CPU | > *-----* *-----* > > i2c-mux-mlxpcld does not necessary required i2c-mlxcpld. It can be use > along with another bus driver, and still control i2c routing through CPLD > mux selection, in case the system is equipped with CPLD capable of mux > selection control. > > The Kconfig currently controlling compilation of this code is: > drivers/i2c/muxes/Kconfig:config I2C_MUX_MLXCPLD > > Signed-off-by: Michael Shych > Signed-off-by: Vadim Pasternak > Reviewed-by: Jiri Pirko BTW, it just occurred to me that you could perhaps use (and extend if needed) the i2c_mux_reg driver for the lpc_access cases. Have you explored that option? It looks like a nice fit, and limiting this new driver to i2c_access would make it significantly simpler with only one device (mux module) and one access method (i2c) to support. Cheers, Peter