Commit c05a182b authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'for-5.13/libata-2021-04-27' of git://git.kernel.dk/linux-block

Pull libata updates from Jens Axboe:
 "Mostly cleanups this time, but also a few additions:

   - kernel-doc cleanups and sanitization (Lee)

   - Spelling fix (Bhaskar)

   - Fix ata_qc_from_tag() return value check in dwc_460ex (Dinghao)

   - Fall-through warning fix (Gustavo)

   - IRQ registration fixes (Sergey)

   - Add AHCI support for Tegra186 (Sowjanya)

   - Add xiling phy support for AHCI (Piyush)

   - SXS disable fix for AHCI for Hisilicon Kunpeng920 (Xingui)

   - pata legacy probe mask support (Maciej)"

* tag 'for-5.13/libata-2021-04-27' of git://git.kernel.dk/linux-block: (54 commits)
  libata: Fix fall-through warnings for Clang
  pata_ipx4xx_cf: Fix unsigned comparison with less than zero
  ata: ahci_tegra: call tegra_powergate_power_off only when PM domain is not present
  ata: ahci_tegra: Add AHCI support for Tegra186
  dt-binding: ata: tegra: Add dt-binding documentation for Tegra186
  dt-bindings: ata: tegra: Convert binding documentation to YAML
  pata_legacy: Add `probe_mask' parameter like with ide-generic
  pata_platform: Document `pio_mask' module parameter
  pata_legacy: Properly document module parameters
  ata: ahci: ceva: Updated code by using dev_err_probe()
  ata: ahci: Disable SXS for Hisilicon Kunpeng920
  ata: libahci_platform: fix IRQ check
  sata_mv: add IRQ checks
  ata: pata_acpi: Fix some incorrect function param descriptions
  ata: libata-acpi: Fix function name and provide description for 'prev_gtf'
  ata: sata_mv: Fix misnaming of 'mv_bmdma_stop()'
  ata: pata_cs5530: Fix misspelling of 'cs5530_init_one()'s 'pdev' param
  ata: pata_legacy: Repair a couple kernel-doc problems
  ata: ata_generic: Fix misspelling of 'ata_generic_init_one()'
  ata: pata_opti: Fix spelling issue of 'val' in 'opti_write_reg()'
  ...
parents fc058606 e06abcc6
Loading
Loading
Loading
Loading
+90 −0
Original line number Diff line number Diff line
@@ -3600,6 +3600,96 @@
			Currently this function knows 686a and 8231 chips.
			Format: [spp|ps2|epp|ecp|ecpepp]

	pata_legacy.all=	[HW,LIBATA]
			Format: <int>
			Set to non-zero to probe primary and secondary ISA
			port ranges on PCI systems where no PCI PATA device
			has been found at either range.  Disabled by default.

	pata_legacy.autospeed=	[HW,LIBATA]
			Format: <int>
			Set to non-zero if a chip is present that snoops speed
			changes.  Disabled by default.

	pata_legacy.ht6560a=	[HW,LIBATA]
			Format: <int>
			Set to 1, 2, or 3 for HT 6560A on the primary channel,
			the secondary channel, or both channels respectively.
			Disabled by default.

	pata_legacy.ht6560b=	[HW,LIBATA]
			Format: <int>
			Set to 1, 2, or 3 for HT 6560B on the primary channel,
			the secondary channel, or both channels respectively.
			Disabled by default.

	pata_legacy.iordy_mask=	[HW,LIBATA]
			Format: <int>
			IORDY enable mask.  Set individual bits to allow IORDY
			for the respective channel.  Bit 0 is for the first
			legacy channel handled by this driver, bit 1 is for
			the second channel, and so on.  The sequence will often
			correspond to the primary legacy channel, the secondary
			legacy channel, and so on, but the handling of a PCI
			bus and the use of other driver options may interfere
			with the sequence.  By default IORDY is allowed across
			all channels.

	pata_legacy.opti82c46x=	[HW,LIBATA]
			Format: <int>
			Set to 1, 2, or 3 for Opti 82c611A on the primary
			channel, the secondary channel, or both channels
			respectively.  Disabled by default.

	pata_legacy.opti82c611a=	[HW,LIBATA]
			Format: <int>
			Set to 1, 2, or 3 for Opti 82c465MV on the primary
			channel, the secondary channel, or both channels
			respectively.  Disabled by default.

	pata_legacy.pio_mask=	[HW,LIBATA]
			Format: <int>
			PIO mode mask for autospeed devices.  Set individual
			bits to allow the use of the respective PIO modes.
			Bit 0 is for mode 0, bit 1 is for mode 1, and so on.
			All modes allowed by default.

	pata_legacy.probe_all=	[HW,LIBATA]
			Format: <int>
			Set to non-zero to probe tertiary and further ISA
			port ranges on PCI systems.  Disabled by default.

	pata_legacy.probe_mask=	[HW,LIBATA]
			Format: <int>
			Probe mask for legacy ISA PATA ports.  Depending on
			platform configuration and the use of other driver
			options up to 6 legacy ports are supported: 0x1f0,
			0x170, 0x1e8, 0x168, 0x1e0, 0x160, however probing
			of individual ports can be disabled by setting the
			corresponding bits in the mask to 1.  Bit 0 is for
			the first port in the list above (0x1f0), and so on.
			By default all supported ports are probed.

	pata_legacy.qdi=	[HW,LIBATA]
			Format: <int>
			Set to non-zero to probe QDI controllers.  By default
			set to 1 if CONFIG_PATA_QDI_MODULE, 0 otherwise.

	pata_legacy.winbond=	[HW,LIBATA]
			Format: <int>
			Set to non-zero to probe Winbond controllers.  Use
			the standard I/O port (0x130) if 1, otherwise the
			value given is the I/O port to use (typically 0x1b0).
			By default set to 1 if CONFIG_PATA_WINBOND_VLB_MODULE,
			0 otherwise.

	pata_platform.pio_mask=	[HW,LIBATA]
			Format: <int>
			Supported PIO mode mask.  Set individual bits to allow
			the use of the respective PIO modes.  Bit 0 is for
			mode 0, bit 1 is for mode 1, and so on.  Mode 0 only
			allowed by default.

	pause_on_oops=
			Halt all CPUs after the first oops has been printed for
			the specified number of seconds.  This is to be used if
+4 −0
Original line number Diff line number Diff line
@@ -38,6 +38,8 @@ Required properties:

Optional properties:
  - ceva,broken-gen2: limit to gen1 speed instead of gen2.
  - phys: phandle for the PHY device
  - resets: phandle to the reset controller for the SATA IP

Examples:
	ahci@fd0c0000 {
@@ -56,4 +58,6 @@ Examples:
		ceva,p1-burst-params = /bits/ 8 <0x0A 0x08 0x4A 0x06>;
		ceva,p1-retry-params = /bits/ 16 <0x0216 0x7F06>;
		ceva,broken-gen2;
		phys = <&psgtr 1 PHY_TYPE_SATA 1 1>;
		resets = <&zynqmp_reset ZYNQMP_RESET_SATA>;
	};
+176 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/ata/nvidia,tegra-ahci.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Tegra AHCI SATA Controller

maintainers:
  - Thierry Reding <thierry.reding@gmail.com>
  - Jonathan Hunter <jonathanh@nvidia.com>

properties:
  compatible:
    enum:
      - nvidia,tegra124-ahci
      - nvidia,tegra132-ahci
      - nvidia,tegra210-ahci
      - nvidia,tegra186-ahci

  reg:
    minItems: 2
    maxItems: 3
    items:
      - description: AHCI registers
      - description: SATA configuration and IPFS registers
      - description: SATA AUX registers

  interrupts:
    maxItems: 1

  clock-names:
    items:
      - const: sata
      - const: sata-oob

  clocks:
    maxItems: 2

  reset-names:
    minItems: 2
    items:
      - const: sata
      - const: sata-cold
      - const: sata-oob

  resets:
    minItems: 2
    maxItems: 3

  iommus:
    maxItems: 1

  interconnect-names:
    items:
      - const: dma-mem
      - const: write

  interconnects:
    maxItems: 2

  power-domains:
    items:
      - description: SAX power-domain

  phy-names:
    items:
      - const: sata-0

  phys:
    maxItems: 1

  hvdd-supply:
    description: SATA HVDD regulator supply.

  vddio-supply:
    description: SATA VDDIO regulator supply.

  avdd-supply:
    description: SATA AVDD regulator supply.

  target-5v-supply:
    description: SATA 5V power regulator supply.

  target-12v-supply:
    description: SATA 12V power regulator supply.

required:
  - compatible
  - reg
  - interrupts
  - clock-names
  - clocks
  - reset-names
  - resets

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - nvidia,tegra124-ahci
              - nvidia,tegra132-ahci
    then:
      properties:
        reg:
          maxItems: 2
        reset-names:
          minItems: 3
        resets:
          minItems: 3
      required:
        - phys
        - phy-names
        - hvdd-supply
        - vddio-supply
        - avdd-supply

  - if:
      properties:
        compatible:
          contains:
            enum:
              - nvidia,tegra210-ahci
    then:
      properties:
        reg:
          minItems: 3
        reset-names:
          minItems: 3
        resets:
          minItems: 3

  - if:
      properties:
        compatible:
          contains:
            enum:
              - nvidia,tegra186-ahci
    then:
      properties:
        reg:
          minItems: 3
        reset-names:
          maxItems: 2
        resets:
          maxItems: 2
      required:
        - iommus
        - interconnect-names
        - interconnects
        - power-domains

additionalProperties: true

examples:
  - |
    #include <dt-bindings/clock/tegra210-car.h>
    #include <dt-bindings/reset/tegra210-car.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>

    sata@70020000 {
            compatible = "nvidia,tegra210-ahci";
            reg = <0x70027000 0x00002000>, /* AHCI */
                  <0x70020000 0x00007000>, /* SATA */
                  <0x70001100 0x00010000>; /* SATA AUX */
            interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
            clocks = <&tegra_car TEGRA210_CLK_SATA>,
                     <&tegra_car TEGRA210_CLK_SATA_OOB>;
            clock-names = "sata", "sata-oob";
            resets = <&tegra_car 124>,
                     <&tegra_car 129>,
                     <&tegra_car 123>;
            reset-names = "sata", "sata-cold", "sata-oob";
    };
+0 −44
Original line number Diff line number Diff line
Tegra SoC SATA AHCI controller

Required properties :
- compatible : Must be one of:
  - Tegra124 : "nvidia,tegra124-ahci"
  - Tegra132 : "nvidia,tegra132-ahci", "nvidia,tegra124-ahci"
  - Tegra210 : "nvidia,tegra210-ahci"
- reg : Should contain 2 entries:
  - AHCI register set (SATA BAR5)
  - SATA register set
- interrupts : Defines the interrupt used by SATA
- clocks : Must contain an entry for each entry in clock-names.
  See ../clocks/clock-bindings.txt for details.
- clock-names : Must include the following entries:
  - sata
  - sata-oob
- resets : Must contain an entry for each entry in reset-names.
  See ../reset/reset.txt for details.
- reset-names : Must include the following entries:
  - sata
  - sata-oob
  - sata-cold
- phys : Must contain an entry for each entry in phy-names.
  See ../phy/phy-bindings.txt for details.
- phy-names : Must include the following entries:
  - For Tegra124 and Tegra132:
    - sata-phy : XUSB PADCTL SATA PHY
- For Tegra124 and Tegra132:
  - hvdd-supply : Defines the SATA HVDD regulator
  - vddio-supply : Defines the SATA VDDIO regulator
  - avdd-supply : Defines the SATA AVDD regulator
  - target-5v-supply : Defines the SATA 5V power regulator
  - target-12v-supply : Defines the SATA 12V power regulator

Optional properties:
- reg :
  - AUX register set
- clock-names :
  - cml1 :
    cml1 clock should be defined here if the PHY driver
    doesn't manage them. If it does, they should not be.
- phy-names :
  - For T210:
    - sata-phy
+5 −0
Original line number Diff line number Diff line
@@ -1772,6 +1772,11 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
		hpriv->flags |= AHCI_HFLAG_NO_DEVSLP;

#ifdef CONFIG_ARM64
	if (pdev->vendor == PCI_VENDOR_ID_HUAWEI &&
	    pdev->device == 0xa235 &&
	    pdev->revision < 0x30)
		hpriv->flags |= AHCI_HFLAG_NO_SXS;

	if (pdev->vendor == 0x177d && pdev->device == 0xa01c)
		hpriv->irq_handler = ahci_thunderx_irq_handler;
#endif
Loading