Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 165543
b: refs/heads/master
c: 7549ae3
h: refs/heads/master
i:
  165541: 444fc74
  165539: 2636c64
  165535: af4b68d
v: v3
  • Loading branch information
Abhishek Kulkarni authored and Eric Van Hensbergen committed Sep 23, 2009
1 parent 859fdf9 commit c525b67
Show file tree
Hide file tree
Showing 24 changed files with 1,608 additions and 161 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3e56d49390cd161f34cc049a3661045183d276d5
refs/heads/master: 7549ae3e81cc45908cbeee54a52b24f247fb0a2d
8 changes: 8 additions & 0 deletions trunk/Documentation/feature-removal-schedule.txt
Original file line number Diff line number Diff line change
Expand Up @@ -354,6 +354,14 @@ Who: Krzysztof Piotr Oledzki <ole@ans.pl>

---------------------------

What: fscher and fscpos drivers
When: June 2009
Why: Deprecated by the new fschmd driver.
Who: Hans de Goede <hdegoede@redhat.com>
Jean Delvare <khali@linux-fr.org>

---------------------------

What: sysfs ui for changing p4-clockmod parameters
When: September 2009
Why: See commits 129f8ae9b1b5be94517da76009ea956e89104ce8 and
Expand Down
4 changes: 1 addition & 3 deletions trunk/Documentation/hwmon/coretemp
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ Kernel driver coretemp
Supported chips:
* All Intel Core family
Prefix: 'coretemp'
CPUID: family 0x6, models 0xe (Pentium M DC), 0xf (Core 2 DC 65nm),
0x16 (Core 2 SC 65nm), 0x17 (Penryn 45nm),
0x1a (Nehalem), 0x1c (Atom), 0x1e (Lynnfield)
CPUID: family 0x6, models 0xe, 0xf, 0x16, 0x17
Datasheet: Intel 64 and IA-32 Architectures Software Developer's Manual
Volume 3A: System Programming Guide
http://softwarecommunity.intel.com/Wiki/Mobility/720.htm
Expand Down
169 changes: 169 additions & 0 deletions trunk/Documentation/hwmon/fscher
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
Kernel driver fscher
====================

Supported chips:
* Fujitsu-Siemens Hermes chip
Prefix: 'fscher'
Addresses scanned: I2C 0x73

Authors:
Reinhard Nissl <rnissl@gmx.de> based on work
from Hermann Jung <hej@odn.de>,
Frodo Looijaard <frodol@dds.nl>,
Philip Edelbrock <phil@netroedge.com>

Description
-----------

This driver implements support for the Fujitsu-Siemens Hermes chip. It is
described in the 'Register Set Specification BMC Hermes based Systemboard'
from Fujitsu-Siemens.

The Hermes chip implements a hardware-based system management, e.g. for
controlling fan speed and core voltage. There is also a watchdog counter on
the chip which can trigger an alarm and even shut the system down.

The chip provides three temperature values (CPU, motherboard and
auxiliary), three voltage values (+12V, +5V and battery) and three fans
(power supply, CPU and auxiliary).

Temperatures are measured in degrees Celsius. The resolution is 1 degree.

Fan rotation speeds are reported in RPM (rotations per minute). The value
can be divided by a programmable divider (1, 2 or 4) which is stored on
the chip.

Voltage sensors (also known as "in" sensors) report their values in volts.

All values are reported as final values from the driver. There is no need
for further calculations.


Detailed description
--------------------

Below you'll find a single line description of all the bit values. With
this information, you're able to decode e. g. alarms, wdog, etc. To make
use of the watchdog, you'll need to set the watchdog time and enable the
watchdog. After that it is necessary to restart the watchdog time within
the specified period of time, or a system reset will occur.

* revision
READING & 0xff = 0x??: HERMES revision identification

* alarms
READING & 0x80 = 0x80: CPU throttling active
READING & 0x80 = 0x00: CPU running at full speed

READING & 0x10 = 0x10: software event (see control:1)
READING & 0x10 = 0x00: no software event

READING & 0x08 = 0x08: watchdog event (see wdog:2)
READING & 0x08 = 0x00: no watchdog event

READING & 0x02 = 0x02: thermal event (see temp*:1)
READING & 0x02 = 0x00: no thermal event

READING & 0x01 = 0x01: fan event (see fan*:1)
READING & 0x01 = 0x00: no fan event

READING & 0x13 ! 0x00: ALERT LED is flashing

* control
READING & 0x01 = 0x01: software event
READING & 0x01 = 0x00: no software event

WRITING & 0x01 = 0x01: set software event
WRITING & 0x01 = 0x00: clear software event

* watchdog_control
READING & 0x80 = 0x80: power off on watchdog event while thermal event
READING & 0x80 = 0x00: watchdog power off disabled (just system reset enabled)

READING & 0x40 = 0x40: watchdog timebase 60 seconds (see also wdog:1)
READING & 0x40 = 0x00: watchdog timebase 2 seconds

READING & 0x10 = 0x10: watchdog enabled
READING & 0x10 = 0x00: watchdog disabled

WRITING & 0x80 = 0x80: enable "power off on watchdog event while thermal event"
WRITING & 0x80 = 0x00: disable "power off on watchdog event while thermal event"

WRITING & 0x40 = 0x40: set watchdog timebase to 60 seconds
WRITING & 0x40 = 0x00: set watchdog timebase to 2 seconds

WRITING & 0x20 = 0x20: disable watchdog

WRITING & 0x10 = 0x10: enable watchdog / restart watchdog time

* watchdog_state
READING & 0x02 = 0x02: watchdog system reset occurred
READING & 0x02 = 0x00: no watchdog system reset occurred

WRITING & 0x02 = 0x02: clear watchdog event

* watchdog_preset
READING & 0xff = 0x??: configured watch dog time in units (see wdog:3 0x40)

WRITING & 0xff = 0x??: configure watch dog time in units

* in* (0: +5V, 1: +12V, 2: onboard 3V battery)
READING: actual voltage value

* temp*_status (1: CPU sensor, 2: onboard sensor, 3: auxiliary sensor)
READING & 0x02 = 0x02: thermal event (overtemperature)
READING & 0x02 = 0x00: no thermal event

READING & 0x01 = 0x01: sensor is working
READING & 0x01 = 0x00: sensor is faulty

WRITING & 0x02 = 0x02: clear thermal event

* temp*_input (1: CPU sensor, 2: onboard sensor, 3: auxiliary sensor)
READING: actual temperature value

* fan*_status (1: power supply fan, 2: CPU fan, 3: auxiliary fan)
READING & 0x04 = 0x04: fan event (fan fault)
READING & 0x04 = 0x00: no fan event

WRITING & 0x04 = 0x04: clear fan event

* fan*_div (1: power supply fan, 2: CPU fan, 3: auxiliary fan)
Divisors 2,4 and 8 are supported, both for reading and writing

* fan*_pwm (1: power supply fan, 2: CPU fan, 3: auxiliary fan)
READING & 0xff = 0x00: fan may be switched off
READING & 0xff = 0x01: fan must run at least at minimum speed (supply: 6V)
READING & 0xff = 0xff: fan must run at maximum speed (supply: 12V)
READING & 0xff = 0x??: fan must run at least at given speed (supply: 6V..12V)

WRITING & 0xff = 0x00: fan may be switched off
WRITING & 0xff = 0x01: fan must run at least at minimum speed (supply: 6V)
WRITING & 0xff = 0xff: fan must run at maximum speed (supply: 12V)
WRITING & 0xff = 0x??: fan must run at least at given speed (supply: 6V..12V)

* fan*_input (1: power supply fan, 2: CPU fan, 3: auxiliary fan)
READING: actual RPM value


Limitations
-----------

* Measuring fan speed
It seems that the chip counts "ripples" (typical fans produce 2 ripples per
rotation while VERAX fans produce 18) in a 9-bit register. This register is
read out every second, then the ripple prescaler (2, 4 or 8) is applied and
the result is stored in the 8 bit output register. Due to the limitation of
the counting register to 9 bits, it is impossible to measure a VERAX fan
properly (even with a prescaler of 8). At its maximum speed of 3500 RPM the
fan produces 1080 ripples per second which causes the counting register to
overflow twice, leading to only 186 RPM.

* Measuring input voltages
in2 ("battery") reports the voltage of the onboard lithium battery and not
+3.3V from the power supply.

* Undocumented features
Fujitsu-Siemens Computers has not documented all features of the chip so
far. Their software, System Guard, shows that there are a still some
features which cannot be controlled by this implementation.
7 changes: 0 additions & 7 deletions trunk/MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -686,13 +686,6 @@ M: Lennert Buytenhek <kernel@wantstofly.org>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S: Maintained

ARM/INTEL IXP4XX ARM ARCHITECTURE
M: Imre Kaloz <kaloz@openwrt.org>
M: Krzysztof Halasa <khc@pm.waw.pl>
L: linux-arm-kernel@lists.infradead.org
S: Maintained
F: arch/arm/mach-ixp4xx/

ARM/INTEL XSC3 (MANZANO) ARM CORE
M: Lennert Buytenhek <kernel@wantstofly.org>
M: Dan Williams <dan.j.williams@intel.com>
Expand Down
16 changes: 9 additions & 7 deletions trunk/arch/arm/mach-ixp4xx/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@
#include <asm/mach/irq.h>
#include <asm/mach/time.h>

static void __init ixp4xx_clocksource_init(void);
static void __init ixp4xx_clockevent_init(void);
static int __init ixp4xx_clocksource_init(void);
static int __init ixp4xx_clockevent_init(void);
static struct clock_event_device clockevent_ixp4xx;

/*************************************************************************
Expand Down Expand Up @@ -267,7 +267,7 @@ void __init ixp4xx_init_irq(void)

static irqreturn_t ixp4xx_timer_interrupt(int irq, void *dev_id)
{
struct clock_event_device *evt = dev_id;
struct clock_event_device *evt = &clockevent_ixp4xx;

/* Clear Pending Interrupt by writing '1' to it */
*IXP4XX_OSST = IXP4XX_OSST_TIMER_1_PEND;
Expand All @@ -281,7 +281,6 @@ static struct irqaction ixp4xx_timer_irq = {
.name = "timer1",
.flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
.handler = ixp4xx_timer_interrupt,
.dev_id = &clockevent_ixp4xx,
};

void __init ixp4xx_timer_init(void)
Expand Down Expand Up @@ -402,7 +401,7 @@ void __init ixp4xx_sys_init(void)
/*
* clocksource
*/
static cycle_t ixp4xx_get_cycles(struct clocksource *cs)
cycle_t ixp4xx_get_cycles(struct clocksource *cs)
{
return *IXP4XX_OSTS;
}
Expand All @@ -418,12 +417,14 @@ static struct clocksource clocksource_ixp4xx = {

unsigned long ixp4xx_timer_freq = FREQ;
EXPORT_SYMBOL(ixp4xx_timer_freq);
static void __init ixp4xx_clocksource_init(void)
static int __init ixp4xx_clocksource_init(void)
{
clocksource_ixp4xx.mult =
clocksource_hz2mult(ixp4xx_timer_freq,
clocksource_ixp4xx.shift);
clocksource_register(&clocksource_ixp4xx);

return 0;
}

/*
Expand Down Expand Up @@ -479,7 +480,7 @@ static struct clock_event_device clockevent_ixp4xx = {
.set_next_event = ixp4xx_set_next_event,
};

static void __init ixp4xx_clockevent_init(void)
static int __init ixp4xx_clockevent_init(void)
{
clockevent_ixp4xx.mult = div_sc(FREQ, NSEC_PER_SEC,
clockevent_ixp4xx.shift);
Expand All @@ -490,4 +491,5 @@ static void __init ixp4xx_clockevent_init(void)
clockevent_ixp4xx.cpumask = cpumask_of(0);

clockevents_register_device(&clockevent_ixp4xx);
return 0;
}
6 changes: 2 additions & 4 deletions trunk/arch/arm/mach-ixp4xx/include/mach/system.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,9 @@

static inline void arch_idle(void)
{
/* ixp4xx does not implement the XScale PWRMODE register,
* so it must not call cpu_do_idle() here.
*/
#if 0
cpu_do_idle();
if (!hlt_counter)
cpu_do_idle(0);
#endif
}

Expand Down
5 changes: 3 additions & 2 deletions trunk/drivers/char/tpm/tpm.c
Original file line number Diff line number Diff line change
Expand Up @@ -742,7 +742,7 @@ EXPORT_SYMBOL_GPL(tpm_pcr_read);
* the module usage count.
*/
#define TPM_ORD_PCR_EXTEND cpu_to_be32(20)
#define EXTEND_PCR_RESULT_SIZE 34
#define EXTEND_PCR_SIZE 34
static struct tpm_input_header pcrextend_header = {
.tag = TPM_TAG_RQU_COMMAND,
.length = cpu_to_be32(34),
Expand All @@ -760,9 +760,10 @@ int tpm_pcr_extend(u32 chip_num, int pcr_idx, const u8 *hash)
return -ENODEV;

cmd.header.in = pcrextend_header;
BUG_ON(be32_to_cpu(cmd.header.in.length) > EXTEND_PCR_SIZE);
cmd.params.pcrextend_in.pcr_idx = cpu_to_be32(pcr_idx);
memcpy(cmd.params.pcrextend_in.hash, hash, TPM_DIGEST_SIZE);
rc = transmit_cmd(chip, &cmd, EXTEND_PCR_RESULT_SIZE,
rc = transmit_cmd(chip, &cmd, cmd.header.in.length,
"attempting extend a PCR value");

module_put(chip->dev->driver->owner);
Expand Down
34 changes: 31 additions & 3 deletions trunk/drivers/hwmon/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,34 @@ config SENSORS_F75375S
This driver can also be built as a module. If so, the module
will be called f75375s.

config SENSORS_FSCHER
tristate "FSC Hermes (DEPRECATED)"
depends on X86 && I2C
help
This driver is DEPRECATED please use the new merged fschmd
("FSC Poseidon, Scylla, Hermes, Heimdall and Heracles") driver
instead.

If you say yes here you get support for Fujitsu Siemens
Computers Hermes sensor chips.

This driver can also be built as a module. If so, the module
will be called fscher.

config SENSORS_FSCPOS
tristate "FSC Poseidon (DEPRECATED)"
depends on X86 && I2C
help
This driver is DEPRECATED please use the new merged fschmd
("FSC Poseidon, Scylla, Hermes, Heimdall and Heracles") driver
instead.

If you say yes here you get support for Fujitsu Siemens
Computers Poseidon sensor chips.

This driver can also be built as a module. If so, the module
will be called fscpos.

config SENSORS_FSCHMD
tristate "Fujitsu Siemens Computers sensor chips"
depends on X86 && I2C
Expand Down Expand Up @@ -373,12 +401,12 @@ config SENSORS_GL520SM
will be called gl520sm.

config SENSORS_CORETEMP
tristate "Intel Core/Core2/Atom temperature sensor"
tristate "Intel Core (2) Duo/Solo temperature sensor"
depends on X86 && EXPERIMENTAL
help
If you say yes here you get support for the temperature
sensor inside your CPU. Most of the family 6 CPUs
are supported. Check documentation/driver for details.
sensor inside your CPU. Supported all are all known variants
of Intel Core family.

config SENSORS_IBMAEM
tristate "IBM Active Energy Manager temperature/power sensors and control"
Expand Down
2 changes: 2 additions & 0 deletions trunk/drivers/hwmon/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,9 @@ obj-$(CONFIG_SENSORS_DS1621) += ds1621.o
obj-$(CONFIG_SENSORS_F71805F) += f71805f.o
obj-$(CONFIG_SENSORS_F71882FG) += f71882fg.o
obj-$(CONFIG_SENSORS_F75375S) += f75375s.o
obj-$(CONFIG_SENSORS_FSCHER) += fscher.o
obj-$(CONFIG_SENSORS_FSCHMD) += fschmd.o
obj-$(CONFIG_SENSORS_FSCPOS) += fscpos.o
obj-$(CONFIG_SENSORS_G760A) += g760a.o
obj-$(CONFIG_SENSORS_GL518SM) += gl518sm.o
obj-$(CONFIG_SENSORS_GL520SM) += gl520sm.o
Expand Down
Loading

0 comments on commit c525b67

Please sign in to comment.