aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSergei Shtylyov <sshtylyov@ru.mvista.com>2008-07-24 16:53:34 -0400
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-07-24 16:53:34 -0400
commita0f403bc58dcaa118f02ec70c3ecfec1bc26e445 (patch)
tree905822a0711f9f5e9d0a80b231e1f96d836730ee /drivers
parent7fa897b91a3ea0f16c2873b869d7a0eef05acff4 (diff)
palm_bk3710: add UltraDMA/100 support
This controller supports UltraDMA up to mode 5 but it should be clocked with at least twice the data strobe frequency, so enable mode 5 for 100+ MHz IDECLK. While at it, start passing the correct device to clk_get() -- it worked anyway but WTF? :-/ Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ide/arm/palm_bk3710.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/ide/arm/palm_bk3710.c b/drivers/ide/arm/palm_bk3710.c
index 65bb4b8fd570..3e842d60eae9 100644
--- a/drivers/ide/arm/palm_bk3710.c
+++ b/drivers/ide/arm/palm_bk3710.c
@@ -82,6 +82,7 @@ static const struct palm_bk3710_udmatiming palm_bk3710_udmatimings[6] = {
82 {100, 120}, /* UDMA Mode 2 */ 82 {100, 120}, /* UDMA Mode 2 */
83 {100, 90}, /* UDMA Mode 3 */ 83 {100, 90}, /* UDMA Mode 3 */
84 {100, 60}, /* UDMA Mode 4 */ 84 {100, 60}, /* UDMA Mode 4 */
85 {85, 40}, /* UDMA Mode 5 */
85}; 86};
86 87
87static void palm_bk3710_setudmamode(void __iomem *base, unsigned int dev, 88static void palm_bk3710_setudmamode(void __iomem *base, unsigned int dev,
@@ -334,12 +335,11 @@ static const struct ide_port_ops palm_bk3710_ports_ops = {
334 .cable_detect = palm_bk3710_cable_detect, 335 .cable_detect = palm_bk3710_cable_detect,
335}; 336};
336 337
337static const struct ide_port_info __devinitdata palm_bk3710_port_info = { 338static struct ide_port_info __devinitdata palm_bk3710_port_info = {
338 .init_dma = palm_bk3710_init_dma, 339 .init_dma = palm_bk3710_init_dma,
339 .port_ops = &palm_bk3710_ports_ops, 340 .port_ops = &palm_bk3710_ports_ops,
340 .host_flags = IDE_HFLAG_MMIO, 341 .host_flags = IDE_HFLAG_MMIO,
341 .pio_mask = ATA_PIO4, 342 .pio_mask = ATA_PIO4,
342 .udma_mask = ATA_UDMA4, /* (input clk 99MHz) */
343 .mwdma_mask = ATA_MWDMA2, 343 .mwdma_mask = ATA_MWDMA2,
344}; 344};
345 345
@@ -352,7 +352,7 @@ static int __devinit palm_bk3710_probe(struct platform_device *pdev)
352 int i, rc; 352 int i, rc;
353 hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; 353 hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL };
354 354
355 clk = clk_get(NULL, "IDECLK"); 355 clk = clk_get(&pdev->dev, "IDECLK");
356 if (IS_ERR(clk)) 356 if (IS_ERR(clk))
357 return -ENODEV; 357 return -ENODEV;
358 358
@@ -392,6 +392,9 @@ static int __devinit palm_bk3710_probe(struct platform_device *pdev)
392 hw.irq = irq->start; 392 hw.irq = irq->start;
393 hw.chipset = ide_palm3710; 393 hw.chipset = ide_palm3710;
394 394
395 palm_bk3710_port_info.udma_mask = rate < 100000000 ? ATA_UDMA4 :
396 ATA_UDMA5;
397
395 rc = ide_host_add(&palm_bk3710_port_info, hws, NULL); 398 rc = ide_host_add(&palm_bk3710_port_info, hws, NULL);
396 if (rc) 399 if (rc)
397 goto out; 400 goto out;