Samsung DTS ARM64 changes for v5.17

1. Add bindings for: Exynos USI, Samsung Galaxy A8 (2018) board, WinLink
    E850-96 board and WinLink vendor prefix.
 2. Add pinctrl definitions used for Exynos850.
 3. Minor fixes and improvements.
 4. Convert serial on ExynosAutov9 to new hierarchy where serial is part
    of USI node.
 -----BEGIN PGP SIGNATURE-----
 
 iQJEBAABCgAuFiEE3dJiKD0RGyM7briowTdm5oaLg9cFAmHAZ5gQHGtyemtAa2Vy
 bmVsLm9yZwAKCRDBN2bmhouD18hgD/9k4ki8CxbmuES6l9+wPlFQaPjmPePxF/P5
 nrFQRQL7kv+X05QBmswqGoZjh/ABPtaJan4Ue32BaMSr2vUrxauDec4046foCfcz
 cBttxFlcvkr7h1sHWZwrpqvcEG1QDcxSc0BUtCA0fFwNwcG8oadw5u1183VXFbwk
 UOwAZAZbqgZwRk/6LARrEXRp1P0qyyRnBuk6g9GFPDVvwK1KGSrfGnTQYDbSZBkt
 dHmvDMDR+0vMQgV/D1nHFDsKBRVFykKy9t5Xg+rvGHome7AkRtawibUcIB4ANQcz
 taxZA5vnlMDmvtNMRCHfx2HLzNwf1t1BGTZFj/EsVU+EJSf+juNSahRLiA0VC9uK
 x0jaRnhPwg7FkyksZZjDrSRZWe8GNYjBsE9nJ5EwH+H9Nf/PZD40eWgKlAEXbF0U
 tHfHX+xEoqy5o3qryPk1nLMEs3zXAqyAb3XRyz08m0j1oARPZgv/oi9h8Pgm5Dob
 SS7J/HiaNFipNyCcLz2D0JDQo47Xz5WLmYAsyUDgR1ddW/QphhafFqhhJt+LMqdx
 O+vG7xgBeZsQvlSsOlQTE0r541i6aAxgxsudVSFo7wlxA1LEn3WK5kC8W+GjzSsE
 1eN4Y3UvbIxv0oVuN/PfzhMZeVPLpr6M+0KnXaODfYtJNczQFizAxh9hfQ5cnmj+
 I2Zzzmsc1A==
 =A5Of
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmHAnZYACgkQmmx57+YA
 GNlQihAAml4a+mnX6NOZk6kMr/I4RuYESWDb4Gvinbd/GhwvSTx7i9lPWkfnvBRt
 vSyZgy8MbPLKcFVVrjI6L2IER+FnCpQH5iJyCPoEQ6lqpN6gzL8m1EEeOSuGf5NR
 JNFeMmFPCJbxHZnYPWyGgFDPo/f2sQxXRS69bNBGvMjH3ZCI1cLy4cow/2FuDxH0
 BfQh+zdYEdR9Fi/hdHIk8KU0pwzWzJGRRbMgsRUBDJl2B8UWM0xb4RpbEEEyag7H
 JOrvIzvQuT0LQvaM73DUJ/2UbQ0Sfhf5F0lWGhUPKLDTncKqe7tUNSqXRAjAYwtF
 0Jpp54cpWIjsjWijQ9LCcf0MV6zrEky5HtLYcNFooUR7/LdmJNogfFvBVhED52dD
 o4Z5++MFR4H/oLjSkK+ehjXp+lW0p+7fCm9boRhVOLTYK8UdZbc2j1oSsGoWUc2C
 KD4o+VXqo0/X48Zp90yPVKQf4CxV04+IJ0op8HTFEfvT58RvaDv96dSPj1XMrIhR
 1rL4yC814oPdQjbRI5IZfIyChpWGs9XOVETsdu59K/HXBY9ASO4oM+RyJJJxHJrS
 87DGaXymgazguAm/twlfMmAPFN2E8pRO9uJE7QH27wzG0O60WwreSXLxG2F3YywA
 2qUR0BpZ9MHoZTyiUObHojLMxcFoD0ObKiaZi3tsaySkqrcLc1Q=
 =qF6s
 -----END PGP SIGNATURE-----

Merge tag 'samsung-dt64-5.17' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into arm/dt

Samsung DTS ARM64 changes for v5.17

1. Add bindings for: Exynos USI, Samsung Galaxy A8 (2018) board, WinLink
   E850-96 board and WinLink vendor prefix.
2. Add pinctrl definitions used for Exynos850.
3. Minor fixes and improvements.
4. Convert serial on ExynosAutov9 to new hierarchy where serial is part
   of USI node.

* tag 'samsung-dt64-5.17' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux:
  dt-bindings: pinctrl: samsung: Add pin drive definitions for Exynos850
  dt-bindings: arm: samsung: Document E850-96 board binding
  dt-bindings: Add vendor prefix for WinLink
  dt-bindings: arm: samsung: document jackpotlte board binding
  dt-bindings: soc: samsung: Fix I2C clocks order in USI binding example
  arm64: dts: exynos: convert serial_0 to USI on ExynosAutov9
  dt-bindings: soc: samsung: Add Exynos USI bindings
  arm64: dts: exynos: Rename hsi2c nodes to i2c for Exynos5433 and Exynos7

Link: https://lore.kernel.org/r/20211220115530.30961-2-krzysztof.kozlowski@canonical.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
Arnd Bergmann 2021-12-20 16:13:25 +01:00
commit 0fd319105f
9 changed files with 258 additions and 33 deletions

View File

@ -199,6 +199,18 @@ properties:
- samsung,exynos7-espresso # Samsung Exynos7 Espresso
- const: samsung,exynos7
- description: Exynos7885 based boards
items:
- enum:
- samsung,jackpotlte # Samsung Galaxy A8 (2018)
- const: samsung,exynos7885
- description: Exynos850 based boards
items:
- enum:
- winlink,e850-96 # WinLink E850-96
- const: samsung,exynos850
- description: Exynos Auto v9 based boards
items:
- enum:

View File

@ -0,0 +1,159 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/soc/samsung/exynos-usi.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Samsung's Exynos USI (Universal Serial Interface) binding
maintainers:
- Sam Protsenko <semen.protsenko@linaro.org>
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
description: |
USI IP-core provides selectable serial protocol (UART, SPI or High-Speed I2C).
USI shares almost all internal circuits within each protocol, so only one
protocol can be chosen at a time. USI is modeled as a node with zero or more
child nodes, each representing a serial sub-node device. The mode setting
selects which particular function will be used.
Refer to next bindings documentation for information on protocol subnodes that
can exist under USI node:
[1] Documentation/devicetree/bindings/serial/samsung_uart.yaml
[2] Documentation/devicetree/bindings/i2c/i2c-exynos5.txt
[3] Documentation/devicetree/bindings/spi/spi-samsung.txt
properties:
$nodename:
pattern: "^usi@[0-9a-f]+$"
compatible:
enum:
- samsung,exynos850-usi # for USIv2 (Exynos850, ExynosAutoV9)
reg: true
clocks: true
clock-names: true
ranges: true
"#address-cells":
const: 1
"#size-cells":
const: 1
samsung,sysreg:
$ref: /schemas/types.yaml#/definitions/phandle-array
description:
Should be phandle/offset pair. The phandle to System Register syscon node
(for the same domain where this USI controller resides) and the offset
of SW_CONF register for this USI controller.
samsung,mode:
$ref: /schemas/types.yaml#/definitions/uint32
description:
Selects USI function (which serial protocol to use). Refer to
<include/dt-bindings/soc/samsung,exynos-usi.h> for valid USI mode values.
samsung,clkreq-on:
type: boolean
description:
Enable this property if underlying protocol requires the clock to be
continuously provided without automatic gating. As suggested by SoC
manual, it should be set in case of SPI/I2C slave, UART Rx and I2C
multi-master mode. Usually this property is needed if USI mode is set
to "UART".
This property is optional.
patternProperties:
# All other properties should be child nodes
"^(serial|spi|i2c)@[0-9a-f]+$":
type: object
description: Child node describing underlying USI serial protocol
required:
- compatible
- ranges
- "#address-cells"
- "#size-cells"
- samsung,sysreg
- samsung,mode
if:
properties:
compatible:
contains:
enum:
- samsung,exynos850-usi
then:
properties:
reg:
maxItems: 1
clocks:
items:
- description: Bus (APB) clock
- description: Operating clock for UART/SPI/I2C protocol
clock-names:
items:
- const: pclk
- const: ipclk
required:
- reg
- clocks
- clock-names
else:
properties:
reg: false
clocks: false
clock-names: false
samsung,clkreq-on: false
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/soc/samsung,exynos-usi.h>
usi0: usi@138200c0 {
compatible = "samsung,exynos850-usi";
reg = <0x138200c0 0x20>;
samsung,sysreg = <&sysreg_peri 0x1010>;
samsung,mode = <USI_V2_UART>;
samsung,clkreq-on; /* needed for UART mode */
#address-cells = <1>;
#size-cells = <1>;
ranges;
clocks = <&cmu_peri 32>, <&cmu_peri 31>;
clock-names = "pclk", "ipclk";
serial_0: serial@13820000 {
compatible = "samsung,exynos850-uart";
reg = <0x13820000 0xc0>;
interrupts = <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cmu_peri 32>, <&cmu_peri 31>;
clock-names = "uart", "clk_uart_baud0";
status = "disabled";
};
hsi2c_0: i2c@13820000 {
compatible = "samsung,exynosautov9-hsi2c";
reg = <0x13820000 0xc0>;
interrupts = <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
clocks = <&cmu_peri 31>, <&cmu_peri 32>;
clock-names = "hsi2c", "hsi2c_pclk";
status = "disabled";
};
};

View File

@ -1322,6 +1322,8 @@ patternProperties:
description: Wiligear, Ltd.
"^winbond,.*":
description: Winbond Electronics corp.
"^winlink,.*":
description: WinLink Co., Ltd
"^winstar,.*":
description: Winstar Display Corp.
"^wits,.*":

View File

@ -1585,7 +1585,7 @@
status = "disabled";
};
hsi2c_0: hsi2c@14e40000 {
hsi2c_0: i2c@14e40000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x14e40000 0x1000>;
interrupts = <GIC_SPI 428 IRQ_TYPE_LEVEL_HIGH>;
@ -1598,7 +1598,7 @@
status = "disabled";
};
hsi2c_1: hsi2c@14e50000 {
hsi2c_1: i2c@14e50000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x14e50000 0x1000>;
interrupts = <GIC_SPI 429 IRQ_TYPE_LEVEL_HIGH>;
@ -1611,7 +1611,7 @@
status = "disabled";
};
hsi2c_2: hsi2c@14e60000 {
hsi2c_2: i2c@14e60000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x14e60000 0x1000>;
interrupts = <GIC_SPI 430 IRQ_TYPE_LEVEL_HIGH>;
@ -1624,7 +1624,7 @@
status = "disabled";
};
hsi2c_3: hsi2c@14e70000 {
hsi2c_3: i2c@14e70000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x14e70000 0x1000>;
interrupts = <GIC_SPI 431 IRQ_TYPE_LEVEL_HIGH>;
@ -1637,7 +1637,7 @@
status = "disabled";
};
hsi2c_4: hsi2c@14ec0000 {
hsi2c_4: i2c@14ec0000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x14ec0000 0x1000>;
interrupts = <GIC_SPI 424 IRQ_TYPE_LEVEL_HIGH>;
@ -1650,7 +1650,7 @@
status = "disabled";
};
hsi2c_5: hsi2c@14ed0000 {
hsi2c_5: i2c@14ed0000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x14ed0000 0x1000>;
interrupts = <GIC_SPI 425 IRQ_TYPE_LEVEL_HIGH>;
@ -1663,7 +1663,7 @@
status = "disabled";
};
hsi2c_6: hsi2c@14ee0000 {
hsi2c_6: i2c@14ee0000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x14ee0000 0x1000>;
interrupts = <GIC_SPI 426 IRQ_TYPE_LEVEL_HIGH>;
@ -1676,7 +1676,7 @@
status = "disabled";
};
hsi2c_7: hsi2c@14ef0000 {
hsi2c_7: i2c@14ef0000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x14ef0000 0x1000>;
interrupts = <GIC_SPI 427 IRQ_TYPE_LEVEL_HIGH>;
@ -1689,7 +1689,7 @@
status = "disabled";
};
hsi2c_8: hsi2c@14d90000 {
hsi2c_8: i2c@14d90000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x14d90000 0x1000>;
interrupts = <GIC_SPI 443 IRQ_TYPE_LEVEL_HIGH>;
@ -1702,7 +1702,7 @@
status = "disabled";
};
hsi2c_9: hsi2c@14da0000 {
hsi2c_9: i2c@14da0000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x14da0000 0x1000>;
interrupts = <GIC_SPI 444 IRQ_TYPE_LEVEL_HIGH>;
@ -1715,7 +1715,7 @@
status = "disabled";
};
hsi2c_10: hsi2c@14de0000 {
hsi2c_10: i2c@14de0000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x14de0000 0x1000>;
interrupts = <GIC_SPI 445 IRQ_TYPE_LEVEL_HIGH>;
@ -1728,7 +1728,7 @@
status = "disabled";
};
hsi2c_11: hsi2c@14df0000 {
hsi2c_11: i2c@14df0000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x14df0000 0x1000>;
interrupts = <GIC_SPI 446 IRQ_TYPE_LEVEL_HIGH>;

View File

@ -359,7 +359,7 @@
interrupts = <GIC_SPI 384 IRQ_TYPE_LEVEL_HIGH>;
};
hsi2c_0: hsi2c@13640000 {
hsi2c_0: i2c@13640000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x13640000 0x1000>;
interrupts = <GIC_SPI 441 IRQ_TYPE_LEVEL_HIGH>;
@ -372,7 +372,7 @@
status = "disabled";
};
hsi2c_1: hsi2c@13650000 {
hsi2c_1: i2c@13650000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x13650000 0x1000>;
interrupts = <GIC_SPI 442 IRQ_TYPE_LEVEL_HIGH>;
@ -385,7 +385,7 @@
status = "disabled";
};
hsi2c_2: hsi2c@14e60000 {
hsi2c_2: i2c@14e60000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x14e60000 0x1000>;
interrupts = <GIC_SPI 459 IRQ_TYPE_LEVEL_HIGH>;
@ -398,7 +398,7 @@
status = "disabled";
};
hsi2c_3: hsi2c@14e70000 {
hsi2c_3: i2c@14e70000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x14e70000 0x1000>;
interrupts = <GIC_SPI 460 IRQ_TYPE_LEVEL_HIGH>;
@ -411,7 +411,7 @@
status = "disabled";
};
hsi2c_4: hsi2c@13660000 {
hsi2c_4: i2c@13660000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x13660000 0x1000>;
interrupts = <GIC_SPI 443 IRQ_TYPE_LEVEL_HIGH>;
@ -424,7 +424,7 @@
status = "disabled";
};
hsi2c_5: hsi2c@13670000 {
hsi2c_5: i2c@13670000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x13670000 0x1000>;
interrupts = <GIC_SPI 444 IRQ_TYPE_LEVEL_HIGH>;
@ -437,7 +437,7 @@
status = "disabled";
};
hsi2c_6: hsi2c@14e00000 {
hsi2c_6: i2c@14e00000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x14e00000 0x1000>;
interrupts = <GIC_SPI 461 IRQ_TYPE_LEVEL_HIGH>;
@ -450,7 +450,7 @@
status = "disabled";
};
hsi2c_7: hsi2c@13e10000 {
hsi2c_7: i2c@13e10000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x13e10000 0x1000>;
interrupts = <GIC_SPI 462 IRQ_TYPE_LEVEL_HIGH>;
@ -463,7 +463,7 @@
status = "disabled";
};
hsi2c_8: hsi2c@14e20000 {
hsi2c_8: i2c@14e20000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x14e20000 0x1000>;
interrupts = <GIC_SPI 463 IRQ_TYPE_LEVEL_HIGH>;
@ -476,7 +476,7 @@
status = "disabled";
};
hsi2c_9: hsi2c@13680000 {
hsi2c_9: i2c@13680000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x13680000 0x1000>;
interrupts = <GIC_SPI 445 IRQ_TYPE_LEVEL_HIGH>;
@ -489,7 +489,7 @@
status = "disabled";
};
hsi2c_10: hsi2c@13690000 {
hsi2c_10: i2c@13690000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x13690000 0x1000>;
interrupts = <GIC_SPI 446 IRQ_TYPE_LEVEL_HIGH>;
@ -502,7 +502,7 @@
status = "disabled";
};
hsi2c_11: hsi2c@136a0000 {
hsi2c_11: i2c@136a0000 {
compatible = "samsung,exynos7-hsi2c";
reg = <0x136a0000 0x1000>;
interrupts = <GIC_SPI 447 IRQ_TYPE_LEVEL_HIGH>;

View File

@ -54,3 +54,7 @@
vcc-supply = <&ufs_0_fixed_vcc_reg>;
vcc-fixed-regulator;
};
&usi_0 {
status = "okay";
};

View File

@ -7,6 +7,7 @@
*/
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/soc/samsung,exynos-usi.h>
/ {
compatible = "samsung,exynosautov9";
@ -256,16 +257,35 @@
reg = <0x17c20000 0x1000>;
};
/* USI: UART */
serial_0: uart@10300000 {
compatible = "samsung,exynos850-uart";
reg = <0x10300000 0x100>;
interrupts = <GIC_SPI 345 IRQ_TYPE_LEVEL_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&uart0_bus_dual>;
syscon_peric0: syscon@10220000 {
compatible = "samsung,exynosautov9-sysreg", "syscon";
reg = <0x10220000 0x2000>;
};
usi_0: usi@103000c0 {
compatible = "samsung,exynos850-usi";
reg = <0x103000c0 0x20>;
samsung,sysreg = <&syscon_peric0 0x1000>;
samsung,mode = <USI_V2_UART>;
samsung,clkreq-on; /* needed for UART mode */
#address-cells = <1>;
#size-cells = <1>;
ranges;
clocks = <&uart_clock>, <&uart_clock>;
clock-names = "uart", "clk_uart_baud0";
clock-names = "pclk", "ipclk";
status = "disabled";
/* USI: UART */
serial_0: serial@10300000 {
compatible = "samsung,exynos850-uart";
reg = <0x10300000 0xc0>;
interrupts = <GIC_SPI 345 IRQ_TYPE_LEVEL_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&uart0_bus_dual>;
clocks = <&uart_clock>, <&uart_clock>;
clock-names = "uart", "clk_uart_baud0";
status = "disabled";
};
};
ufs_0_phy: ufs0-phy@17e04000 {

View File

@ -36,7 +36,10 @@
#define EXYNOS5260_PIN_DRV_LV4 2
#define EXYNOS5260_PIN_DRV_LV6 3
/* Drive strengths for Exynos5410, Exynos542x and Exynos5800 */
/*
* Drive strengths for Exynos5410, Exynos542x, Exynos5800 and Exynos850 (except
* GPIO_HSI block)
*/
#define EXYNOS5420_PIN_DRV_LV1 0
#define EXYNOS5420_PIN_DRV_LV2 1
#define EXYNOS5420_PIN_DRV_LV3 2
@ -56,6 +59,14 @@
#define EXYNOS5433_PIN_DRV_SLOW_SR5 0xc
#define EXYNOS5433_PIN_DRV_SLOW_SR6 0xf
/* Drive strengths for Exynos850 GPIO_HSI block */
#define EXYNOS850_HSI_PIN_DRV_LV1 0 /* 1x */
#define EXYNOS850_HSI_PIN_DRV_LV1_5 1 /* 1.5x */
#define EXYNOS850_HSI_PIN_DRV_LV2 2 /* 2x */
#define EXYNOS850_HSI_PIN_DRV_LV2_5 3 /* 2.5x */
#define EXYNOS850_HSI_PIN_DRV_LV3 4 /* 3x */
#define EXYNOS850_HSI_PIN_DRV_LV4 5 /* 4x */
#define EXYNOS_PIN_FUNC_INPUT 0
#define EXYNOS_PIN_FUNC_OUTPUT 1
#define EXYNOS_PIN_FUNC_2 2

View File

@ -0,0 +1,17 @@
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
/*
* Copyright (c) 2021 Linaro Ltd.
* Author: Sam Protsenko <semen.protsenko@linaro.org>
*
* Device Tree bindings for Samsung Exynos USI (Universal Serial Interface).
*/
#ifndef __DT_BINDINGS_SAMSUNG_EXYNOS_USI_H
#define __DT_BINDINGS_SAMSUNG_EXYNOS_USI_H
#define USI_V2_NONE 0
#define USI_V2_UART 1
#define USI_V2_SPI 2
#define USI_V2_I2C 3
#endif /* __DT_BINDINGS_SAMSUNG_EXYNOS_USI_H */