# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/net/can/ti,tcan4x5x.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Texas Instruments TCAN4x5x CAN Controller maintainers: - Marc Kleine-Budde properties: compatible: oneOf: - items: - enum: - ti,tcan4552 - ti,tcan4553 - const: ti,tcan4x5x - const: ti,tcan4x5x reg: maxItems: 1 interrupts: maxItems: 1 description: The GPIO parent interrupt. clocks: maxItems: 1 clock-names: items: - const: cclk reset-gpios: description: Hardwired output GPIO. If not defined then software reset. maxItems: 1 device-state-gpios: description: Input GPIO that indicates if the device is in a sleep state or if the device is active. Not available with tcan4552/4553. maxItems: 1 device-wake-gpios: description: Wake up GPIO to wake up the TCAN device. Not available with tcan4552/4553. maxItems: 1 bosch,mram-cfg: description: | Message RAM configuration data. Multiple M_CAN instances can share the same Message RAM and each element(e.g Rx FIFO or Tx Buffer and etc) number in Message RAM is also configurable, so this property is telling driver how the shared or private Message RAM are used by this M_CAN controller. The format should be as follows: The 'offset' is an address offset of the Message RAM where the following elements start from. This is usually set to 0x0 if you're using a private Message RAM. The remain cells are used to specify how many elements are used for each FIFO/Buffer. M_CAN includes the following elements according to user manual: 11-bit Filter 0-128 elements / 0-128 words 29-bit Filter 0-64 elements / 0-128 words Rx FIFO 0 0-64 elements / 0-1152 words Rx FIFO 1 0-64 elements / 0-1152 words Rx Buffers 0-64 elements / 0-1152 words Tx Event FIFO 0-32 elements / 0-64 words Tx Buffers 0-32 elements / 0-576 words Please refer to 2.4.1 Message RAM Configuration in Bosch M_CAN user manual for details. $ref: /schemas/types.yaml#/definitions/int32-array items: - description: The 'offset' is an address offset of the Message RAM where the following elements start from. This is usually set to 0x0 if you're using a private Message RAM. default: 0 - description: 11-bit Filter 0-128 elements / 0-128 words minimum: 0 maximum: 128 - description: 29-bit Filter 0-64 elements / 0-128 words minimum: 0 maximum: 64 - description: Rx FIFO 0 0-64 elements / 0-1152 words minimum: 0 maximum: 64 - description: Rx FIFO 1 0-64 elements / 0-1152 words minimum: 0 maximum: 64 - description: Rx Buffers 0-64 elements / 0-1152 words minimum: 0 maximum: 64 - description: Tx Event FIFO 0-32 elements / 0-64 words minimum: 0 maximum: 32 - description: Tx Buffers 0-32 elements / 0-576 words minimum: 0 maximum: 32 minItems: 1 spi-max-frequency: description: Must be half or less of "clocks" frequency. maximum: 18000000 ti,nwkrq-voltage-vio: type: boolean description: nWKRQ Pin GPO buffer voltage configuration. Set nWKRQ to use VIO voltage rail. When not set nWKRQ will use internal voltage rail. wakeup-source: $ref: /schemas/types.yaml#/definitions/flag description: Enable CAN remote wakeup. allOf: - $ref: can-controller.yaml# - $ref: /schemas/spi/spi-peripheral-props.yaml# - if: properties: compatible: contains: enum: - ti,tcan4552 - ti,tcan4553 then: properties: device-state-gpios: false device-wake-gpios: false required: - compatible - reg - interrupts - clocks - clock-names - bosch,mram-cfg unevaluatedProperties: false examples: - | #include #include spi { #address-cells = <1>; #size-cells = <0>; can@0 { compatible = "ti,tcan4x5x"; reg = <0>; clocks = <&can0_osc>; clock-names = "cclk"; pinctrl-names = "default"; pinctrl-0 = <&can0_pins>; spi-max-frequency = <10000000>; bosch,mram-cfg = <0x0 0 0 16 0 0 1 1>; interrupt-parent = <&gpio1>; interrupts = <14 IRQ_TYPE_LEVEL_LOW>; device-state-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>; device-wake-gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>; reset-gpios = <&gpio1 27 GPIO_ACTIVE_HIGH>; ti,nwkrq-voltage-vio; wakeup-source; }; }; - | #include #include spi { #address-cells = <1>; #size-cells = <0>; can@0 { compatible = "ti,tcan4552", "ti,tcan4x5x"; reg = <0>; clocks = <&can0_osc>; clock-names = "cclk"; pinctrl-names = "default"; pinctrl-0 = <&can0_pins>; spi-max-frequency = <10000000>; bosch,mram-cfg = <0x0 0 0 16 0 0 1 1>; interrupt-parent = <&gpio1>; interrupts = <14 IRQ_TYPE_LEVEL_LOW>; reset-gpios = <&gpio1 27 GPIO_ACTIVE_HIGH>; wakeup-source; }; };