Loading drivers/platform/x86/intel_ips.c +15 −47 Original line number Diff line number Diff line Loading @@ -296,7 +296,7 @@ static struct ips_mcp_limits ips_ulv_limits = { struct ips_driver { struct pci_dev *dev; void *regmap; void __iomem *regmap; struct task_struct *monitor; struct task_struct *adjust; struct dentry *debug_root; Loading Loading @@ -1517,62 +1517,45 @@ static int ips_probe(struct pci_dev *dev, const struct pci_device_id *id) if (dmi_check_system(ips_blacklist)) return -ENODEV; ips = kzalloc(sizeof(struct ips_driver), GFP_KERNEL); ips = devm_kzalloc(&dev->dev, sizeof(*ips), GFP_KERNEL); if (!ips) return -ENOMEM; pci_set_drvdata(dev, ips); spin_lock_init(&ips->turbo_status_lock); ips->dev = dev; ips->limits = ips_detect_cpu(ips); if (!ips->limits) { dev_info(&dev->dev, "IPS not supported on this CPU\n"); ret = -ENXIO; goto error_free; return -ENXIO; } spin_lock_init(&ips->turbo_status_lock); ret = pci_enable_device(dev); ret = pcim_enable_device(dev); if (ret) { dev_err(&dev->dev, "can't enable PCI device, aborting\n"); goto error_free; } if (!pci_resource_start(dev, 0)) { dev_err(&dev->dev, "TBAR not assigned, aborting\n"); ret = -ENXIO; goto error_free; return ret; } ret = pci_request_regions(dev, "ips thermal sensor"); ret = pcim_iomap_regions(dev, 1 << 0, pci_name(dev)); if (ret) { dev_err(&dev->dev, "thermal resource busy, aborting\n"); goto error_free; } ips->regmap = ioremap(pci_resource_start(dev, 0), pci_resource_len(dev, 0)); if (!ips->regmap) { dev_err(&dev->dev, "failed to map thermal regs, aborting\n"); ret = -EBUSY; goto error_release; return ret; } ips->regmap = pcim_iomap_table(dev)[0]; pci_set_drvdata(dev, ips); tse = thm_readb(THM_TSE); if (tse != TSE_EN) { dev_err(&dev->dev, "thermal device not enabled (0x%02x), aborting\n", tse); ret = -ENXIO; goto error_unmap; return -ENXIO; } trc = thm_readw(THM_TRC); trc_required_mask = TRC_CORE1_EN | TRC_CORE_PWR | TRC_MCH_EN; if ((trc & trc_required_mask) != trc_required_mask) { dev_err(&dev->dev, "thermal reporting for required devices not enabled, aborting\n"); ret = -ENXIO; goto error_unmap; return -ENXIO; } if (trc & TRC_CORE2_EN) Loading Loading @@ -1602,8 +1585,7 @@ static int ips_probe(struct pci_dev *dev, const struct pci_device_id *id) rdmsrl(PLATFORM_INFO, platform_info); if (!(platform_info & PLATFORM_TDP)) { dev_err(&dev->dev, "platform indicates TDP override unavailable, aborting\n"); ret = -ENODEV; goto error_unmap; return -ENODEV; } /* Loading @@ -1615,7 +1597,7 @@ static int ips_probe(struct pci_dev *dev, const struct pci_device_id *id) ips); if (ret) { dev_err(&dev->dev, "request irq failed, aborting\n"); goto error_unmap; return ret; } /* Enable aux, hot & critical interrupts */ Loading Loading @@ -1673,12 +1655,6 @@ static int ips_probe(struct pci_dev *dev, const struct pci_device_id *id) kthread_stop(ips->adjust); error_free_irq: free_irq(ips->dev->irq, ips); error_unmap: iounmap(ips->regmap); error_release: pci_release_regions(dev); error_free: kfree(ips); return ret; } Loading Loading @@ -1714,22 +1690,14 @@ static void ips_remove(struct pci_dev *dev) kthread_stop(ips->adjust); if (ips->monitor) kthread_stop(ips->monitor); iounmap(ips->regmap); pci_release_regions(dev); kfree(ips); dev_dbg(&dev->dev, "IPS driver removed\n"); } static void ips_shutdown(struct pci_dev *dev) { } static struct pci_driver ips_pci_driver = { .name = "intel ips", .id_table = ips_id_table, .probe = ips_probe, .remove = ips_remove, .shutdown = ips_shutdown, }; module_pci_driver(ips_pci_driver); Loading Loading
drivers/platform/x86/intel_ips.c +15 −47 Original line number Diff line number Diff line Loading @@ -296,7 +296,7 @@ static struct ips_mcp_limits ips_ulv_limits = { struct ips_driver { struct pci_dev *dev; void *regmap; void __iomem *regmap; struct task_struct *monitor; struct task_struct *adjust; struct dentry *debug_root; Loading Loading @@ -1517,62 +1517,45 @@ static int ips_probe(struct pci_dev *dev, const struct pci_device_id *id) if (dmi_check_system(ips_blacklist)) return -ENODEV; ips = kzalloc(sizeof(struct ips_driver), GFP_KERNEL); ips = devm_kzalloc(&dev->dev, sizeof(*ips), GFP_KERNEL); if (!ips) return -ENOMEM; pci_set_drvdata(dev, ips); spin_lock_init(&ips->turbo_status_lock); ips->dev = dev; ips->limits = ips_detect_cpu(ips); if (!ips->limits) { dev_info(&dev->dev, "IPS not supported on this CPU\n"); ret = -ENXIO; goto error_free; return -ENXIO; } spin_lock_init(&ips->turbo_status_lock); ret = pci_enable_device(dev); ret = pcim_enable_device(dev); if (ret) { dev_err(&dev->dev, "can't enable PCI device, aborting\n"); goto error_free; } if (!pci_resource_start(dev, 0)) { dev_err(&dev->dev, "TBAR not assigned, aborting\n"); ret = -ENXIO; goto error_free; return ret; } ret = pci_request_regions(dev, "ips thermal sensor"); ret = pcim_iomap_regions(dev, 1 << 0, pci_name(dev)); if (ret) { dev_err(&dev->dev, "thermal resource busy, aborting\n"); goto error_free; } ips->regmap = ioremap(pci_resource_start(dev, 0), pci_resource_len(dev, 0)); if (!ips->regmap) { dev_err(&dev->dev, "failed to map thermal regs, aborting\n"); ret = -EBUSY; goto error_release; return ret; } ips->regmap = pcim_iomap_table(dev)[0]; pci_set_drvdata(dev, ips); tse = thm_readb(THM_TSE); if (tse != TSE_EN) { dev_err(&dev->dev, "thermal device not enabled (0x%02x), aborting\n", tse); ret = -ENXIO; goto error_unmap; return -ENXIO; } trc = thm_readw(THM_TRC); trc_required_mask = TRC_CORE1_EN | TRC_CORE_PWR | TRC_MCH_EN; if ((trc & trc_required_mask) != trc_required_mask) { dev_err(&dev->dev, "thermal reporting for required devices not enabled, aborting\n"); ret = -ENXIO; goto error_unmap; return -ENXIO; } if (trc & TRC_CORE2_EN) Loading Loading @@ -1602,8 +1585,7 @@ static int ips_probe(struct pci_dev *dev, const struct pci_device_id *id) rdmsrl(PLATFORM_INFO, platform_info); if (!(platform_info & PLATFORM_TDP)) { dev_err(&dev->dev, "platform indicates TDP override unavailable, aborting\n"); ret = -ENODEV; goto error_unmap; return -ENODEV; } /* Loading @@ -1615,7 +1597,7 @@ static int ips_probe(struct pci_dev *dev, const struct pci_device_id *id) ips); if (ret) { dev_err(&dev->dev, "request irq failed, aborting\n"); goto error_unmap; return ret; } /* Enable aux, hot & critical interrupts */ Loading Loading @@ -1673,12 +1655,6 @@ static int ips_probe(struct pci_dev *dev, const struct pci_device_id *id) kthread_stop(ips->adjust); error_free_irq: free_irq(ips->dev->irq, ips); error_unmap: iounmap(ips->regmap); error_release: pci_release_regions(dev); error_free: kfree(ips); return ret; } Loading Loading @@ -1714,22 +1690,14 @@ static void ips_remove(struct pci_dev *dev) kthread_stop(ips->adjust); if (ips->monitor) kthread_stop(ips->monitor); iounmap(ips->regmap); pci_release_regions(dev); kfree(ips); dev_dbg(&dev->dev, "IPS driver removed\n"); } static void ips_shutdown(struct pci_dev *dev) { } static struct pci_driver ips_pci_driver = { .name = "intel ips", .id_table = ips_id_table, .probe = ips_probe, .remove = ips_remove, .shutdown = ips_shutdown, }; module_pci_driver(ips_pci_driver); Loading