diff options
Diffstat (limited to 'drivers/misc/pch_phub.c')
-rw-r--r-- | drivers/misc/pch_phub.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/misc/pch_phub.c b/drivers/misc/pch_phub.c index 98bffc471b17..380ba806495d 100644 --- a/drivers/misc/pch_phub.c +++ b/drivers/misc/pch_phub.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/mutex.h> | 27 | #include <linux/mutex.h> |
28 | #include <linux/if_ether.h> | 28 | #include <linux/if_ether.h> |
29 | #include <linux/ctype.h> | 29 | #include <linux/ctype.h> |
30 | #include <linux/dmi.h> | ||
30 | 31 | ||
31 | #define PHUB_STATUS 0x00 /* Status Register offset */ | 32 | #define PHUB_STATUS 0x00 /* Status Register offset */ |
32 | #define PHUB_CONTROL 0x04 /* Control Register offset */ | 33 | #define PHUB_CONTROL 0x04 /* Control Register offset */ |
@@ -46,6 +47,17 @@ | |||
46 | #define PCH_MINOR_NOS 1 | 47 | #define PCH_MINOR_NOS 1 |
47 | #define CLKCFG_CAN_50MHZ 0x12000000 | 48 | #define CLKCFG_CAN_50MHZ 0x12000000 |
48 | #define CLKCFG_CANCLK_MASK 0xFF000000 | 49 | #define CLKCFG_CANCLK_MASK 0xFF000000 |
50 | #define CLKCFG_UART_MASK 0xFFFFFF | ||
51 | |||
52 | /* CM-iTC */ | ||
53 | #define CLKCFG_UART_48MHZ (1 << 16) | ||
54 | #define CLKCFG_BAUDDIV (2 << 20) | ||
55 | #define CLKCFG_PLL2VCO (8 << 9) | ||
56 | #define CLKCFG_UARTCLKSEL (1 << 18) | ||
57 | |||
58 | /* Macros for ML7213 */ | ||
59 | #define PCI_VENDOR_ID_ROHM 0x10db | ||
60 | #define PCI_DEVICE_ID_ROHM_ML7213_PHUB 0x801A | ||
49 | 61 | ||
50 | /* Macros for ML7213 */ | 62 | /* Macros for ML7213 */ |
51 | #define PCI_VENDOR_ID_ROHM 0x10db | 63 | #define PCI_VENDOR_ID_ROHM 0x10db |
@@ -618,6 +630,14 @@ static int __devinit pch_phub_probe(struct pci_dev *pdev, | |||
618 | CLKCFG_CAN_50MHZ, | 630 | CLKCFG_CAN_50MHZ, |
619 | CLKCFG_CANCLK_MASK); | 631 | CLKCFG_CANCLK_MASK); |
620 | 632 | ||
633 | /* quirk for CM-iTC board */ | ||
634 | if (strstr(dmi_get_system_info(DMI_BOARD_NAME), "CM-iTC")) | ||
635 | pch_phub_read_modify_write_reg(chip, | ||
636 | (unsigned int)CLKCFG_REG_OFFSET, | ||
637 | CLKCFG_UART_48MHZ | CLKCFG_BAUDDIV | | ||
638 | CLKCFG_PLL2VCO | CLKCFG_UARTCLKSEL, | ||
639 | CLKCFG_UART_MASK); | ||
640 | |||
621 | /* set the prefech value */ | 641 | /* set the prefech value */ |
622 | iowrite32(0x000affaa, chip->pch_phub_base_address + 0x14); | 642 | iowrite32(0x000affaa, chip->pch_phub_base_address + 0x14); |
623 | /* set the interrupt delay value */ | 643 | /* set the interrupt delay value */ |