Skip to contentSkip to conversation

sata_dwc_460ex driver

DISCUSSION Mason 3 participants 7 messages May 27, 2016 1 message not in the archive libata

lore
Share & tools
lore

Mason

author
#0 lore raw

Hello everyone,

I'm working on a SoC which embeds an IP block from Synopsys labeled Synopsys DesignWare Cores Serial ATA AHCI Core, aka DWC_ahsata (DWC SATA AHCI Host 6Gb/s AXI Interface).

Would the sata_dwc_460ex driver support this DWC_ahsata hardware?

I suppose I would also need to enable AHCI support, right?

What is the difference between SATA_AHCI and SATA_AHCI_PLATFORM ?

SATA_AHCI = 971db06e09231
SATA_AHCI_PLATFORM = 1c2a49f61785e

If I understand correctly, SATA_AHCI is for platforms with a PCI bus, while SATA_AHCI_PLATFORM is for other platforms. I probably want the latter then?

On the analog side, the SATA PHY is also made by Synopsys. Do I need to enable a specific driver?
I didn't see anything relevant in drivers/phy

(The documentation mentions 11 registers for tweaking the controller, but maybe it's the boot-loader's job to set this up correctly?)

Regards.

#1 lore raw
Quoted 19 lines · Mason

Hello everyone,

I'm working on a SoC which embeds an IP block from Synopsys labeled Synopsys DesignWare Cores Serial ATA AHCI Core, aka DWC_ahsata (DWC SATA AHCI Host 6Gb/s AXI Interface).

Would the sata_dwc_460ex driver support this DWC_ahsata hardware?

I suppose I would also need to enable AHCI support, right?

What is the difference between SATA_AHCI and SATA_AHCI_PLATFORM ?

SATA_AHCI = 971db06e09231
SATA_AHCI_PLATFORM = 1c2a49f61785e

If I understand correctly, SATA_AHCI is for platforms with a PCI bus, while SATA_AHCI_PLATFORM is for other platforms. I probably want the latter then?

Quoted 6 lines

On the analog side, the SATA PHY is also made by Synopsys. Do I need to enable a specific driver?
I didn't see anything relevant in drivers/phy

(The documentation mentions 11 registers for tweaking the controller, but maybe it's the boot-loader's job to set this up correctly?)

The sata_dwc_460ex driver can be made to work with the tango3/4 chips. You need a dmaengine driver (I've written one for tango3, needs slight tweaking for tango4) and some additions to the SATA driver to handle the DMA glue logic (I have unpublished code for this as well). There are a bunch of fixes for the SATA driver currently in linux-next, and I was planning to take another look at supporting tango3/4 once these hit mainline (4.7-rc1 most likely).

A driver for the PHY is probably a good idea, even if the boot loader does some configuration, since this allows it to be powered down when not in use.

Signature · 1 line
Måns Rullgård
author
#2 lore raw
Quoted 19 lines · Måns Rullgård
Quoted 17 lines · Mason

I'm working on a SoC which embeds an IP block from Synopsys labeled Synopsys DesignWare Cores Serial ATA AHCI Core, aka DWC_ahsata (DWC SATA AHCI Host 6Gb/s AXI Interface).

Would the sata_dwc_460ex driver support this DWC_ahsata hardware?

I suppose I would also need to enable AHCI support, right?

What is the difference between SATA_AHCI and SATA_AHCI_PLATFORM ?

SATA_AHCI = 971db06e09231
SATA_AHCI_PLATFORM = 1c2a49f61785e

If I understand correctly, SATA_AHCI is for platforms with a PCI bus, while SATA_AHCI_PLATFORM is for other platforms. I probably want the latter then?

Quoted 8 lines
Quoted 6 lines

On the analog side, the SATA PHY is also made by Synopsys. Do I need to enable a specific driver?
I didn't see anything relevant in drivers/phy

(The documentation mentions 11 registers for tweaking the controller, but maybe it's the boot-loader's job to set this up correctly?)

The sata_dwc_460ex driver can be made to work with the tango3/4 chips.

I'm talking about tango5. It's not the same controller as tango3/4. (They use different Synopsys DesignWare controllers.)

Quoted 6 lines

You need a dmaengine driver (I've written one for tango3, needs slight tweaking for tango4) and some additions to the SATA driver to handle the DMA glue logic (I have unpublished code for this as well). There are a bunch of fixes for the SATA driver currently in linux-next, and I was planning to take another look at supporting tango3/4 once these hit mainline (4.7-rc1 most likely).

FWIW, it seems like tango4 is low-priority internally ATM.

Quoted 3 lines

A driver for the PHY is probably a good idea, even if the boot loader does some configuration, since this allows it to be powered down when not in use.

How come there are so few phy drivers in drivers/phy if most devices would typically require one?

Regards.

author
#7 lore raw
In reply to a message not in the archive
Quoted 4 lines · Christian Lamparter

As far as I know, the ahci dwc core can be supported via the libahci of.
The binding is already present.
See http://lxr.free-electrons.com/source/Documentation/devicetree/bindings/ata/ahci-platform.txt
(snps,dwc-ahci). The SATA_dwc_460ex is not necessary in this case.

Hello Christian,

Thanks for the information.

By the way, I see no difference between using "snps,dwc-ahci" and "generic-ahci" compatible strings, correct?

Note: I've added linux-ide back to the mix ;-)

Regards.

#3 lore raw
In reply to Mason
Quoted 40 lines · Mason
Quoted 19 lines · Måns Rullgård
Quoted 17 lines · Mason

I'm working on a SoC which embeds an IP block from Synopsys labeled Synopsys DesignWare Cores Serial ATA AHCI Core, aka DWC_ahsata (DWC SATA AHCI Host 6Gb/s AXI Interface).

Would the sata_dwc_460ex driver support this DWC_ahsata hardware?

I suppose I would also need to enable AHCI support, right?

What is the difference between SATA_AHCI and SATA_AHCI_PLATFORM ?

SATA_AHCI = 971db06e09231
SATA_AHCI_PLATFORM = 1c2a49f61785e

If I understand correctly, SATA_AHCI is for platforms with a PCI bus, while SATA_AHCI_PLATFORM is for other platforms. I probably want the latter then?

Quoted 8 lines
Quoted 6 lines

On the analog side, the SATA PHY is also made by Synopsys. Do I need to enable a specific driver?
I didn't see anything relevant in drivers/phy

(The documentation mentions 11 registers for tweaking the controller, but maybe it's the boot-loader's job to set this up correctly?)

The sata_dwc_460ex driver can be made to work with the tango3/4 chips.

I'm talking about tango5. It's not the same controller as tango3/4. (They use different Synopsys DesignWare controllers.)

Quoted 6 lines

You need a dmaengine driver (I've written one for tango3, needs slight tweaking for tango4) and some additions to the SATA driver to handle the DMA glue logic (I have unpublished code for this as well). There are a bunch of fixes for the SATA driver currently in linux-next, and I was planning to take another look at supporting tango3/4 once these hit mainline (4.7-rc1 most likely).

Quoted 8 lines

FWIW, it seems like tango4 is low-priority internally ATM.

Quoted 3 lines

A driver for the PHY is probably a good idea, even if the boot loader does some configuration, since this allows it to be powered down when not in use.

How come there are so few phy drivers in drivers/phy if most devices would typically require one?

Short answer is that the generic phy framework is fairly recent (~3 years old). A lot of phys are stuck off in other places like drivers/usb/phy. At least that's my take on it.

Regards,

Andy Gross

author
#4 lore raw
Quoted 8 lines · Andy Gross
Quoted 2 lines · Mason

How come there are so few phy drivers in drivers/phy if most devices would typically require one?

Short answer is that the generic phy framework is fairly recent (~3 years old). A lot of phys are stuck off in other places like drivers/usb/phy. At least that's my take on it.

<confused> Where did the SATA phy drivers use to live?

$ find -name phy
./drivers/usb/phy
./drivers/phy
./drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy
./drivers/net/phy
./drivers/gpu/drm/msm/dsi/phy
./include/linux/phy
./include/dt-bindings/phy
./Documentation/devicetree/bindings/phy
./Documentation/phy

drivers/ata/ahci.h mentions SATA phy registers.
Is AHCI standardized to the point that platform-specific PHYs are not required?

Regards.

#5 lore raw
Quoted 24 lines · Mason
Quoted 8 lines · Andy Gross
Quoted 2 lines · Mason

How come there are so few phy drivers in drivers/phy if most devices would typically require one?

Short answer is that the generic phy framework is fairly recent (~3 years old). A lot of phys are stuck off in other places like drivers/usb/phy. At least that's my take on it.

<confused> Where did the SATA phy drivers use to live?

$ find -name phy
./drivers/usb/phy
./drivers/phy
./drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy
./drivers/net/phy
./drivers/gpu/drm/msm/dsi/phy
./include/linux/phy
./include/dt-bindings/phy
./Documentation/devicetree/bindings/phy
./Documentation/phy
Quoted 3 lines

drivers/ata/ahci.h mentions SATA phy registers.
Is AHCI standardized to the point that platform-specific PHYs are not required?

A lot of hardware, especially older, doesn't need PHY drivers since the PHY either has no settings or is configured by platform firmware. In some other cases, the PHY is tightly coupled to the SATA/USB/whatever controller and handled directly by its driver.

Signature · 1 line
Måns Rullgård