On Oct 27, 2015, at 5:17 PM, Rob Herring <robh+dt@xxxxxxxxxx> wrote: > > On Tue, Oct 27, 2015 at 1:48 AM, Jaedon Shin <jaedon.shin@xxxxxxxxx> wrote: >> Add quick for broken phy. The ARM-based 28nm chipsets have four phy > > I believe you mean "quirk". > Oops! All the "quick" of patches should be changed to a "quirk". Thanks. >> interface control registers and each port has two registers. But, The > > registers, but the... > >> MIPS-based 40nm chipsets have three. and there are no information and > > s/and there/There/ > >> documentation. The legacy version of broadcom's strict-ahci based >> initial code did not control these registers. >> >> Signed-off-by: Jaedon Shin <jaedon.shin@xxxxxxxxx> >> --- >> Documentation/devicetree/bindings/ata/brcm,sata-brcmstb.txt | 1 + > > Other than the commit message: > > Acked-by: Rob Herring <robh@xxxxxxxxxx> > >> drivers/ata/ahci_brcmstb.c | 10 ++++++++++ >> 2 files changed, 11 insertions(+) >> >> diff --git a/Documentation/devicetree/bindings/ata/brcm,sata-brcmstb.txt b/Documentation/devicetree/bindings/ata/brcm,sata-brcmstb.txt >> index 488a383ce202..0f0925d58188 100644 >> --- a/Documentation/devicetree/bindings/ata/brcm,sata-brcmstb.txt >> +++ b/Documentation/devicetree/bindings/ata/brcm,sata-brcmstb.txt >> @@ -12,6 +12,7 @@ Required properties: >> >> Optional properties: >> - brcm,broken-ncq : if present, NCQ is unusable >> +- brcm,broken-phy : if present, to control phy interface is unusable >> >> Also see ahci-platform.txt. >> >> diff --git a/drivers/ata/ahci_brcmstb.c b/drivers/ata/ahci_brcmstb.c >> index e53962cb48ee..c61303f7c7dc 100644 >> --- a/drivers/ata/ahci_brcmstb.c >> +++ b/drivers/ata/ahci_brcmstb.c >> @@ -71,6 +71,7 @@ >> >> enum brcm_ahci_quicks { >> BRCM_AHCI_QUICK_NONCQ = BIT(0), >> + BRCM_AHCI_QUICK_NOPHY = BIT(1), >> }; >> >> struct brcm_ahci_priv { >> @@ -119,6 +120,9 @@ static void brcm_sata_phy_enable(struct brcm_ahci_priv *priv, int port) >> void __iomem *p; >> u32 reg; >> >> + if (priv->quicks & BRCM_AHCI_QUICK_NOPHY) >> + return; >> + >> /* clear PHY_DEFAULT_POWER_STATE */ >> p = phyctrl + SATA_TOP_CTRL_PHY_CTRL_1; >> reg = brcm_sata_readreg(p); >> @@ -148,6 +152,9 @@ static void brcm_sata_phy_disable(struct brcm_ahci_priv *priv, int port) >> void __iomem *p; >> u32 reg; >> >> + if (priv->quicks & BRCM_AHCI_QUICK_NOPHY) >> + return; >> + >> /* power-off the PHY digital logic */ >> p = phyctrl + SATA_TOP_CTRL_PHY_CTRL_2; >> reg = brcm_sata_readreg(p); >> @@ -297,6 +304,9 @@ static int brcm_ahci_probe(struct platform_device *pdev) >> if (of_property_read_bool(dev->of_node, "brcm,broken-ncq")) >> priv->quicks |= BRCM_AHCI_QUICK_NONCQ; >> >> + if (of_property_read_bool(dev->of_node, "brcm,broken-phy")) >> + priv->quicks |= BRCM_AHCI_QUICK_NOPHY; >> + >> brcm_sata_init(priv); >> brcm_sata_quick(pdev, priv); >> >> -- >> 2.6.2 >> -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html