static void amd8111_lpc_bridge_check(struct edac_device_ctl_info *edac_dev) { struct amd8111_dev_info *dev_info = edac_dev->pvt_info; struct pci_dev *dev = dev_info->dev; u8 val8; edac_pci_read_byte(dev, REG_IO_CTRL_1, &val8); if (val8 & IO_CTRL_1_CLEAR_MASK) { printk(KERN_INFO "Error(s) in IO control register on %s device\n", dev_info->ctl_name); printk(KERN_INFO "LPC ERR: %d, PW2LPC: %d\n", (val8 & IO_CTRL_1_LPC_ERR) != 0, (val8 & IO_CTRL_1_PW2LPC) != 0); val8 |= IO_CTRL_1_CLEAR_MASK; edac_pci_write_byte(dev, REG_IO_CTRL_1, val8); edac_device_handle_ue(edac_dev, 0, 0, edac_dev->ctl_name); } if (at_compat_reg_broken == 0) { u8 out8 = 0; val8 = __do_inb(REG_AT_COMPAT); if (val8 & AT_COMPAT_SERR) out8 = AT_COMPAT_CLRSERR; if (val8 & AT_COMPAT_IOCHK) out8 |= AT_COMPAT_CLRIOCHK; if (out8 > 0) { __do_outb(out8, REG_AT_COMPAT); edac_device_handle_ue(edac_dev, 0, 0, edac_dev->ctl_name); } } }
/* device-specific methods for amd8111 LPC Bridge device */ static void amd8111_lpc_bridge_init(struct amd8111_dev_info *dev_info) { u8 val8; struct pci_dev *dev = dev_info->dev; /* First clear REG_AT_COMPAT[SERR, IOCHK] if necessary */ legacy_io_res = request_region(REG_AT_COMPAT, LEGACY_NR_PORTS, AMD8111_EDAC_MOD_STR); if (!legacy_io_res) printk(KERN_INFO "%s: failed to request legacy I/O region " "start %d, len %d\n", __func__, REG_AT_COMPAT, LEGACY_NR_PORTS); else { val8 = __do_inb(REG_AT_COMPAT); if (val8 == 0xff) { /* buggy port */ printk(KERN_INFO "%s: port %d is buggy, not supported" " by hardware?\n", __func__, REG_AT_COMPAT); at_compat_reg_
/* device-specific methods for amd8111 LPC Bridge device */ static void amd8111_lpc_bridge_init(struct amd8111_dev_info *dev_info) { u8 val8; struct pci_dev *dev = dev_info->dev; /* First clear REG_AT_COMPAT[SERR, IOCHK] if necessary */ legacy_io_res = request_region(REG_AT_COMPAT, LEGACY_NR_PORTS, AMD8111_EDAC_MOD_STR); if (!legacy_io_res) printk(KERN_INFO "%s: failed to request legacy I/O region " "start %d, len %d\n", __func__, REG_AT_COMPAT, LEGACY_NR_PORTS); else { val8 = __do_inb(REG_AT_COMPAT); if (val8 == 0xff) { /* buggy port */ printk(KERN_INFO "%s: port %d is buggy, not supported" " by hardware?\n", __func__, REG_AT_COMPAT); at_compat_reg_broken = 1; release_region(REG_AT_COMPAT, LEGACY_NR_PORTS); legacy_io_res = NULL; } else { u8 out8 = 0; if (val8 & AT_COMPAT_SERR) out8 = AT_COMPAT_CLRSERR; if (val8 & AT_COMPAT_IOCHK) out8 |= AT_COMPAT_CLRIOCHK; if (out8 > 0) __do_outb(out8, REG_AT_COMPAT); } } /* Second clear error flags on LPC bridge */ edac_pci_read_byte(dev, REG_IO_CTRL_1, &val8); if (val8 & IO_CTRL_1_CLEAR_MASK) edac_pci_write_byte(dev, REG_IO_CTRL_1, val8); }
u8 val8; struct pci_dev *dev = dev_info->dev; /* First clear REG_AT_COMPAT[SERR, IOCHK] if necessary */ legacy_io_res = request_region(REG_AT_COMPAT, LEGACY_NR_PORTS, AMD8111_EDAC_MOD_STR); if (!legacy_io_res) #ifdef CONFIG_DEBUG_PRINTK printk(KERN_INFO "%s: failed to request legacy I/O region " "start %d, len %d\n", __func__, REG_AT_COMPAT, LEGACY_NR_PORTS); #else ; #endif else { val8 = __do_inb(REG_AT_COMPAT); if (val8 == 0xff) { /* buggy port */ #ifdef CONFIG_DEBUG_PRINTK printk(KERN_INFO "%s: port %d is buggy, not supported" " by hardware?\n", __func__, REG_AT_COMPAT); #else ; #endif at_compat_reg_broken = 1; release_region(REG_AT_COMPAT, LEGACY_NR_PORTS); legacy_io_res = NULL; } else { u8 out8 = 0; if (val8 & AT_COMPAT_SERR) out8 = AT_COMPAT_CLRSERR; if (val8 & AT_COMPAT_IOCHK)