mirror of
https://github.com/torvalds/linux
synced 2024-10-18 17:29:25 +00:00
ata: pata_hpt37x: merge hpt374_read_freq() to hpt37x_pci_clock()
With hpt374_read_freq() implemented as a separate function, there's some code duplication going on, not to mention that this function is named incorrectly: it returns the f_CNT register value saved by BIOS, not the PCI clock frequency. Folding hpt374_read_freq() into hpt37x_pci_clock() saves 20 bytes of object code with x86_64 gcc 10.3.1... Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru> Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
This commit is contained in:
parent
96c34ac4ec
commit
75b4d58cb5
|
@ -23,7 +23,7 @@
|
|||
#include <linux/libata.h>
|
||||
|
||||
#define DRV_NAME "pata_hpt37x"
|
||||
#define DRV_VERSION "0.6.29"
|
||||
#define DRV_VERSION "0.6.30"
|
||||
|
||||
struct hpt_clock {
|
||||
u8 xfer_speed;
|
||||
|
@ -644,26 +644,6 @@ static int hpt37x_calibrate_dpll(struct pci_dev *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static u32 hpt374_read_freq(struct pci_dev *pdev)
|
||||
{
|
||||
u32 freq;
|
||||
unsigned long io_base = pci_resource_start(pdev, 4);
|
||||
|
||||
if (PCI_FUNC(pdev->devfn) & 1) {
|
||||
struct pci_dev *pdev_0;
|
||||
|
||||
pdev_0 = pci_get_slot(pdev->bus, pdev->devfn - 1);
|
||||
/* Someone hot plugged the controller on us ? */
|
||||
if (pdev_0 == NULL)
|
||||
return 0;
|
||||
io_base = pci_resource_start(pdev_0, 4);
|
||||
freq = inl(io_base + 0x90);
|
||||
pci_dev_put(pdev_0);
|
||||
} else
|
||||
freq = inl(io_base + 0x90);
|
||||
return freq;
|
||||
}
|
||||
|
||||
static int hpt37x_pci_clock(struct pci_dev *pdev, unsigned int base)
|
||||
{
|
||||
unsigned int freq;
|
||||
|
@ -674,10 +654,16 @@ static int hpt37x_pci_clock(struct pci_dev *pdev, unsigned int base)
|
|||
* according to the old driver. In addition we must use the value
|
||||
* from FN 0 on the HPT374.
|
||||
*/
|
||||
if (pdev->device == PCI_DEVICE_ID_TTI_HPT374) {
|
||||
fcnt = hpt374_read_freq(pdev);
|
||||
if (!fcnt)
|
||||
if (pdev->device == PCI_DEVICE_ID_TTI_HPT374 &&
|
||||
(PCI_FUNC(pdev->devfn) & 1)) {
|
||||
struct pci_dev *pdev_fn0;
|
||||
|
||||
pdev_fn0 = pci_get_slot(pdev->bus, pdev->devfn - 1);
|
||||
/* Someone hot plugged the controller on us? */
|
||||
if (!pdev_fn0)
|
||||
return 0;
|
||||
fcnt = inl(pci_resource_start(pdev_fn0, 4) + 0x90);
|
||||
pci_dev_put(pdev_fn0);
|
||||
} else {
|
||||
fcnt = inl(pci_resource_start(pdev, 4) + 0x90);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue