From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755354AbdDMQmo (ORCPT ); Thu, 13 Apr 2017 12:42:44 -0400 Received: from mail-eopbgr10123.outbound.protection.outlook.com ([40.107.1.123]:28087 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754281AbdDMQmY (ORCPT ); Thu, 13 Apr 2017 12:42:24 -0400 Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=axentia.se; From: Peter Rosin To: , Greg Kroah-Hartman CC: Peter Rosin , Wolfram Sang , Rob Herring , Mark Rutland , Jonathan Cameron , Hartmut Knaack , Lars-Peter Clausen , Peter Meerwald-Stadler , Jonathan Corbet , , , , , Andrew Morton , Colin Ian King , Paul Gortmaker , Philipp Zabel , Subject: [PATCH v13 07/10] dt-bindings: i2c: i2c-mux: document general purpose i2c-mux bindings Date: Thu, 13 Apr 2017 18:43:11 +0200 Message-ID: <1492101794-13444-8-git-send-email-peda@axentia.se> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1492101794-13444-1-git-send-email-peda@axentia.se> References: <1492101794-13444-1-git-send-email-peda@axentia.se> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [81.224.171.159] X-ClientProxiedBy: AM4PR05CA0010.eurprd05.prod.outlook.com (10.171.184.151) To AM5PR0202MB2547.eurprd02.prod.outlook.com (10.173.89.8) X-MS-Office365-Filtering-Correlation-Id: bad761f4-9043-495f-9093-08d4828c0157 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075);SRVR:AM5PR0202MB2547; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0202MB2547;3:9L6k0sehH78+kMEWUyHbYHA0HhfANXd8W1sH8kbBryVg5UwIEnZz6MR8SyB6m559R6ALNRwQHoDr6FspnjqscGwLA4+eGMgCv9WSRcbwEpbenjgWp7Q2B1FuSwVZ1Atz2mQBfPRRICdoy9xv+EfViZcOZTpyIB0cxkuaqmJhDAeS3dVLm8nYnbBC6jXnNcx5BkElTrNU4kqXqdT9rNYWs0n/nZ8FVXnOH6rvSFHLnTUl0PcBlXDI6ZZLQ7lDa8Kfy+JXZL6xB98iFHVtkUHnTwmQi1w+OTc7TM8Q2yVz92SC7++YLCZjHGqTdB6cgJbF;25:7WvkHmrJuBkue1sjze67k1ZgDg6V542y6xt9+Y6ta383btzEWV/MlakD5vK8A9n8RXdzIq6yePmn8PotVOCTKfV5FZGj5Or2MEVMurpg+iFeTIqsDMh6+mEeDGv/CWhwTR4B4b5Mm1SctG8IaIS7w7tk/TPesntpzwktEb3HTQTvkSdrNMFZfG3t+3mvfSjpXCDOPJ585fL0Fv13JhS+xXd2ruoOxpK1aryS+SNSMfmo9AhRlOmKYN/SpCHYrS2Tc95Z8UVr2xkwe02apWzurmCOGhmtYLVrqbcKsnLG3W5iA26duafxe/5VGhD9R33JuZwZxesAI1ckYVkvOegRm/R+UbKuBrYlqvQ7iPxOUwnplhOkgPcER8VffMh0r1taVWktRtDRbwfeaytSAy81HuqAieGpBcf9j/RV6ci3U4PPVlYkZX7pJ7V4vZpDe1nqVFBX/hdjs2ZnIECaNmUkcg== X-Microsoft-Exchange-Diagnostics: 1;AM5PR0202MB2547;31:HJKxnCQmwGGXXjz69mDaLgZl9Ci6yd+LX3PliBs5uiMai4uKcLN2JGgbtodpPXqhm+lbxUife1u2OeIMh5m+/AN2RREMTzVF4c/NmddPa90jKKmUZ05/n+paBsK0Kvm4S+paolQ1JEVMWoF7OeUuQ3xJbY6nB8mF3aywolep8mZrpEe2k7mXBlAKVIAbORj2mfl231Hg1M9AJIyxqtdjE3PCTEQakBBqbFuFFMe1XyU= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(10201501046)(6041248)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(20161123562025)(2016111802025)(20161123555025)(20161123560025)(6043046)(6072148);SRVR:AM5PR0202MB2547;BCL:0;PCL:0;RULEID:;SRVR:AM5PR0202MB2547; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0202MB2547;4:yRWlN1XlGUmzP5hA/3frfM/FWpHNaegMKQqwrY9aTuPs1ld5T4aLK20bQgaMHKqR/UQClNbTsgc2W4+GDd0V/zq0IRpnJDv183Nr4YV5YMjPvpnWWAxq1GWEPsNiNhbdEIpB/Y/G4d4Rbax+2ChpwwCDJjbQHXYTzMhWjq+1eE12XZoI/3LiuBsNTXxn9MSFIhIyi8JlPeVwO6D8OJvBJ0DI4TxIL6JB3nqAGwoeXprmcvdIHSZ3UCjC1YCWgH9HdRgIhwnTairlmFLHw7qKFN0b8BQ1yWvcRtitcTqhsxr4APqgkkniTmQ2kt30SiGEegG2wVNGTcxKREei2en9HKWZDr0Cqvy1IWaFsjRFFZst9JMxPJxfpmMeudCGrqOGfIWwie2hfBNZrpC05vcfbHZVdTe/9sPbGqHsuVd1SPPh+5xMIGLNgwdNwdbrPcvRAdoHZ7AFIBdeUqkwUj+6cSxBnwMOgtEq/qNMWSmz5l/SkeDy7t1IlsuVisKTiQeJqwordOQ9gh6J9FYrYz5GtFjgGF9N3QX99m0Xa/hYcWok7/uja4rmjSKkHQMfuJ04YSGpUYpSAbeoVMtKRIBPlgsITvuihoul6w4BslST+nwVF6EgznvpPfsSOv0QOSVHHyI+PZjtXFFo/YFd/IqBFa1wj3mogi9Vr8Ommk1Mqev1MpKWLi6R8Exp3NoZT9o9QEJihPsUyz/McShDpIlxI7vqFLb6SKhQCgF9OUyqEcyeL4j4MKNgTTBsp2Vtr3elHxuG3kGocHul/wIo/WEp8A== X-Forefront-PRVS: 02760F0D1C X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6069001)(39450400003)(39410400002)(39840400002)(4326008)(25786009)(48376002)(47776003)(50466002)(6116002)(8666007)(50986999)(81166006)(33646002)(74482002)(86362001)(189998001)(66066001)(3846002)(6486002)(6512007)(305945005)(2950100002)(551934003)(6666003)(53936002)(54906002)(76176999)(7736002)(5660300001)(7416002)(42186005)(38730400002)(8676002)(36756003)(6506006)(50226002)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:AM5PR0202MB2547;H:localhost.localdomain;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM5PR0202MB2547;23:3notiyq9j5m3NRGRt/0sZSZefHD7RDGiHBpTdsH?= =?us-ascii?Q?Mpgkhp0UusXYxIOn+xzg91ytaz7u8qFx3aEpjI48V0hD3tbo05vD7qGH2vIc?= =?us-ascii?Q?aN17V40meYvU0RS5kXEXCngM9jaes5QDnab+98czkO5NAiQP19on0jkjYbtm?= =?us-ascii?Q?6zKaKlV21I18bhlMtmdvp0l8sWNiF5R0XpUR5XHRKxpo5U2I5RRVQVQzN1sO?= =?us-ascii?Q?RAw3BU/5C+UZUdlhrv0+ynI/5qRyk2lr0GRdXsTxS3404Yr7pfExN0qbSAX3?= =?us-ascii?Q?5mRDGd2kSaoQYJjigd4vC7VQMW7a/UuB4X+uXr9JxXdZKcunvGNWcRuisR/8?= =?us-ascii?Q?g4EIE5oCERp5IHmYbkUkEbUIefJAozG0gUe7S/rvrQbZEli6RfWBStaFPftF?= =?us-ascii?Q?d2zl1Ho9gNkP3a3V5Ew0g6ZQuZ2R4zeFpdIhUTu1QF4zzlGMnmNkTcNlRMez?= =?us-ascii?Q?DU2obJx9WVsvEjBY5FVM1EcX8IGoY9rqzBRdF8zW3gKbp252njnVhY4yLEjV?= =?us-ascii?Q?tHZLq5xdPzo5bkZ6up4eEGOKyPcz55kxhPWIZ7K/P48U0xMDrCNCNuMABaQP?= =?us-ascii?Q?DL4MofLqeAlt+iVVFwmouylKYmA0iDFeHwZSGSV4HSiS82an41BQ37TxdG6X?= =?us-ascii?Q?hJI0BdNJFxhacIfPBcWvvzqsOtNVnUXMG4XC608ghsJ1Lr0mSf8a1+QpN3IT?= =?us-ascii?Q?NErzolxR2QgWe7ly9MlDqeJ/C33Q+yZAVcoBt5Fmv7H56zBHJQXDDe18bER3?= =?us-ascii?Q?oXr/CR4zr8Dqoeb+Hkw/SKHJE4ER31VY08SpxfNWqAoSbCqPPS2bHcJ5QqUi?= =?us-ascii?Q?Y9Hxhh2h/e/DN14MliO2+Al7HYwnKNUyYd9ZKTzl9shJO7XIpJiTDrppuY+t?= =?us-ascii?Q?9wR+nSfDRO4t4Fq95GfUFAJH4dvgK3z5RW/I4sg61ZcO3Ng9uRe0r7sRu28s?= =?us-ascii?Q?67CkmQbi1E3m09qGbnrSLt3bghrPZt1CqhCV03i5ds2S2vAUy8ZDeFXDXoAz?= =?us-ascii?Q?YnQk2B3p5fy5rzoohA7uIKlgD?= X-Microsoft-Exchange-Diagnostics: 1;AM5PR0202MB2547;6:X0vOVKxXZNI4+KCrmqhhv5luVPIacGbT8fiSVXaf7ho8feO7xPQ5tZ/PI5tbOgnjh2iWQDzM6TZ6rPAUF6SeA47QsJUOpCbiP9RM0Eji01yilfB4QL9tlEHnE5wtJ7ihGFl4QdBgpTfw5qQqF2s8C81mi0BvITLeJflUTWXLo8rOa0g130cv8A1Bn75MwIzSE/SUoQ7BUHIxvlYDUzLyCzO/YHUWXeSxR4HdVp3XfkJnuhjaklLkXDf1pj/0GSkJ1CCgOq/tkW+rIzLd40tHdbsKcL44ahm6QzanpyliHWB1/dromjKXVVV/DlNn0qgekMuJy1lHnqZXFdNQ8kOYE1gFs+tj4JoafkI+4wQRG86yzOHENGOmn0b6Y9H2SQWJ+441k/pokVxDqVrmpweFHR1fUuMkkFat6usIPGjxQdj2aQ9KFCr6GWmROY4JlwmEFchkGp8668f2fRqqaizh+Q==;5:ZpOUO97dp6mys6ek3NEAuGtrOiZxL2IQOC33+9c9+JdbutfDR+boT7QwZsxMJ5Rqk7LBFO1mUx8A2uH/0T7RRy3xvk5VmiM//I1a1heU9J5BA7Sivh1Sfd7/DjpuF9llx7iQrR1i38Chw4N6gEHngW4FMpfzsbTvEemhKBRTNc0=;24:rMLF2a27g5Oc1sQPZIxICQ2TUTgQA3ENlD/iVWFSHj+NdkdTwYwrD24J8PEun2suUnJmje8l42R1N4lO4yWRSm6fhkieRz4v7j3JTuzw+gc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM5PR0202MB2547;7:r27VwY80LPKSIBA2K2TNBexe8M50apm22VAyNHoTR/zoKHSJL31LIBIKUfzBAhC1xKRDlxiu0U0dWSpj3CaMr+NqLbKWU44PC54CdN3hPzOT8LuBRwChWSXMgHSQ3zmMhh2M8k+lxpG6/EhMnlsDxOKUQJUmH9M5WTCX3lGBsxLlhgPDcVVs1jn0Z2uHPf1yJoRshzV1V7XWmnt8qDg2RE9vZR4Fnp2OJ6EZaM9/2aeRT3vBXWNcUgkznUKAkL4NeoqUJh9NK8g2GDyAdkTuFfnaJoEnYGOS289t4F7m2GzZKUiE2l14krgbQNppkrivEr7pF3BhW3LW+V0SvTx9qg== X-OriginatorOrg: axentia.se X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2017 16:41:57.7595 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0202MB2547 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Describe how a general purpose multiplexer controller is used to mux an i2c bus. Acked-by: Jonathan Cameron Reviewed-by: Rob Herring Signed-off-by: Peter Rosin --- .../devicetree/bindings/i2c/i2c-mux-gpmux.txt | 99 ++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 Documentation/devicetree/bindings/i2c/i2c-mux-gpmux.txt diff --git a/Documentation/devicetree/bindings/i2c/i2c-mux-gpmux.txt b/Documentation/devicetree/bindings/i2c/i2c-mux-gpmux.txt new file mode 100644 index 000000000000..2907dab56298 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/i2c-mux-gpmux.txt @@ -0,0 +1,99 @@ +General Purpose I2C Bus Mux + +This binding describes an I2C bus multiplexer that uses a mux controller +from the mux subsystem to route the I2C signals. + + .-----. .-----. + | dev | | dev | + .------------. '-----' '-----' + | SoC | | | + | | .--------+--------' + | .------. | .------+ child bus A, on MUX value set to 0 + | | I2C |-|--| Mux | + | '------' | '--+---+ child bus B, on MUX value set to 1 + | .------. | | '----------+--------+--------. + | | MUX- | | | | | | + | | Ctrl |-|-----+ .-----. .-----. .-----. + | '------' | | dev | | dev | | dev | + '------------' '-----' '-----' '-----' + +Required properties: +- compatible: i2c-mux +- i2c-parent: The phandle of the I2C bus that this multiplexer's master-side + port is connected to. +- mux-controls: The phandle of the mux controller to use for operating the + mux. +* Standard I2C mux properties. See i2c-mux.txt in this directory. +* I2C child bus nodes. See i2c-mux.txt in this directory. The sub-bus number + is also the mux-controller state described in ../mux/mux-controller.txt + +Optional properties: +- mux-locked: If present, explicitly allow unrelated I2C transactions on the + parent I2C adapter at these times: + + during setup of the multiplexer + + between setup of the multiplexer and the child bus I2C transaction + + between the child bus I2C transaction and releasing of the multiplexer + + during releasing of the multiplexer + However, I2C transactions to devices behind all I2C multiplexers connected + to the same parent adapter that this multiplexer is connected to are blocked + for the full duration of the complete multiplexed I2C transaction (i.e. + including the times covered by the above list). + If mux-locked is not present, the multiplexer is assumed to be parent-locked. + This means that no unrelated I2C transactions are allowed on the parent I2C + adapter for the complete multiplexed I2C transaction. + The properties of mux-locked and parent-locked multiplexers are discussed + in more detail in Documentation/i2c/i2c-topology. + +For each i2c child node, an I2C child bus will be created. They will +be numbered based on their order in the device tree. + +Whenever an access is made to a device on a child bus, the value set +in the relevant node's reg property will be set as the state in the +mux controller. + +Example: + mux: mux-controller { + compatible = "gpio-mux"; + #mux-control-cells = <0>; + + mux-gpios = <&pioA 0 GPIO_ACTIVE_HIGH>, + <&pioA 1 GPIO_ACTIVE_HIGH>; + }; + + i2c-mux { + compatible = "i2c-mux"; + mux-locked; + i2c-parent = <&i2c1>; + + mux-controls = <&mux>; + + #address-cells = <1>; + #size-cells = <0>; + + i2c@1 { + reg = <1>; + #address-cells = <1>; + #size-cells = <0>; + + ssd1307: oled@3c { + compatible = "solomon,ssd1307fb-i2c"; + reg = <0x3c>; + pwms = <&pwm 4 3000>; + reset-gpios = <&gpio2 7 1>; + reset-active-low; + }; + }; + + i2c@3 { + reg = <3>; + #address-cells = <1>; + #size-cells = <0>; + + pca9555: pca9555@20 { + compatible = "nxp,pca9555"; + gpio-controller; + #gpio-cells = <2>; + reg = <0x20>; + }; + }; + }; -- 2.1.4