From bf8164509a1894ec6c0d9d2444c13dd4b62e2962 Mon Sep 17 00:00:00 2001 From: Sergei Shtylyov Date: Tue, 28 Dec 2010 22:54:54 +0300 Subject: [PATCH] --- yaml --- r: 227633 b: refs/heads/master c: dfc7e3e37d4a22ed5fd3f6e8c9842cb1246fee4f h: refs/heads/master i: 227631: 68ac56217abb79db79e23f2f626e1d05e7f42df7 v: v3 --- [refs] | 2 +- trunk/drivers/ata/pata_hpt3x2n.c | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index a8a2c7e69cfe..14934f8f7878 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0ca646db68d1bd7184dfc41362d0dd9d56c0e57e +refs/heads/master: dfc7e3e37d4a22ed5fd3f6e8c9842cb1246fee4f diff --git a/trunk/drivers/ata/pata_hpt3x2n.c b/trunk/drivers/ata/pata_hpt3x2n.c index 87b735a45935..809a4b4e88ab 100644 --- a/trunk/drivers/ata/pata_hpt3x2n.c +++ b/trunk/drivers/ata/pata_hpt3x2n.c @@ -25,7 +25,7 @@ #include #define DRV_NAME "pata_hpt3x2n" -#define DRV_VERSION "0.3.11" +#define DRV_VERSION "0.3.12" enum { HPT_PCI_FAST = (1 << 31), @@ -413,8 +413,19 @@ static int hpt3x2n_pci_clock(struct pci_dev *pdev) fcnt = inl(iobase + 0x90); /* Not PCI readable for some chips */ if ((fcnt >> 12) != 0xABCDE) { - printk(KERN_WARNING "hpt3xn: BIOS clock data not set.\n"); - return 33; /* Not BIOS set */ + int i; + u16 sr; + u32 total = 0; + + printk(KERN_WARNING "pata_hpt3x2n: BIOS clock data not set.\n"); + + /* This is the process the HPT371 BIOS is reported to use */ + for (i = 0; i < 128; i++) { + pci_read_config_word(pdev, 0x78, &sr); + total += sr & 0x1FF; + udelay(15); + } + fcnt = total / 128; } fcnt &= 0x1FF;