diff options
author | Sergei Shtylyov <sshtylyov@ru.mvista.com> | 2008-07-24 16:53:34 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-07-24 16:53:34 -0400 |
commit | a0f403bc58dcaa118f02ec70c3ecfec1bc26e445 (patch) | |
tree | 905822a0711f9f5e9d0a80b231e1f96d836730ee /drivers/ide/arm | |
parent | 7fa897b91a3ea0f16c2873b869d7a0eef05acff4 (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/ide/arm')
-rw-r--r-- | drivers/ide/arm/palm_bk3710.c | 9 |
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 | ||
87 | static void palm_bk3710_setudmamode(void __iomem *base, unsigned int dev, | 88 | static 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 | ||
337 | static const struct ide_port_info __devinitdata palm_bk3710_port_info = { | 338 | static 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; |