From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sergei Shtylyov Date: Fri, 10 Oct 2014 10:04:34 +0000 Subject: Re: [PATCH] ata: sata_rcar: Add DIPM mode disabling workaround Message-Id: <5437AF32.1080606@cogentembedded.com> List-Id: References: <1412930703-24976-1-git-send-email-ykaneko0929@gmail.com> In-Reply-To: <1412930703-24976-1-git-send-email-ykaneko0929@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Yoshihiro Kaneko , linux-ide@vger.kernel.org Cc: Tejun Heo , Simon Horman , Magnus Damm , linux-sh@vger.kernel.org Hello. On 10/10/2014 12:45 PM, Yoshihiro Kaneko wrote: > From: Koji Matsuoka > This workaround must be applied to R8A7790(H2) ES1 > Signed-off-by: Koji Matsuoka > Signed-off-by: Yoshihiro Kaneko > --- > This patch is against for-next branch of Tejun's libata repo. > drivers/ata/sata_rcar.c | 25 +++++++++++++++++++++++-- > 1 file changed, 23 insertions(+), 2 deletions(-) > > diff --git a/drivers/ata/sata_rcar.c b/drivers/ata/sata_rcar.c > index 61eb6d7..0ba5974 100644 > --- a/drivers/ata/sata_rcar.c > +++ b/drivers/ata/sata_rcar.c > @@ -143,6 +143,11 @@ > #define RCAR_GEN2_PHY_CTL5_DC BIT(1) /* DC connection */ > #define RCAR_GEN2_PHY_CTL5_TR BIT(2) /* Termination Resistor */ > > +/* Product Register */ > +#define PRODUCT_REGISTER 0xFF000044 > +#define PRODUCT_CUT_MASK 0x00007FF0 > +#define PRODUCT_H2_BIT (0x45 << 8) Why _BIT? And why not 0x00004500? > @@ -751,18 +756,30 @@ done: > return IRQ_RETVAL(handled); > } > > -static void sata_rcar_setup_port(struct ata_host *host) > +static int sata_rcar_setup_port(struct ata_host *host) > { > struct ata_port *ap = host->ports[0]; > struct ata_ioports *ioaddr = &ap->ioaddr; > struct sata_rcar_priv *priv = host->private_data; > void __iomem *base = priv->base; > + void __iomem *product_reg; > > ap->ops = &sata_rcar_port_ops; > ap->pio_mask = ATA_PIO4; > ap->udma_mask = ATA_UDMA6; > ap->flags |= ATA_FLAG_SATA; > > + product_reg = ioremap_nocache(PRODUCT_REGISTER, 0x04); Don't we need some platform function to read that register instead? It's not specific to SATA, AFAICT. > + if (!product_reg) { > + dev_warn(host->dev, "ioremap fail\n"); s/fail/failed/. > + return -ENOMEM; > + } > + /* Add the workaround of DIPM mode disabling in R-Car H2 ES1.x.*/ Please add space before */ [...] WBR, Sergei