| From 4842b20e62f581a56e3899101c5a08a2f700880e Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sat, 19 Feb 2022 23:04:29 +0300 |
| Subject: ata: pata_hpt37x: fix PCI clock detection |
| |
| From: Sergey Shtylyov <s.shtylyov@omp.ru> |
| |
| [ Upstream commit 5f6b0f2d037c8864f20ff15311c695f65eb09db5 ] |
| |
| The f_CNT register (at the PCI config. address 0x78) is 16-bit, not |
| 8-bit! The bug was there from the very start... :-( |
| |
| Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru> |
| Fixes: 669a5db411d8 ("[libata] Add a bunch of PATA drivers.") |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/ata/pata_hpt37x.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/ata/pata_hpt37x.c b/drivers/ata/pata_hpt37x.c |
| index 499a947d56ddb..fef46de2f6b23 100644 |
| --- a/drivers/ata/pata_hpt37x.c |
| +++ b/drivers/ata/pata_hpt37x.c |
| @@ -962,14 +962,14 @@ static int hpt37x_init_one(struct pci_dev *dev, const struct pci_device_id *id) |
| |
| if ((freq >> 12) != 0xABCDE) { |
| int i; |
| - u8 sr; |
| + u16 sr; |
| u32 total = 0; |
| |
| pr_warn("BIOS has not set timing clocks\n"); |
| |
| /* This is the process the HPT371 BIOS is reported to use */ |
| for (i = 0; i < 128; i++) { |
| - pci_read_config_byte(dev, 0x78, &sr); |
| + pci_read_config_word(dev, 0x78, &sr); |
| total += sr & 0x1FF; |
| udelay(15); |
| } |
| -- |
| 2.34.1 |
| |