X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=drivers%2Fata%2Flibahci.c;h=4665512dae44d99e9a5af194812094498d5888cf;hb=b06f3a168cdcd80026276898fd1fee443ef25743;hp=096064cd6c52b1b0f72bf710d1a56893bd6bff9c;hpb=f41683a204ea61568f0fd0804d47c19561f2ee39;p=karo-tx-linux.git diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c index 096064cd6c52..4665512dae44 100644 --- a/drivers/ata/libahci.c +++ b/drivers/ata/libahci.c @@ -1273,6 +1273,15 @@ static int ahci_exec_polled_cmd(struct ata_port *ap, int pmp, ata_tf_to_fis(tf, pmp, is_cmd, fis); ahci_fill_cmd_slot(pp, 0, cmd_fis_len | flags | (pmp << 12)); + /* set port value for softreset of Port Multiplier */ + if (pp->fbs_enabled && pp->fbs_last_dev != pmp) { + tmp = readl(port_mmio + PORT_FBS); + tmp &= ~(PORT_FBS_DEV_MASK | PORT_FBS_DEC); + tmp |= pmp << PORT_FBS_DEV_OFFSET; + writel(tmp, port_mmio + PORT_FBS); + pp->fbs_last_dev = pmp; + } + /* issue & wait */ writel(1, port_mmio + PORT_CMD_ISSUE);