1fff948a4SWilliam Zhang# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause 2fff948a4SWilliam Zhang%YAML 1.2 3fff948a4SWilliam Zhang--- 4fff948a4SWilliam Zhang$id: http://devicetree.org/schemas/spi/brcm,bcm63xx-hsspi.yaml# 5fff948a4SWilliam Zhang$schema: http://devicetree.org/meta-schemas/core.yaml# 6fff948a4SWilliam Zhang 7*0ba979f9SWilliam Zhangtitle: Broadcom Broadband SoC High Speed SPI controller 8fff948a4SWilliam Zhang 9fff948a4SWilliam Zhangmaintainers: 10*0ba979f9SWilliam Zhang - William Zhang <william.zhang@broadcom.com> 11*0ba979f9SWilliam Zhang - Kursad Oney <kursad.oney@broadcom.com> 12fff948a4SWilliam Zhang - Jonas Gorski <jonas.gorski@gmail.com> 13fff948a4SWilliam Zhang 14*0ba979f9SWilliam Zhangdescription: | 15*0ba979f9SWilliam Zhang Broadcom Broadband SoC supports High Speed SPI master controller since the 16*0ba979f9SWilliam Zhang early MIPS based chips such as BCM6328 and BCM63268. This initial rev 1.0 17*0ba979f9SWilliam Zhang controller was carried over to recent ARM based chips, such as BCM63138, 18*0ba979f9SWilliam Zhang BCM4908 and BCM6858. The old MIPS based chip should continue to use the 19*0ba979f9SWilliam Zhang brcm,bcm6328-hsspi compatible string. The recent ARM based chip is required to 20*0ba979f9SWilliam Zhang use the brcm,bcmbca-hsspi-v1.0 as part of its compatible string list as 21*0ba979f9SWilliam Zhang defined below to match the specific chip along with ip revision info. 22*0ba979f9SWilliam Zhang 23*0ba979f9SWilliam Zhang This rev 1.0 controller has a limitation that can not keep the chip select line 24*0ba979f9SWilliam Zhang active between the SPI transfers within the same SPI message. This can 25*0ba979f9SWilliam Zhang terminate the transaction to some SPI devices prematurely. The issue can be 26*0ba979f9SWilliam Zhang worked around by either the controller's prepend mode or using the dummy chip 27*0ba979f9SWilliam Zhang select workaround. Driver automatically picks the suitable mode based on 28*0ba979f9SWilliam Zhang transfer type so it is transparent to the user. 29*0ba979f9SWilliam Zhang 30*0ba979f9SWilliam Zhang The newer SoCs such as BCM6756, BCM4912 and BCM6855 include an updated SPI 31*0ba979f9SWilliam Zhang controller rev 1.1 that add the capability to allow the driver to control chip 32*0ba979f9SWilliam Zhang select explicitly. This solves the issue in the old controller. 33*0ba979f9SWilliam Zhang 34fff948a4SWilliam Zhangproperties: 35fff948a4SWilliam Zhang compatible: 36*0ba979f9SWilliam Zhang oneOf: 37*0ba979f9SWilliam Zhang - const: brcm,bcm6328-hsspi 38*0ba979f9SWilliam Zhang - items: 39*0ba979f9SWilliam Zhang - enum: 40*0ba979f9SWilliam Zhang - brcm,bcm47622-hsspi 41*0ba979f9SWilliam Zhang - brcm,bcm4908-hsspi 42*0ba979f9SWilliam Zhang - brcm,bcm63138-hsspi 43*0ba979f9SWilliam Zhang - brcm,bcm63146-hsspi 44*0ba979f9SWilliam Zhang - brcm,bcm63148-hsspi 45*0ba979f9SWilliam Zhang - brcm,bcm63158-hsspi 46*0ba979f9SWilliam Zhang - brcm,bcm63178-hsspi 47*0ba979f9SWilliam Zhang - brcm,bcm6846-hsspi 48*0ba979f9SWilliam Zhang - brcm,bcm6856-hsspi 49*0ba979f9SWilliam Zhang - brcm,bcm6858-hsspi 50*0ba979f9SWilliam Zhang - brcm,bcm6878-hsspi 51*0ba979f9SWilliam Zhang - const: brcm,bcmbca-hsspi-v1.0 52*0ba979f9SWilliam Zhang - items: 53*0ba979f9SWilliam Zhang - enum: 54*0ba979f9SWilliam Zhang - brcm,bcm4912-hsspi 55*0ba979f9SWilliam Zhang - brcm,bcm6756-hsspi 56*0ba979f9SWilliam Zhang - brcm,bcm6813-hsspi 57*0ba979f9SWilliam Zhang - brcm,bcm6855-hsspi 58*0ba979f9SWilliam Zhang - const: brcm,bcmbca-hsspi-v1.1 59fff948a4SWilliam Zhang 60fff948a4SWilliam Zhang reg: 61*0ba979f9SWilliam Zhang items: 62*0ba979f9SWilliam Zhang - description: main registers 63*0ba979f9SWilliam Zhang - description: miscellaneous control registers 64*0ba979f9SWilliam Zhang minItems: 1 65*0ba979f9SWilliam Zhang 66*0ba979f9SWilliam Zhang reg-names: 67*0ba979f9SWilliam Zhang items: 68*0ba979f9SWilliam Zhang - const: hsspi 69*0ba979f9SWilliam Zhang - const: spim-ctrl 70*0ba979f9SWilliam Zhang minItems: 1 71fff948a4SWilliam Zhang 72fff948a4SWilliam Zhang clocks: 73fff948a4SWilliam Zhang items: 74fff948a4SWilliam Zhang - description: SPI master reference clock 75fff948a4SWilliam Zhang - description: SPI master pll clock 76fff948a4SWilliam Zhang 77fff948a4SWilliam Zhang clock-names: 78fff948a4SWilliam Zhang items: 79fff948a4SWilliam Zhang - const: hsspi 80fff948a4SWilliam Zhang - const: pll 81fff948a4SWilliam Zhang 82fff948a4SWilliam Zhang interrupts: 83fff948a4SWilliam Zhang maxItems: 1 84fff948a4SWilliam Zhang 85fff948a4SWilliam Zhangrequired: 86fff948a4SWilliam Zhang - compatible 87fff948a4SWilliam Zhang - reg 88fff948a4SWilliam Zhang - clocks 89fff948a4SWilliam Zhang - clock-names 90fff948a4SWilliam Zhang - interrupts 91fff948a4SWilliam Zhang 92fff948a4SWilliam ZhangallOf: 93fff948a4SWilliam Zhang - $ref: spi-controller.yaml# 94*0ba979f9SWilliam Zhang - if: 95*0ba979f9SWilliam Zhang properties: 96*0ba979f9SWilliam Zhang compatible: 97*0ba979f9SWilliam Zhang contains: 98*0ba979f9SWilliam Zhang enum: 99*0ba979f9SWilliam Zhang - brcm,bcm6328-hsspi 100*0ba979f9SWilliam Zhang - brcm,bcmbca-hsspi-v1.0 101*0ba979f9SWilliam Zhang then: 102*0ba979f9SWilliam Zhang properties: 103*0ba979f9SWilliam Zhang reg: 104*0ba979f9SWilliam Zhang maxItems: 1 105*0ba979f9SWilliam Zhang reg-names: 106*0ba979f9SWilliam Zhang maxItems: 1 107*0ba979f9SWilliam Zhang else: 108*0ba979f9SWilliam Zhang properties: 109*0ba979f9SWilliam Zhang reg: 110*0ba979f9SWilliam Zhang minItems: 2 111*0ba979f9SWilliam Zhang maxItems: 2 112*0ba979f9SWilliam Zhang reg-names: 113*0ba979f9SWilliam Zhang minItems: 2 114*0ba979f9SWilliam Zhang maxItems: 2 115*0ba979f9SWilliam Zhang required: 116*0ba979f9SWilliam Zhang - reg-names 117fff948a4SWilliam Zhang 118fff948a4SWilliam ZhangunevaluatedProperties: false 119fff948a4SWilliam Zhang 120fff948a4SWilliam Zhangexamples: 121fff948a4SWilliam Zhang - | 122*0ba979f9SWilliam Zhang #include <dt-bindings/interrupt-controller/arm-gic.h> 123*0ba979f9SWilliam Zhang spi@ff801000 { 124*0ba979f9SWilliam Zhang compatible = "brcm,bcm6756-hsspi", "brcm,bcmbca-hsspi-v1.1"; 125*0ba979f9SWilliam Zhang reg = <0xff801000 0x1000>, 126*0ba979f9SWilliam Zhang <0xff802610 0x4>; 127*0ba979f9SWilliam Zhang reg-names = "hsspi", "spim-ctrl"; 128*0ba979f9SWilliam Zhang interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>; 129*0ba979f9SWilliam Zhang clocks = <&hsspi>, <&hsspi_pll>; 130fff948a4SWilliam Zhang clock-names = "hsspi", "pll"; 131*0ba979f9SWilliam Zhang num-cs = <8>; 132fff948a4SWilliam Zhang #address-cells = <1>; 133fff948a4SWilliam Zhang #size-cells = <0>; 134fff948a4SWilliam Zhang }; 135