From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1B0F2C3064D for ; Tue, 2 Jul 2024 15:15:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: Content-Type:In-Reply-To:From:References:Cc:To:Subject:MIME-Version:Date: Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=40y+5BRfzL+FmyMl+NaBXpaqof6Uf0lBwHh7rgKeu84=; b=mSWGF2Cuf2uLibTOZdaaYa7Clj mFGinfmrODanX7zcNA8u604iHXD9BCSizZkRJpZ9V8r4QPlswcwCV7/qpfPfFiEcAnSXWcQdTseou jBXCLe5fVPcMzPe0bZ1GoyV66FGNldX4HZaJXIBO/4ekwLD7ZG8FdNuoyMg4NuqswQfdF6gsbew6P aI9zLCT01JDYTHYSN1eOVbk7x6q55Tnwu0tO517hzbq4GGaqmI81A08ylLGg4iPfK7wKhunrvQqJ/ UnkkhNBdJHRtMXVk/5+ZG7yb1uACb2HbZU+zwwHgSpUHO5PMog62Pgv3C74YBEeO2BKbEwK5AhqjP MJ8IZ9DA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sOfDU-00000007AAF-2CSC; Tue, 02 Jul 2024 15:14:48 +0000 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sOfDI-00000007A6j-3AUn for linux-arm-kernel@lists.infradead.org; Tue, 02 Jul 2024 15:14:38 +0000 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-70811f7ab8eso213410b3a.1 for ; Tue, 02 Jul 2024 08:14:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=beagleboard-org.20230601.gappssmtp.com; s=20230601; t=1719933275; x=1720538075; darn=lists.infradead.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=40y+5BRfzL+FmyMl+NaBXpaqof6Uf0lBwHh7rgKeu84=; b=o87c5Wfltrbh/Sx5skS9CGJ4g5Rklvk3avOVo2EcpOfM5M57ItAMY3FjtJiCbqrTJh /7F7ph6kr4dzUTxO7LOpl4ztVhqU+K1gpeSb+I7f/6ihYlRw6z06vtdQbtjz2ZWwWgg8 fLvOpTvXGmU1rwRLhnWrdELhMKtHP7Idrmcf1VFLZ4qnLEkFP/jUetiz/2BxSeWc8Tvg h83fNZfiXwr2nTZIt10wwAi72m34VhARxpDE6uT5mdGv3HJsOwA+S0rodsDsXsLUTv0O vTvzF07sj6i8nry3MTT9UkRzoZ2erWQmM3Guszi5qWWB3yUGoEw9kwFyVluyiJpygeId 3s7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719933275; x=1720538075; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=40y+5BRfzL+FmyMl+NaBXpaqof6Uf0lBwHh7rgKeu84=; b=baDwukMLpNwI2i1cN+vPeixc1YGk0I1lrZNmGhsEXS6MAFqpyuEfwdUsQWQWgAxyo8 8NnoVZaBnH1tKlg62mQLSawKr/VXpq1yiucLeNJH+I4JTnQ0qSQyclOchxMx0VJ/gJKa nDQ1xFWcGuOuFhmSZXC7KrUiiRPkJWKmWHyLkIAQbRVr9CrLVkoXxqXt0zGvooEvtXBv 5xIpZmaKEwQaH/YRtBz87e5z23COn3hPX9cVRljJEw1ZhiJB8tVAabwpHn6XDOuvt3Sx p+fEqoD0lLbR314PLis0mRjna//5OILA//6R7qP8rI+7jshOkjK1zm9pSFGedBmhgi2A FQqA== X-Forwarded-Encrypted: i=1; AJvYcCUNO1Ds8V+8m4v0U3lfziLfqXZToX5I++GdCNqReEG+vjBABHwfVrpfD0a5YQFzxwNZiHHH+qpckDBNi1JEcHVMk9FOygbCNdaFZsjNZKJRoMZxbM0= X-Gm-Message-State: AOJu0YzClQNH9G0qtgU0xoXPLPkVSXt8p5ZbeE5eKLhKoP/3rCHYQo7w kAFaKZz1cDNGuJoBzbbtAmMSuPvo8EABrbpK6MZgmsyDZXCkIht6l2mJJQ8Urg== X-Google-Smtp-Source: AGHT+IGfkdugJ7YGFtiPng9vy9soC8SqEosCYrLRvR+3ezTFRsZrIFvas0chO/NoRq0eP50UvRjOeQ== X-Received: by 2002:a05:6a20:748e:b0:1be:dfe8:1311 with SMTP id adf61e73a8af0-1bef62987demr11534315637.6.1719933273589; Tue, 02 Jul 2024 08:14:33 -0700 (PDT) Received: from ?IPV6:2401:4900:1f3e:250a:7d55:4ad6:87a3:5c5c? ([2401:4900:1f3e:250a:7d55:4ad6:87a3:5c5c]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7080256916dsm8620152b3a.57.2024.07.02.08.14.27 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 02 Jul 2024 08:14:33 -0700 (PDT) Message-ID: <61649bee-f7dc-452c-beb5-cc8ee2179b99@beagleboard.org> Date: Tue, 2 Jul 2024 20:44:26 +0530 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v5 1/7] dt-bindings: connector: Add mikrobus-connector To: Rob Herring Cc: Mark Brown , Vaishnav M A , Krzysztof Kozlowski , Conor Dooley , Derek Kiernan , Dragan Cvetic , Arnd Bergmann , Greg Kroah-Hartman , Nishanth Menon , Vignesh Raghavendra , Tero Kristo , Michael Walle , Andrew Lunn , jkridner@beagleboard.org, robertcnelson@beagleboard.org, linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org References: <20240627-mikrobus-scratch-spi-v5-0-9e6c148bf5f0@beagleboard.org> <20240627-mikrobus-scratch-spi-v5-1-9e6c148bf5f0@beagleboard.org> <20240628162847.GB3143032-robh@kernel.org> Content-Language: en-US From: Ayush Singh In-Reply-To: <20240628162847.GB3143032-robh@kernel.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240702_081437_008081_C3796C25 X-CRM114-Status: GOOD ( 34.56 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On 6/28/24 21:58, Rob Herring wrote: > On Thu, Jun 27, 2024 at 09:56:11PM +0530, Ayush Singh wrote: >> Add DT bindings for mikroBUS interface. MikroBUS is an open standard >> developed by MikroElektronika for connecting add-on boards to >> microcontrollers or microprocessors. >> >> mikroBUS is a connector and does not have a controller. Instead the >> software is responsible for identification of board and setting up uart, >> spi, i2c, pwm and other buses. Additionally, some new mikroBUS boards >> contain 1-wire EEPROM that contains a manifest to describe the addon >> board to provide plug and play capabilities. >> >> A mikroBUS addon board is free to leave some of the pins unused which >> are marked as NC or Not Connected. >> >> Some of the pins might need to be configured as GPIOs deviating from their >> reserved purposes Eg: SHT15 Click where the SCL and SDA Pins need to be >> configured as GPIOs for the driver (drivers/hwmon/sht15.c) to work. >> >> For some add-on boards the driver may not take care of some additional >> signals like reset/wake-up/other. Eg: ENC28J60 click where the reset line >> (RST pin on the mikrobus port) needs to be pulled high. >> >> Some SPI addon boards use other pins like RST, AN etc as chipselect (eg. >> SPI Extend Click). Thus, `spi-cs` and `spi-cs-names` property is added >> to allow mikroBUS addon board to specify chipselect by name. >> >> Here's the list of pins in mikroBUS connector: >> AN - Analog >> RST - Reset >> CS - SPI Chip Select >> SCK - SPI Clock >> MISO - SPI Master Input Slave Output >> MOSI - SPI Master Output Slave Input >> +3.3V - VCC-3.3V power >> GND - Reference Ground >> PWM - PWM output >> INT - Hardware Interrupt >> RX - UART Receive >> TX - UART Transmit >> SCL - I2C Clock >> SDA - I2C Data >> +5V - VCC-5V power >> GND - Reference Ground >> >> Link: https://www.mikroe.com/mikrobus >> Link: >> https://download.mikroe.com/documents/standards/mikrobus/mikrobus-standard-specification-v200.pdf >> mikroBUS specification >> Link: https://www.mikroe.com/sht1x-click SHT15 Click >> Link: https://www.mikroe.com/eth-click ENC28J60 Click >> Link: https://www.mikroe.com/spi-extend-click SPI Extend Click >> >> Co-developed-by: Vaishnav M A >> Signed-off-by: Vaishnav M A >> Signed-off-by: Ayush Singh >> --- >> .../bindings/connector/mikrobus-connector.yaml | 107 +++++++++++++++++++++ >> MAINTAINERS | 6 ++ >> 2 files changed, 113 insertions(+) >> >> diff --git a/Documentation/devicetree/bindings/connector/mikrobus-connector.yaml b/Documentation/devicetree/bindings/connector/mikrobus-connector.yaml >> new file mode 100644 >> index 000000000000..033479f8604f >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/connector/mikrobus-connector.yaml >> @@ -0,0 +1,107 @@ >> +# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause >> +%YAML 1.2 >> +--- >> +$id: http://devicetree.org/schemas/connector/mikrobus-connector.yaml# >> +$schema: http://devicetree.org/meta-schemas/core.yaml# >> + >> +title: mikroBUS add-on board connector >> + >> +maintainers: >> + - Ayush Singh >> + >> +properties: >> + compatible: >> + const: mikrobus-connector >> + >> + pinctrl-0: true >> + pinctrl-1: true >> + pinctrl-2: true >> + pinctrl-3: true >> + pinctrl-4: true >> + pinctrl-5: true >> + pinctrl-6: true >> + pinctrl-7: true >> + pinctrl-8: true >> + >> + pinctrl-names: >> + minItems: 1 >> + maxItems: 9 >> + items: >> + enum: [default, pwm_default, pwm_gpio, uart_default, uart_gpio, i2c_default, i2c_gpio, spi_default, >> + spi_gpio] > Generally, each pinctrl-N is mutually exclusive. It looks like here you > want multiple states active at one time. Does this work? I see. In mikrobus case, these pinctrl are not mutually exclusive. The ones that are mutually exclusive are as follows: - pwm_default and pwm_gpio - uart_default and uart_gpio - i2c_default and i2c_gpio - spi_default and spi_gpio It still does lead to 16 combinations so not sure if it is the best approach. >> + >> + spi-controller: >> + description: spi-controller of mikroBUS SPI pins along with cs pins. >> + $ref: /schemas/types.yaml#/definitions/phandle >> + >> + spi-cs: >> + description: spi chip-select corresponding to the chip-selects on the mikrobus socket. > Wrap lines at 80 char. > > The array index is the chip-select number on the connector and the > value is the host SPI controller CS numbers? Or the other way around? > This needs a better description. > >> + $ref: /schemas/types.yaml#/definitions/uint32-array > Maximum number of entries? > >> + >> + spi-cs-names: >> + minItems: 1 >> + maxItems: 12 >> + items: >> + enum: [default, pwm, int, rx, tx, scl, sda, an, rst, sck, cipo, copi] >> + >> + i2c-controller: >> + description: i2c controller attached to the mikrobus socket. >> + $ref: /schemas/types.yaml#/definitions/phandle > i2c-bus is the somewhat standard property for this. > > Really, I'd expect connectors to look something like this: > > connector { > i2c-0 { > i2c-bus = <&i2c3>; > #address-cells = <1>; > #size-cells = <0>; > device@12 { > compatible = "some-i2c-device"; > }; > }; > }; > > That form allows for multiple buses (of the same type or different) on > the connector. > >> + >> + uart-controller: >> + description: uart controller attached to the mikrobus socket >> + $ref: /schemas/types.yaml#/definitions/phandle >> + >> + pwms: >> + description: the pwm-controller corresponding to the mikroBUS PWM pin. >> + maxItems: 1 >> + >> + mikrobus-gpios: >> + minItems: 1 >> + maxItems: 12 >> + >> + mikrobus-gpio-names: > The GPIO binding does not work this way as the name is in the property. > Either drop if you want to keep the array or you have to do something > like this: > > pwm-gpios > int-gpios > rx-gpios > > Really, the intention was for connectors to use gpio-map property to > renumber GPIOs relative to the connector. Can you point me to what you mean by gpio-map property? >> + minItems: 1 >> + maxItems: 12 >> + items: >> + enum: [pwm, int, rx, tx, scl, sda, an, rst, cs, sck, cipo, copi] >> + >> + board: >> + description: board attached to mikrobus connector >> + $ref: /schemas/types.yaml#/definitions/phandle-array > What is this for? > >> + >> +required: >> + - compatible >> + - pinctrl-0 >> + >> +additionalProperties: false >> + >> +examples: >> + - | >> + #include >> + mikrobus { >> + compatible = "mikrobus-connector"; >> + pinctrl-names = "default", "pwm_default", "pwm_gpio","uart_default", "uart_gpio", "i2c_default", >> + "i2c_gpio", "spi_default", "spi_gpio"; >> + pinctrl-0 = <&P2_03_gpio_input_pin &P1_04_gpio_pin &P1_02_gpio_pin>; >> + pinctrl-1 = <&P2_01_pwm_pin>; >> + pinctrl-2 = <&P2_01_gpio_pin>; >> + pinctrl-3 = <&P2_05_uart_pin &P2_07_uart_pin>; >> + pinctrl-4 = <&P2_05_gpio_pin &P2_07_gpio_pin>; >> + pinctrl-5 = <&P2_09_i2c_pin &P2_11_i2c_pin>; >> + pinctrl-6 = <&P2_09_gpio_pin &P2_11_gpio_pin>; >> + pinctrl-7 = <&P1_12_spi_pin &P1_10_spi_pin &P1_08_spi_sclk_pin &P1_06_spi_cs_pin>; >> + pinctrl-8 = <&P1_12_gpio_pin &P1_10_gpio_pin &P1_08_gpio_pin &P1_06_gpio_pin>; >> + pwms = <&ehrpwm1 0 500000 0>; >> + i2c-controller = <&i2c1>; >> + uart-controller = <&uart1>; >> + spi-controller = <&spi1>; >> + spi-cs = <0 1>; >> + spi-cs-names = "default", "rst"; >> + mikrobus-gpios = <&gpio1 18 GPIO_ACTIVE_HIGH>, <&gpio0 23 GPIO_ACTIVE_HIGH>, >> + <&gpio0 30 GPIO_ACTIVE_HIGH>, <&gpio0 31 GPIO_ACTIVE_HIGH>, >> + <&gpio0 15 GPIO_ACTIVE_HIGH>, <&gpio0 14 GPIO_ACTIVE_HIGH>, >> + <&gpio0 4 GPIO_ACTIVE_HIGH>, <&gpio0 3 GPIO_ACTIVE_HIGH>, >> + <&gpio0 2 GPIO_ACTIVE_HIGH>, <&gpio0 5 GPIO_ACTIVE_HIGH>, >> + <&gpio2 25 GPIO_ACTIVE_HIGH>, <&gpio2 3 GPIO_ACTIVE_HIGH>; >> + }; >> diff --git a/MAINTAINERS b/MAINTAINERS >> index 807feae089c4..8e4115e93aeb 100644 >> --- a/MAINTAINERS >> +++ b/MAINTAINERS >> @@ -15108,6 +15108,12 @@ M: Oliver Neukum >> S: Maintained >> F: drivers/usb/image/microtek.* >> >> +MIKROBUS >> +M: Ayush Singh >> +M: Vaishnav M A >> +S: Maintained >> +F: Documentation/devicetree/bindings/connector/mikrobus-connector.yaml >> + >> MIKROTIK CRS3XX 98DX3236 BOARD SUPPORT >> M: Luka Kovacic >> M: Luka Perkov >> >> -- >> 2.45.2 >> I am switching to child-node based structure from the next patch since I was able to replicate applying board overlay on a generic connector with child node. Ayush Singh