Commit 5a559057 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging

* 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
  MAINTAINERS: hwmon/coretemp: Change maintainers
  hwmon: (k8temp) Differentiate between AM2 and ASB1
  hwmon: (ads7871) Fix ads7871_probe error paths
  hwmon: (coretemp) Fix harmless build warning
parents 5e686019 96859129
...@@ -1676,8 +1676,7 @@ F: kernel/cgroup* ...@@ -1676,8 +1676,7 @@ F: kernel/cgroup*
F: mm/*cgroup* F: mm/*cgroup*
CORETEMP HARDWARE MONITORING DRIVER CORETEMP HARDWARE MONITORING DRIVER
M: Rudolf Marek <r.marek@assembler.cz> M: Fenghua Yu <fenghua.yu@intel.com>
M: Huaxu Wan <huaxu.wan@intel.com>
L: lm-sensors@lm-sensors.org L: lm-sensors@lm-sensors.org
S: Maintained S: Maintained
F: Documentation/hwmon/coretemp F: Documentation/hwmon/coretemp
......
...@@ -160,30 +160,12 @@ static const struct attribute_group ads7871_group = { ...@@ -160,30 +160,12 @@ static const struct attribute_group ads7871_group = {
static int __devinit ads7871_probe(struct spi_device *spi) static int __devinit ads7871_probe(struct spi_device *spi)
{ {
int status, ret, err = 0; int ret, err;
uint8_t val; uint8_t val;
struct ads7871_data *pdata; struct ads7871_data *pdata;
dev_dbg(&spi->dev, "probe\n"); dev_dbg(&spi->dev, "probe\n");
pdata = kzalloc(sizeof(struct ads7871_data), GFP_KERNEL);
if (!pdata) {
err = -ENOMEM;
goto exit;
}
status = sysfs_create_group(&spi->dev.kobj, &ads7871_group);
if (status < 0)
goto error_free;
pdata->hwmon_dev = hwmon_device_register(&spi->dev);
if (IS_ERR(pdata->hwmon_dev)) {
err = PTR_ERR(pdata->hwmon_dev);
goto error_remove;
}
spi_set_drvdata(spi, pdata);
/* Configure the SPI bus */ /* Configure the SPI bus */
spi->mode = (SPI_MODE_0); spi->mode = (SPI_MODE_0);
spi->bits_per_word = 8; spi->bits_per_word = 8;
...@@ -201,6 +183,24 @@ static int __devinit ads7871_probe(struct spi_device *spi) ...@@ -201,6 +183,24 @@ static int __devinit ads7871_probe(struct spi_device *spi)
we need to make sure we really have a chip*/ we need to make sure we really have a chip*/
if (val != ret) { if (val != ret) {
err = -ENODEV; err = -ENODEV;
goto exit;
}
pdata = kzalloc(sizeof(struct ads7871_data), GFP_KERNEL);
if (!pdata) {
err = -ENOMEM;
goto exit;
}
err = sysfs_create_group(&spi->dev.kobj, &ads7871_group);
if (err < 0)
goto error_free;
spi_set_drvdata(spi, pdata);
pdata->hwmon_dev = hwmon_device_register(&spi->dev);
if (IS_ERR(pdata->hwmon_dev)) {
err = PTR_ERR(pdata->hwmon_dev);
goto error_remove; goto error_remove;
} }
......
...@@ -518,7 +518,6 @@ static struct notifier_block coretemp_cpu_notifier __refdata = { ...@@ -518,7 +518,6 @@ static struct notifier_block coretemp_cpu_notifier __refdata = {
static int __init coretemp_init(void) static int __init coretemp_init(void)
{ {
int i, err = -ENODEV; int i, err = -ENODEV;
struct pdev_entry *p, *n;
/* quick check if we run Intel */ /* quick check if we run Intel */
if (cpu_data(0).x86_vendor != X86_VENDOR_INTEL) if (cpu_data(0).x86_vendor != X86_VENDOR_INTEL)
......
...@@ -143,6 +143,37 @@ static const struct pci_device_id k8temp_ids[] = { ...@@ -143,6 +143,37 @@ static const struct pci_device_id k8temp_ids[] = {
MODULE_DEVICE_TABLE(pci, k8temp_ids); MODULE_DEVICE_TABLE(pci, k8temp_ids);
static int __devinit is_rev_g_desktop(u8 model)
{
u32 brandidx;
if (model < 0x69)
return 0;
if (model == 0xc1 || model == 0x6c || model == 0x7c)
return 0;
/*
* Differentiate between AM2 and ASB1.
* See "Constructing the processor Name String" in "Revision
* Guide for AMD NPT Family 0Fh Processors" (33610).
*/
brandidx = cpuid_ebx(0x80000001);
brandidx = (brandidx >> 9) & 0x1f;
/* Single core */
if ((model == 0x6f || model == 0x7f) &&
(brandidx == 0x7 || brandidx == 0x9 || brandidx == 0xc))
return 0;
/* Dual core */
if (model == 0x6b &&
(brandidx == 0xb || brandidx == 0xc))
return 0;
return 1;
}
static int __devinit k8temp_probe(struct pci_dev *pdev, static int __devinit k8temp_probe(struct pci_dev *pdev,
const struct pci_device_id *id) const struct pci_device_id *id)
{ {
...@@ -179,9 +210,7 @@ static int __devinit k8temp_probe(struct pci_dev *pdev, ...@@ -179,9 +210,7 @@ static int __devinit k8temp_probe(struct pci_dev *pdev,
"wrong - check erratum #141\n"); "wrong - check erratum #141\n");
} }
if ((model >= 0x69) && if (is_rev_g_desktop(model)) {
!(model == 0xc1 || model == 0x6c || model == 0x7c ||
model == 0x6b || model == 0x6f || model == 0x7f)) {
/* /*
* RevG desktop CPUs (i.e. no socket S1G1 or * RevG desktop CPUs (i.e. no socket S1G1 or
* ASB1 parts) need additional offset, * ASB1 parts) need additional offset,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment