aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-04-30 19:13:36 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-04-30 19:13:36 -0400
commit50528fabeb25f9883e2845f5147f5e00a1c57cf7 (patch)
treee64da7ca92df33ec2b3f8d0aab1f7e4c38d8626c /drivers/ata
parent3ed1c478eff8db80e234d5446cb378b503135888 (diff)
parent2cc1144a31f76d4a9fb48bec5d6ba1359f980813 (diff)
Merge tag 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev
Pull libata update from Jeff Garzik: - More ACPI fixes, cleanups - Minor cleanups for sata_highbank, pata_at32, pata_octeon_cf, sata_rcar - pata_legacy: small bug found in opti chipset code (untested fix, due to ancient h/w) - sata_fsl: RX water mark config knob, some h/w needs it - pata_imx: cleanups, DeviceTree support - SCSI<->ATA translator: properly export translator version, not device firmware version * tag 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev: sata_highbank: Rename proc_name to the module name ACPI/libata: Restore libata.noacpi support [libata] acpi: make ata_ap_acpi_handle not block [libata] SCSI: really use SATL version in VPD pata_imx: add devicetree support pata_imx: use void __iomem * for regs pata_imx: cleanup error path pata_imx: Use devm_clk_get sata_rcar: Convert to devm_ioremap_resource() fsl/sata: create a sysfs entry for rx water mark libata-acpi: remove redundent code for power resource handling sata_highbank: make ahci_highbank_pm_ops static pata_octeon_cf: Use resource_size function pata_legacy: bogus clock in opti82c46x_set_piomode() pata_at32: use module_platform_driver_probe()
Diffstat (limited to 'drivers/ata')
-rw-r--r--drivers/ata/libata-acpi.c82
-rw-r--r--drivers/ata/libata-scsi.c7
-rw-r--r--drivers/ata/pata_at32.c13
-rw-r--r--drivers/ata/pata_imx.c36
-rw-r--r--drivers/ata/pata_legacy.c2
-rw-r--r--drivers/ata/pata_octeon_cf.c2
-rw-r--r--drivers/ata/sata_fsl.c55
-rw-r--r--drivers/ata/sata_highbank.c4
-rw-r--r--drivers/ata/sata_rcar.c7
9 files changed, 123 insertions, 85 deletions
diff --git a/drivers/ata/libata-acpi.c b/drivers/ata/libata-acpi.c
index 8a52dab412e2..87f2f395d79a 100644
--- a/drivers/ata/libata-acpi.c
+++ b/drivers/ata/libata-acpi.c
@@ -17,7 +17,6 @@
17#include <linux/pci.h> 17#include <linux/pci.h>
18#include <linux/slab.h> 18#include <linux/slab.h>
19#include <linux/pm_runtime.h> 19#include <linux/pm_runtime.h>
20#include <linux/pm_qos.h>
21#include <scsi/scsi_device.h> 20#include <scsi/scsi_device.h>
22#include "libata.h" 21#include "libata.h"
23 22
@@ -61,7 +60,8 @@ acpi_handle ata_ap_acpi_handle(struct ata_port *ap)
61 if (ap->flags & ATA_FLAG_ACPI_SATA) 60 if (ap->flags & ATA_FLAG_ACPI_SATA)
62 return NULL; 61 return NULL;
63 62
64 return acpi_get_child(DEVICE_ACPI_HANDLE(ap->host->dev), ap->port_no); 63 return ap->scsi_host ?
64 DEVICE_ACPI_HANDLE(&ap->scsi_host->shost_gendev) : NULL;
65} 65}
66EXPORT_SYMBOL(ata_ap_acpi_handle); 66EXPORT_SYMBOL(ata_ap_acpi_handle);
67 67
@@ -77,7 +77,7 @@ acpi_handle ata_dev_acpi_handle(struct ata_device *dev)
77 acpi_integer adr; 77 acpi_integer adr;
78 struct ata_port *ap = dev->link->ap; 78 struct ata_port *ap = dev->link->ap;
79 79
80 if (dev->flags & ATA_DFLAG_ACPI_DISABLED) 80 if (libata_noacpi || dev->flags & ATA_DFLAG_ACPI_DISABLED)
81 return NULL; 81 return NULL;
82 82
83 if (ap->flags & ATA_FLAG_ACPI_SATA) { 83 if (ap->flags & ATA_FLAG_ACPI_SATA) {
@@ -240,28 +240,15 @@ void ata_acpi_dissociate(struct ata_host *host)
240 } 240 }
241} 241}
242 242
243/** 243static int __ata_acpi_gtm(struct ata_port *ap, acpi_handle handle,
244 * ata_acpi_gtm - execute _GTM 244 struct ata_acpi_gtm *gtm)
245 * @ap: target ATA port
246 * @gtm: out parameter for _GTM result
247 *
248 * Evaluate _GTM and store the result in @gtm.
249 *
250 * LOCKING:
251 * EH context.
252 *
253 * RETURNS:
254 * 0 on success, -ENOENT if _GTM doesn't exist, -errno on failure.
255 */
256int ata_acpi_gtm(struct ata_port *ap, struct ata_acpi_gtm *gtm)
257{ 245{
258 struct acpi_buffer output = { .length = ACPI_ALLOCATE_BUFFER }; 246 struct acpi_buffer output = { .length = ACPI_ALLOCATE_BUFFER };
259 union acpi_object *out_obj; 247 union acpi_object *out_obj;
260 acpi_status status; 248 acpi_status status;
261 int rc = 0; 249 int rc = 0;
262 250
263 status = acpi_evaluate_object(ata_ap_acpi_handle(ap), "_GTM", NULL, 251 status = acpi_evaluate_object(handle, "_GTM", NULL, &output);
264 &output);
265 252
266 rc = -ENOENT; 253 rc = -ENOENT;
267 if (status == AE_NOT_FOUND) 254 if (status == AE_NOT_FOUND)
@@ -295,6 +282,27 @@ int ata_acpi_gtm(struct ata_port *ap, struct ata_acpi_gtm *gtm)
295 return rc; 282 return rc;
296} 283}
297 284
285/**
286 * ata_acpi_gtm - execute _GTM
287 * @ap: target ATA port
288 * @gtm: out parameter for _GTM result
289 *
290 * Evaluate _GTM and store the result in @gtm.
291 *
292 * LOCKING:
293 * EH context.
294 *
295 * RETURNS:
296 * 0 on success, -ENOENT if _GTM doesn't exist, -errno on failure.
297 */
298int ata_acpi_gtm(struct ata_port *ap, struct ata_acpi_gtm *gtm)
299{
300 if (ata_ap_acpi_handle(ap))
301 return __ata_acpi_gtm(ap, ata_ap_acpi_handle(ap), gtm);
302 else
303 return -EINVAL;
304}
305
298EXPORT_SYMBOL_GPL(ata_acpi_gtm); 306EXPORT_SYMBOL_GPL(ata_acpi_gtm);
299 307
300/** 308/**
@@ -1020,38 +1028,6 @@ void ata_acpi_on_disable(struct ata_device *dev)
1020 ata_acpi_clear_gtf(dev); 1028 ata_acpi_clear_gtf(dev);
1021} 1029}
1022 1030
1023static void ata_acpi_register_power_resource(struct ata_device *dev)
1024{
1025 struct scsi_device *sdev = dev->sdev;
1026 acpi_handle handle;
1027
1028 handle = ata_dev_acpi_handle(dev);
1029 if (handle)
1030 acpi_dev_pm_add_dependent(handle, &sdev->sdev_gendev);
1031}
1032
1033static void ata_acpi_unregister_power_resource(struct ata_device *dev)
1034{
1035 struct scsi_device *sdev = dev->sdev;
1036 acpi_handle handle;
1037
1038 handle = ata_dev_acpi_handle(dev);
1039 if (handle)
1040 acpi_dev_pm_remove_dependent(handle, &sdev->sdev_gendev);
1041}
1042
1043void ata_acpi_bind(struct ata_device *dev)
1044{
1045 ata_acpi_register_power_resource(dev);
1046 if (zpodd_dev_enabled(dev))
1047 dev_pm_qos_expose_flags(&dev->sdev->sdev_gendev, 0);
1048}
1049
1050void ata_acpi_unbind(struct ata_device *dev)
1051{
1052 ata_acpi_unregister_power_resource(dev);
1053}
1054
1055static int compat_pci_ata(struct ata_port *ap) 1031static int compat_pci_ata(struct ata_port *ap)
1056{ 1032{
1057 struct device *dev = ap->tdev.parent; 1033 struct device *dev = ap->tdev.parent;
@@ -1071,7 +1047,7 @@ static int compat_pci_ata(struct ata_port *ap)
1071 1047
1072static int ata_acpi_bind_host(struct ata_port *ap, acpi_handle *handle) 1048static int ata_acpi_bind_host(struct ata_port *ap, acpi_handle *handle)
1073{ 1049{
1074 if (ap->flags & ATA_FLAG_ACPI_SATA) 1050 if (libata_noacpi || ap->flags & ATA_FLAG_ACPI_SATA)
1075 return -ENODEV; 1051 return -ENODEV;
1076 1052
1077 *handle = acpi_get_child(DEVICE_ACPI_HANDLE(ap->tdev.parent), 1053 *handle = acpi_get_child(DEVICE_ACPI_HANDLE(ap->tdev.parent),
@@ -1080,7 +1056,7 @@ static int ata_acpi_bind_host(struct ata_port *ap, acpi_handle *handle)
1080 if (!*handle) 1056 if (!*handle)
1081 return -ENODEV; 1057 return -ENODEV;
1082 1058
1083 if (ata_acpi_gtm(ap, &ap->__acpi_init_gtm) == 0) 1059 if (__ata_acpi_gtm(ap, *handle, &ap->__acpi_init_gtm) == 0)
1084 ap->pflags |= ATA_PFLAG_INIT_GTM_VALID; 1060 ap->pflags |= ATA_PFLAG_INIT_GTM_VALID;
1085 1061
1086 return 0; 1062 return 0;
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
index ff44787e5a45..dd310b27b24c 100644
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
@@ -49,6 +49,7 @@
49#include <linux/hdreg.h> 49#include <linux/hdreg.h>
50#include <linux/uaccess.h> 50#include <linux/uaccess.h>
51#include <linux/suspend.h> 51#include <linux/suspend.h>
52#include <linux/pm_qos.h>
52#include <asm/unaligned.h> 53#include <asm/unaligned.h>
53 54
54#include "libata.h" 55#include "libata.h"
@@ -2126,7 +2127,6 @@ static unsigned int ata_scsiop_inq_89(struct ata_scsi_args *args, u8 *rbuf)
2126 memcpy(&rbuf[8], "linux ", 8); 2127 memcpy(&rbuf[8], "linux ", 8);
2127 memcpy(&rbuf[16], "libata ", 16); 2128 memcpy(&rbuf[16], "libata ", 16);
2128 memcpy(&rbuf[32], DRV_VERSION, 4); 2129 memcpy(&rbuf[32], DRV_VERSION, 4);
2129 ata_id_string(args->id, &rbuf[32], ATA_ID_FW_REV, 4);
2130 2130
2131 /* we don't store the ATA device signature, so we fake it */ 2131 /* we don't store the ATA device signature, so we fake it */
2132 2132
@@ -3668,7 +3668,9 @@ void ata_scsi_scan_host(struct ata_port *ap, int sync)
3668 if (!IS_ERR(sdev)) { 3668 if (!IS_ERR(sdev)) {
3669 dev->sdev = sdev; 3669 dev->sdev = sdev;
3670 scsi_device_put(sdev); 3670 scsi_device_put(sdev);
3671 ata_acpi_bind(dev); 3671 if (zpodd_dev_enabled(dev))
3672 dev_pm_qos_expose_flags(
3673 &sdev->sdev_gendev, 0);
3672 } else { 3674 } else {
3673 dev->sdev = NULL; 3675 dev->sdev = NULL;
3674 } 3676 }
@@ -3767,7 +3769,6 @@ static void ata_scsi_remove_dev(struct ata_device *dev)
3767 3769
3768 if (zpodd_dev_enabled(dev)) 3770 if (zpodd_dev_enabled(dev))
3769 zpodd_exit(dev); 3771 zpodd_exit(dev);
3770 ata_acpi_unbind(dev);
3771 3772
3772 /* clearing dev->sdev is protected by host lock */ 3773 /* clearing dev->sdev is protected by host lock */
3773 sdev = dev->sdev; 3774 sdev = dev->sdev;
diff --git a/drivers/ata/pata_at32.c b/drivers/ata/pata_at32.c
index 36f189c7ee8c..8d493b4a0961 100644
--- a/drivers/ata/pata_at32.c
+++ b/drivers/ata/pata_at32.c
@@ -393,18 +393,7 @@ static struct platform_driver pata_at32_driver = {
393 }, 393 },
394}; 394};
395 395
396static int __init pata_at32_init(void) 396module_platform_driver_probe(pata_at32_driver, pata_at32_probe);
397{
398 return platform_driver_probe(&pata_at32_driver, pata_at32_probe);
399}
400
401static void __exit pata_at32_exit(void)
402{
403 platform_driver_unregister(&pata_at32_driver);
404}
405
406module_init(pata_at32_init);
407module_exit(pata_at32_exit);
408 397
409MODULE_LICENSE("GPL"); 398MODULE_LICENSE("GPL");
410MODULE_DESCRIPTION("AVR32 SMC/CFC PATA Driver"); 399MODULE_DESCRIPTION("AVR32 SMC/CFC PATA Driver");
diff --git a/drivers/ata/pata_imx.c b/drivers/ata/pata_imx.c
index 40849445a9dc..aa3d166e02eb 100644
--- a/drivers/ata/pata_imx.c
+++ b/drivers/ata/pata_imx.c
@@ -37,7 +37,7 @@
37struct pata_imx_priv { 37struct pata_imx_priv {
38 struct clk *clk; 38 struct clk *clk;
39 /* timings/interrupt/control regs */ 39 /* timings/interrupt/control regs */
40 u8 *host_regs; 40 void __iomem *host_regs;
41 u32 ata_ctl; 41 u32 ata_ctl;
42}; 42};
43 43
@@ -98,6 +98,7 @@ static int pata_imx_probe(struct platform_device *pdev)
98 struct pata_imx_priv *priv; 98 struct pata_imx_priv *priv;
99 int irq = 0; 99 int irq = 0;
100 struct resource *io_res; 100 struct resource *io_res;
101 int ret;
101 102
102 io_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 103 io_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
103 if (io_res == NULL) 104 if (io_res == NULL)
@@ -112,7 +113,7 @@ static int pata_imx_probe(struct platform_device *pdev)
112 if (!priv) 113 if (!priv)
113 return -ENOMEM; 114 return -ENOMEM;
114 115
115 priv->clk = clk_get(&pdev->dev, NULL); 116 priv->clk = devm_clk_get(&pdev->dev, NULL);
116 if (IS_ERR(priv->clk)) { 117 if (IS_ERR(priv->clk)) {
117 dev_err(&pdev->dev, "Failed to get clock\n"); 118 dev_err(&pdev->dev, "Failed to get clock\n");
118 return PTR_ERR(priv->clk); 119 return PTR_ERR(priv->clk);
@@ -121,8 +122,10 @@ static int pata_imx_probe(struct platform_device *pdev)
121 clk_prepare_enable(priv->clk); 122 clk_prepare_enable(priv->clk);
122 123
123 host = ata_host_alloc(&pdev->dev, 1); 124 host = ata_host_alloc(&pdev->dev, 1);
124 if (!host) 125 if (!host) {
125 goto free_priv; 126 ret = -ENOMEM;
127 goto err;
128 }
126 129
127 host->private_data = priv; 130 host->private_data = priv;
128 ap = host->ports[0]; 131 ap = host->ports[0];
@@ -135,7 +138,8 @@ static int pata_imx_probe(struct platform_device *pdev)
135 resource_size(io_res)); 138 resource_size(io_res));
136 if (!priv->host_regs) { 139 if (!priv->host_regs) {
137 dev_err(&pdev->dev, "failed to map IO/CTL base\n"); 140 dev_err(&pdev->dev, "failed to map IO/CTL base\n");
138 goto free_priv; 141 ret = -EBUSY;
142 goto err;
139 } 143 }
140 144
141 ap->ioaddr.cmd_addr = priv->host_regs + PATA_IMX_DRIVE_DATA; 145 ap->ioaddr.cmd_addr = priv->host_regs + PATA_IMX_DRIVE_DATA;
@@ -158,13 +162,17 @@ static int pata_imx_probe(struct platform_device *pdev)
158 priv->host_regs + PATA_IMX_ATA_INT_EN); 162 priv->host_regs + PATA_IMX_ATA_INT_EN);
159 163
160 /* activate */ 164 /* activate */
161 return ata_host_activate(host, irq, ata_sff_interrupt, 0, 165 ret = ata_host_activate(host, irq, ata_sff_interrupt, 0,
162 &pata_imx_sht); 166 &pata_imx_sht);
163 167
164free_priv: 168 if (ret)
169 goto err;
170
171 return 0;
172err:
165 clk_disable_unprepare(priv->clk); 173 clk_disable_unprepare(priv->clk);
166 clk_put(priv->clk); 174
167 return -ENOMEM; 175 return ret;
168} 176}
169 177
170static int pata_imx_remove(struct platform_device *pdev) 178static int pata_imx_remove(struct platform_device *pdev)
@@ -177,7 +185,6 @@ static int pata_imx_remove(struct platform_device *pdev)
177 __raw_writel(0, priv->host_regs + PATA_IMX_ATA_INT_EN); 185 __raw_writel(0, priv->host_regs + PATA_IMX_ATA_INT_EN);
178 186
179 clk_disable_unprepare(priv->clk); 187 clk_disable_unprepare(priv->clk);
180 clk_put(priv->clk);
181 188
182 return 0; 189 return 0;
183} 190}
@@ -223,11 +230,20 @@ static const struct dev_pm_ops pata_imx_pm_ops = {
223}; 230};
224#endif 231#endif
225 232
233static const struct of_device_id imx_pata_dt_ids[] = {
234 {
235 .compatible = "fsl,imx27-pata",
236 }, {
237 /* sentinel */
238 }
239};
240
226static struct platform_driver pata_imx_driver = { 241static struct platform_driver pata_imx_driver = {
227 .probe = pata_imx_probe, 242 .probe = pata_imx_probe,
228 .remove = pata_imx_remove, 243 .remove = pata_imx_remove,
229 .driver = { 244 .driver = {
230 .name = DRV_NAME, 245 .name = DRV_NAME,
246 .of_match_table = imx_pata_dt_ids,
231 .owner = THIS_MODULE, 247 .owner = THIS_MODULE,
232#ifdef CONFIG_PM 248#ifdef CONFIG_PM
233 .pm = &pata_imx_pm_ops, 249 .pm = &pata_imx_pm_ops,
diff --git a/drivers/ata/pata_legacy.c b/drivers/ata/pata_legacy.c
index 4fe9d2138d48..be816428b430 100644
--- a/drivers/ata/pata_legacy.c
+++ b/drivers/ata/pata_legacy.c
@@ -542,7 +542,7 @@ static void opti82c46x_set_piomode(struct ata_port *ap, struct ata_device *adev)
542 u8 sysclk; 542 u8 sysclk;
543 543
544 /* Get the clock */ 544 /* Get the clock */
545 sysclk = opti_syscfg(0xAC) & 0xC0; /* BIOS set */ 545 sysclk = (opti_syscfg(0xAC) & 0xC0) >> 6; /* BIOS set */
546 546
547 /* Enter configuration mode */ 547 /* Enter configuration mode */
548 ioread16(ap->ioaddr.error_addr); 548 ioread16(ap->ioaddr.error_addr);
diff --git a/drivers/ata/pata_octeon_cf.c b/drivers/ata/pata_octeon_cf.c
index ff2e57f3b597..e73bef3093d2 100644
--- a/drivers/ata/pata_octeon_cf.c
+++ b/drivers/ata/pata_octeon_cf.c
@@ -926,7 +926,7 @@ static int octeon_cf_probe(struct platform_device *pdev)
926 goto free_cf_port; 926 goto free_cf_port;
927 } 927 }
928 cs1 = devm_ioremap_nocache(&pdev->dev, res_cs1->start, 928 cs1 = devm_ioremap_nocache(&pdev->dev, res_cs1->start,
929 res_cs1->end - res_cs1->start + 1); 929 resource_size(res_cs1));
930 930
931 if (!cs1) 931 if (!cs1)
932 goto free_cf_port; 932 goto free_cf_port;
diff --git a/drivers/ata/sata_fsl.c b/drivers/ata/sata_fsl.c
index dfc6fd0ac119..d40e403e82dd 100644
--- a/drivers/ata/sata_fsl.c
+++ b/drivers/ata/sata_fsl.c
@@ -285,6 +285,7 @@ struct sata_fsl_host_priv {
285 int irq; 285 int irq;
286 int data_snoop; 286 int data_snoop;
287 struct device_attribute intr_coalescing; 287 struct device_attribute intr_coalescing;
288 struct device_attribute rx_watermark;
288}; 289};
289 290
290static void fsl_sata_set_irq_coalescing(struct ata_host *host, 291static void fsl_sata_set_irq_coalescing(struct ata_host *host,
@@ -343,6 +344,48 @@ static ssize_t fsl_sata_intr_coalescing_store(struct device *dev,
343 return strlen(buf); 344 return strlen(buf);
344} 345}
345 346
347static ssize_t fsl_sata_rx_watermark_show(struct device *dev,
348 struct device_attribute *attr, char *buf)
349{
350 unsigned int rx_watermark;
351 unsigned long flags;
352 struct ata_host *host = dev_get_drvdata(dev);
353 struct sata_fsl_host_priv *host_priv = host->private_data;
354 void __iomem *csr_base = host_priv->csr_base;
355
356 spin_lock_irqsave(&host->lock, flags);
357 rx_watermark = ioread32(csr_base + TRANSCFG);
358 rx_watermark &= 0x1f;
359
360 spin_unlock_irqrestore(&host->lock, flags);
361 return sprintf(buf, "%d\n", rx_watermark);
362}
363
364static ssize_t fsl_sata_rx_watermark_store(struct device *dev,
365 struct device_attribute *attr,
366 const char *buf, size_t count)
367{
368 unsigned int rx_watermark;
369 unsigned long flags;
370 struct ata_host *host = dev_get_drvdata(dev);
371 struct sata_fsl_host_priv *host_priv = host->private_data;
372 void __iomem *csr_base = host_priv->csr_base;
373 u32 temp;
374
375 if (sscanf(buf, "%d", &rx_watermark) != 1) {
376 printk(KERN_ERR "fsl-sata: wrong parameter format.\n");
377 return -EINVAL;
378 }
379
380 spin_lock_irqsave(&host->lock, flags);
381 temp = ioread32(csr_base + TRANSCFG);
382 temp &= 0xffffffe0;
383 iowrite32(temp | rx_watermark, csr_base + TRANSCFG);
384
385 spin_unlock_irqrestore(&host->lock, flags);
386 return strlen(buf);
387}
388
346static inline unsigned int sata_fsl_tag(unsigned int tag, 389static inline unsigned int sata_fsl_tag(unsigned int tag,
347 void __iomem *hcr_base) 390 void __iomem *hcr_base)
348{ 391{
@@ -1500,6 +1543,17 @@ static int sata_fsl_probe(struct platform_device *ofdev)
1500 if (retval) 1543 if (retval)
1501 goto error_exit_with_cleanup; 1544 goto error_exit_with_cleanup;
1502 1545
1546 host_priv->rx_watermark.show = fsl_sata_rx_watermark_show;
1547 host_priv->rx_watermark.store = fsl_sata_rx_watermark_store;
1548 sysfs_attr_init(&host_priv->rx_watermark.attr);
1549 host_priv->rx_watermark.attr.name = "rx_watermark";
1550 host_priv->rx_watermark.attr.mode = S_IRUGO | S_IWUSR;
1551 retval = device_create_file(host->dev, &host_priv->rx_watermark);
1552 if (retval) {
1553 device_remove_file(&ofdev->dev, &host_priv->intr_coalescing);
1554 goto error_exit_with_cleanup;
1555 }
1556
1503 return 0; 1557 return 0;
1504 1558
1505error_exit_with_cleanup: 1559error_exit_with_cleanup:
@@ -1522,6 +1576,7 @@ static int sata_fsl_remove(struct platform_device *ofdev)
1522 struct sata_fsl_host_priv *host_priv = host->private_data; 1576 struct sata_fsl_host_priv *host_priv = host->private_data;
1523 1577
1524 device_remove_file(&ofdev->dev, &host_priv->intr_coalescing); 1578 device_remove_file(&ofdev->dev, &host_priv->intr_coalescing);
1579 device_remove_file(&ofdev->dev, &host_priv->rx_watermark);
1525 1580
1526 ata_host_detach(host); 1581 ata_host_detach(host);
1527 1582
diff --git a/drivers/ata/sata_highbank.c b/drivers/ata/sata_highbank.c
index 5dba77ccaa0b..b20aa96b958d 100644
--- a/drivers/ata/sata_highbank.c
+++ b/drivers/ata/sata_highbank.c
@@ -251,7 +251,7 @@ static const struct ata_port_info ahci_highbank_port_info = {
251}; 251};
252 252
253static struct scsi_host_template ahci_highbank_platform_sht = { 253static struct scsi_host_template ahci_highbank_platform_sht = {
254 AHCI_SHT("highbank-ahci"), 254 AHCI_SHT("sata_highbank"),
255}; 255};
256 256
257static const struct of_device_id ahci_of_match[] = { 257static const struct of_device_id ahci_of_match[] = {
@@ -418,7 +418,7 @@ static int ahci_highbank_resume(struct device *dev)
418} 418}
419#endif 419#endif
420 420
421SIMPLE_DEV_PM_OPS(ahci_highbank_pm_ops, 421static SIMPLE_DEV_PM_OPS(ahci_highbank_pm_ops,
422 ahci_highbank_suspend, ahci_highbank_resume); 422 ahci_highbank_suspend, ahci_highbank_resume);
423 423
424static struct platform_driver ahci_highbank_driver = { 424static struct platform_driver ahci_highbank_driver = {
diff --git a/drivers/ata/sata_rcar.c b/drivers/ata/sata_rcar.c
index caf33f620c35..4799868bd733 100644
--- a/drivers/ata/sata_rcar.c
+++ b/drivers/ata/sata_rcar.c
@@ -17,6 +17,7 @@
17#include <linux/libata.h> 17#include <linux/libata.h>
18#include <linux/platform_device.h> 18#include <linux/platform_device.h>
19#include <linux/clk.h> 19#include <linux/clk.h>
20#include <linux/err.h>
20 21
21#define DRV_NAME "sata_rcar" 22#define DRV_NAME "sata_rcar"
22 23
@@ -799,9 +800,9 @@ static int sata_rcar_probe(struct platform_device *pdev)
799 800
800 host->private_data = priv; 801 host->private_data = priv;
801 802
802 priv->base = devm_request_and_ioremap(&pdev->dev, mem); 803 priv->base = devm_ioremap_resource(&pdev->dev, mem);
803 if (!priv->base) { 804 if (IS_ERR(priv->base)) {
804 ret = -EADDRNOTAVAIL; 805 ret = PTR_ERR(priv->base);
805 goto cleanup; 806 goto cleanup;
806 } 807 }
807 808