Commit 185f690f authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge tag 'linux-can-next-for-5.15-20210819' of...

Merge tag 'linux-can-next-for-5.15-20210819' of git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next

Marc Kleine-Budde says:

====================
linux-can-next-for-5.15-20210819

The first patch is by me, for the mailmap file and maps the email
address of two former ESD employees to a newly created role account.

The next 3 patches are by Oleksij Rempel and add support for GPIO
based switchable CAN bus termination.

The next 3 patches are by Vincent Mailhol. The first one changes the
CAN netlink interface to not bail out if the user switched off
unsupported features. The next one adds Vincent as the maintainer of
the etas_es58x driver and the last one cleans up the documentation of
struct es58x_fd_tx_conf_msg.

The next patch is by me, for the mcp251xfd driver and marks some
instances of struct mcp251xfd_priv as const. Lad Prabhakar contributes
2 patches for the rcar_canfd driver, that add support for RZ/G2L
family.

The next 5 patches target the m_can/tcan45x5 driver. 2 are by me an
fix trivial checkpatch warnings. The remaining 3 patches are by Matt
Kline and improve the performance on the SPI based tcan4x5x chip by
batching FIFO reads and writes.

The last 7 patches are for the c_can driver. Dario Binacchi's patch
converts the DT bindings to yaml, 2 patches by me fix a typo and
rename a macro to properly represent the usage. The last 4 patches are
again by Dario Binacchi and provide a performance improvement for the
TX path by operating the TX mailboxes as a true FIFO.

* tag 'linux-can-next-for-5.15-20210819' of git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next: (22 commits)
  can: c_can: cache frames to operate as a true FIFO
  can: c_can: support tx ring algorithm
  can: c_can: exit c_can_do_tx() early if no frames have been sent
  can: c_can: remove struct c_can_priv::priv field
  can: c_can: rename IF_RX -> IF_NAPI
  can: c_can: c_can_do_tx(): fix typo in comment
  dt-bindings: net: can: c_can: convert to json-schema
  can: m_can: Batch FIFO writes during CAN transmit
  can: m_can: Batch FIFO reads during CAN receive
  can: m_can: Disable IRQs on FIFO bus errors
  can: m_can: fix block comment style
  can: tcan4x5x: cdev_to_priv(): remove stray empty line
  can: rcar_canfd: Add support for RZ/G2L family
  dt-bindings: net: can: renesas,rcar-canfd: Document RZ/G2L SoC
  can: mcp251xfd: mark some instances of struct mcp251xfd_priv as const
  can: etas_es58x: clean-up documentation of struct es58x_fd_tx_conf_msg
  MAINTAINERS: add Vincent MAILHOL as maintainer for the ETAS ES58X CAN/USB driver
  can: netlink: allow user to turn off unsupported features
  can: dev: provide optional GPIO based termination support
  dt-bindings: can: fsl,flexcan: enable termination-* bindings
  ...
====================

Link: https://lore.kernel.org/r/20210819133913.657715-1-mkl@pengutronix.de


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 5c8a2bb4 387da6bc
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -229,6 +229,7 @@ Matthew Wilcox <willy@infradead.org> <mawilcox@microsoft.com>
Matthew Wilcox <willy@infradead.org> <willy@debian.org>
Matthew Wilcox <willy@infradead.org> <willy@linux.intel.com>
Matthew Wilcox <willy@infradead.org> <willy@parisc-linux.org>
Matthias Fuchs <socketcan@esd.eu> <matthias.fuchs@esd.eu>
Matthieu CASTET <castet.matthieu@free.fr>
Matt Ranostay <matt.ranostay@konsulko.com> <matt@ranostay.consulting>
Matt Ranostay <mranostay@gmail.com> Matthew Ranostay <mranostay@embeddedalley.com>
@@ -341,6 +342,7 @@ Sumit Semwal <sumit.semwal@ti.com>
Takashi YOSHII <takashi.yoshii.zj@renesas.com>
Tejun Heo <htejun@gmail.com>
Thomas Graf <tgraf@suug.ch>
Thomas Körper <socketcan@esd.eu> <thomas.koerper@esd.eu>
Thomas Pedersen <twp@codeaurora.org>
Tiezhu Yang <yangtiezhu@loongson.cn> <kernelpatch@126.com>
Todor Tomov <todor.too@gmail.com> <todor.tomov@linaro.org>
+119 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/can/bosch,c_can.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Bosch C_CAN/D_CAN controller Device Tree Bindings

description: Bosch C_CAN/D_CAN controller for CAN bus

maintainers:
  - Dario Binacchi <dariobin@libero.it>

allOf:
  - $ref: can-controller.yaml#

properties:
  compatible:
    oneOf:
      - enum:
          - bosch,c_can
          - bosch,d_can
          - ti,dra7-d_can
          - ti,am3352-d_can
      - items:
          - enum:
              - ti,am4372-d_can
          - const: ti,am3352-d_can

  reg:
    maxItems: 1

  interrupts:
    minItems: 1
    maxItems: 4

  power-domains:
    description: |
      Should contain a phandle to a PM domain provider node and an args
      specifier containing the DCAN device id value. It's mandatory for
      Keystone 2 66AK2G SoCs only.
    maxItems: 1

  clocks:
    description: |
      CAN functional clock phandle.
    maxItems: 1

  clock-names:
    maxItems: 1

  syscon-raminit:
    description: |
      Handle to system control region that contains the RAMINIT register,
      register offset to the RAMINIT register and the CAN instance number (0
      offset).
    $ref: /schemas/types.yaml#/definitions/phandle-array
    items:
      items:
        - description: The phandle to the system control region.
        - description: The register offset.
        - description: The CAN instance number.

  resets:
    maxItems: 1

required:
  - compatible
  - reg
  - interrupts
  - clocks

if:
  properties:
    compatible:
      contains:
        enum:
          - bosch,d_can

then:
  properties:
    interrupts:
      minItems: 4
      maxItems: 4
      items:
        - description: Error and status IRQ
        - description: Message object IRQ
        - description: RAM ECC correctable error IRQ
        - description: RAM ECC non-correctable error IRQ

else:
  properties:
    interrupts:
      maxItems: 1
      items:
        - description: Error and status IRQ

additionalProperties: false

examples:
  - |
    #include <dt-bindings/reset/altr,rst-mgr.h>

    can@ffc00000 {
       compatible = "bosch,d_can";
       reg = <0xffc00000 0x1000>;
       interrupts = <0 131 4>, <0 132 4>, <0 133 4>, <0 134 4>;
       clocks = <&can0_clk>;
       resets = <&rst CAN0_RESET>;
    };
  - |
    can@0 {
        compatible = "ti,am3352-d_can";
        reg = <0x0 0x2000>;
        clocks = <&dcan1_fck>;
        clock-names = "fck";
        syscon-raminit = <&scm_conf 0x644 1>;
        interrupts = <55>;
    };
+0 −65
Original line number Diff line number Diff line
Bosch C_CAN/D_CAN controller Device Tree Bindings
-------------------------------------------------

Required properties:
- compatible		: Should be "bosch,c_can" for C_CAN controllers and
			  "bosch,d_can" for D_CAN controllers.
			  Can be "ti,dra7-d_can", "ti,am3352-d_can" or
			  "ti,am4372-d_can".
- reg			: physical base address and size of the C_CAN/D_CAN
			  registers map
- interrupts		: property with a value describing the interrupt
			  number

The following are mandatory properties for DRA7x, AM33xx and AM43xx SoCs only:
- ti,hwmods		: Must be "d_can<n>" or "c_can<n>", n being the
			  instance number

The following are mandatory properties for Keystone 2 66AK2G SoCs only:
- power-domains		: Should contain a phandle to a PM domain provider node
			  and an args specifier containing the DCAN device id
			  value. This property is as per the binding,
			  Documentation/devicetree/bindings/soc/ti/sci-pm-domain.yaml
- clocks		: CAN functional clock phandle. This property is as per the
			  binding,
			  Documentation/devicetree/bindings/clock/ti,sci-clk.yaml

Optional properties:
- syscon-raminit	: Handle to system control region that contains the
			  RAMINIT register, register offset to the RAMINIT
			  register and the CAN instance number (0 offset).

Note: "ti,hwmods" field is used to fetch the base address and irq
resources from TI, omap hwmod data base during device registration.
Future plan is to migrate hwmod data base contents into device tree
blob so that, all the required data will be used from device tree dts
file.

Example:

Step1: SoC common .dtsi file

	dcan1: d_can@481d0000 {
		compatible = "bosch,d_can";
		reg = <0x481d0000 0x2000>;
		interrupts = <55>;
		interrupt-parent = <&intc>;
		status = "disabled";
	};

(or)

	dcan1: d_can@481d0000 {
		compatible = "bosch,d_can";
		ti,hwmods = "d_can1";
		reg = <0x481d0000 0x2000>;
		interrupts = <55>;
		interrupt-parent = <&intc>;
		status = "disabled";
	};

Step 2: board specific .dts file

	&dcan1 {
		status = "okay";
	};
+9 −0
Original line number Diff line number Diff line
@@ -13,6 +13,15 @@ properties:
  $nodename:
    pattern: "^can(@.*)?$"

  termination-gpios:
    description: GPIO pin to enable CAN bus termination.
    maxItems: 1

  termination-ohms:
    description: The resistance value of the CAN bus termination resistor.
    minimum: 1
    maximum: 65535

additionalProperties: true

...
+17 −0
Original line number Diff line number Diff line
@@ -119,6 +119,9 @@ properties:
    minimum: 0
    maximum: 2

  termination-gpios: true
  termination-ohms: true

required:
  - compatible
  - reg
@@ -148,3 +151,17 @@ examples:
        fsl,stop-mode = <&gpr 0x34 28>;
        fsl,scu-index = /bits/ 8 <1>;
    };
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/gpio/gpio.h>

    can@2090000 {
        compatible = "fsl,imx6q-flexcan";
        reg = <0x02090000 0x4000>;
        interrupts = <0 110 IRQ_TYPE_LEVEL_HIGH>;
        clocks = <&clks 1>, <&clks 2>;
        clock-names = "ipg", "per";
        fsl,stop-mode = <&gpr 0x34 28>;
        termination-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
        termination-ohms = <120>;
    };
Loading