Commit Graph

370 Commits

Author SHA1 Message Date
Juerg Haefliger
e95c237d78 hwmon: (dme1737) Add sch311x support
This patch adds support for the SMSC SCH3112, SCH3114, and SCH3116 Super-I/O
chips. These chips feature identical hardware monitoring capabilites with the
expection that some of the fan inputs and pmw outputs don't exist.

The hardware monitoring features of the SCH311x chips can only be accessed via
the ISA bus. The driver therefore registers as a platform driver, if such a
chip is detected.

Signed-off-by: Juerg Haefliger <juergh at gmail.com>
Acked-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-10 22:47:13 -04:00
Mark M. Hoffman
62ee3e10d3 hwmon: (dme1737) Fix some merge conflicts
class_dev -> hwmon_dev

Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-10 22:45:54 -04:00
Juerg Haefliger
67e2f3285e hwmon: (dme1737) group functions logically
Move functions to group them logically. Device and I2C functions go in separate
places. No functional changes (really!).

Signed-off-by: Juerg Haefliger <juergh at gmail.com>
Acked-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-10 22:24:08 -04:00
Juerg Haefliger
b237eb25d8 hwmon: (dme1737) cleanups
This patch cleans up and prepares the dme1737 driver for support of the sch311x
chips. (Almost) no functional changes.

- Replaced whitespaces with tabs.
- Removed empty lines.
- Added _i2c_ to names of functions that are strictly I2C related.
- Added 4 new functions: dme1737_create_files, dme1737_remove_files,
  dme1737_sio_enter, and dme1737_sio_exit.
- Added error messages in case client attach/detach fails.

Signed-off-by: Juerg Haefliger <juergh at gmail.com>
Acked-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-10 22:23:04 -04:00
Darrick J. Wong
57c7c3a0fd hwmon: IBM power meter driver
Add a driver to export IBM PowerExecutive power meter sensors.

Signed-off-by: Darrick J. Wong <djwong@us.ibm.com>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:32 -04:00
Rudolf Marek
c940336b44 hwmon: (coretemp) Add support for Celeron 4xx
This patch adds support for the Celeron 4xx based on Core 2 core.

Signed-off-by: Rudolf Marek <r.marek@assembler.cz>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:32 -04:00
Jean Delvare
889af3d5d9 hwmon: (lm87) Disable VID when it should be
A stupid bit shifting bug caused the VID value to be always exported
even when the hardware is configured for something different.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:32 -04:00
Jean Delvare
7d4a137491 hwmon: (w83781d) Add individual alarm and beep files
The upcoming libsensors 3 needs these individual alarm and beep files.
For the W83781D, this is quirky because this chip has a single alarm
bit for both temp2 and temp3.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Hans de Goede <j.w.r.degoede@hhs.nl>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:32 -04:00
Jean Delvare
90d6619a91 hwmon: VRM is not read from registers
The VRM value is not read from chip registers, so there's no need
to update the device data cache before exporting the VRM value to
user-space.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Hans de Goede <j.w.r.degoede@hhs.nl>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:32 -04:00
Jean Delvare
cc28a610d4 hwmon: (thmc50) Fix a debug message
type_name was used before being set. See why I don't like play-it-safe
variable initializations: they prevent the compiler from warning you
about such mistakes. So fix that as well.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:31 -04:00
Jean Delvare
894c00cf38 hwmon: (thmc50) Don't create temp3 if not enabled
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:31 -04:00
Jean Delvare
c2803b9855 hwmon: (lm87) Add individual alarm files
Add individual alarm files to the lm87 driver. The new libsensors
needs this.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Hans de Goede <j.w.r.degoede@hhs.nl>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:31 -04:00
Jean Delvare
b965d4b7f6 hwmon: (lm87) Fix a division by zero
Missing parentheses in the definition of FAN_FROM_REG cause a division
by zero for a specific register value.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Hans de Goede <j.w.r.degoede@hhs.nl>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:31 -04:00
Jean Delvare
428a7039c5 hwmon: (lm78) Add individual alarm files
Add individual alarm files to the lm78 driver, these are needed by
the next version of libsensors.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Hans de Goede <j.w.r.degoede@hhs.nl>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:31 -04:00
Jean Delvare
69f2f96d9c hwmon: (lm90) Export temperature offset values
Now that we have standard sysfs names to export temperature offset
values, add this feature to the lm90 driver. All supported chips
except the MAX6657, MAX6658 and MAX6659 support it.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Hans de Goede <j.w.r.degoede@hhs.nl>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:31 -04:00
Jean Delvare
dabf375b87 hwmon: Kconfig dependency cleanups
* Drop HWMON from the dependency list of ABITUGURU3 and LM93: this is
  now handled at menu level.
* Make the Abit, Asus and FSC chip drivers depend on X86. These are
  custom chips which can only be found on their respective manufacturer's
  systems, and these manufacturers only do x86 hardware AFAIK.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Hans de Goede <j.w.r.degoede@hhs.nl>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:31 -04:00
Krzysztof Helt
739ba2486e hwmon: (adm1021) individual alarm files
This patch converts the driver to individual alarm files
as required by the new lmsensors library.

Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Acked-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:31 -04:00
Krzysztof Helt
a8d6646e24 hwmon: (adm1021) dynamic sysfs callbacks conversion
This is conversion of the driver  to the dynamic sysfs callbacks.

Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Acked-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:31 -04:00
Krzysztof Helt
bba891c24a hwmon: (thmc50) Fix alarms clearing
This patch make use the interrupt status register instead
of the interrupt status mirror register. Reading of the mirror
register does not clear alarms.

Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:30 -04:00
Jean Delvare
c7f1f7166a hwmon: (it87) Add support for fan4 and fan5
Add support for the IT8716F and IT8718F fan4 and fan5. The late
revisions of the IT8712F have these too but support is harder to add
and nobody asked for it yet, so I didn't include it.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:30 -04:00
Charles Spirakis
6438312367 hwmon: (w83791d) new sysfs beep/alarm methodology
Add new sysfs alarm methodology to w83791d driver

Signed-off-by: Charles Spirakis <bezaur@gmail.com>
Acked-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:30 -04:00
Auke Kok
7b6d1f044d hwmon: (sis5595) re-use s_bridge->revision
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
Acked-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:30 -04:00
Jean Delvare
e7f62303b8 hwmon: (lm93) Use standard names for vid files
The lm93 driver doesn't follow the standard naming convention for its
vid files. Fix this so that libsensors will pick them.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Hans J. Koch <hjk@linutronix.de>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:30 -04:00
Jean Delvare
63f281a6e3 hwmon: (lm85) Let the user set the fan min limit to 0
Trying to set the fan min limit to 0 currently writes 0 to the
register, which is an invalid value. It's read back as -1 and the
alarm flag is raised. Instead we should write 0xffff (maximum
value), which reads back as 0 and no alarm flag is raised.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Juerg Haefliger <juergh at gmail.com>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:30 -04:00
Jean Delvare
5a4d3ef317 hwmon: (lm85) Clean up the handling of additional resolution bits
The way the lm85 driver currently handles the additional resolution
bits some chips have for the voltage and temperature measurements is
quite complex. This is my attempt to make it simpler.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Juerg Haefliger <juergh at gmail.com>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:30 -04:00
Jean Delvare
bf76e9d3c4 hwmon: (lm85) Add individual alarm files
The future libsensors needs these individual alarm and fault files.

Also delete old and unused alarm defines.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Juerg Haefliger <juergh at gmail.com>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:30 -04:00
Jean Delvare
6b9aad2d8a hwmon: (lm85) Export in5, in6 and in7 voltage channels
The SMSC EMC6D100 supports 3 additional voltage channels. The lm85
driver reads the register values for these, but doesn't create the
corresponding sysfs files, so the user can't read the values nor write
the limits. Create the missing sysfs files.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Juerg Haefliger <juergh at gmail.com>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:30 -04:00
Jean Delvare
b353a487b9 hwmon: (lm85) Use dynamic sysfs callbacks
This lets us get rid of macro-generated functions and shrinks the
driver size by about 10%. I used a new style suggested by Mark M.
Hoffman to retrieve the channel number. Instead of:

	struct sensor_device_attribute *sda = to_sensor_dev_attr(attr);
	int nr = sda->index;

I do:

	int nr = to_sensor_dev_attr(attr)->index;

This looks better, and even allows the compiler to do some minor
optimizations.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:30 -04:00
Tony Jones
1beeffe433 hwmon: Convert from class_device to device
Convert from class_device to device for hwmon_device_register/unregister

Signed-off-by: Tony Jones <tonyj@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:30 -04:00
Satyam Sharma
59a35bafb2 hwmon: (coretemp) Remove bogus __cpuinitdata etc cleanup
The CPU hotplug notifier_block coretemp_cpu_notifier is already defined
inside an #ifdef HOTPLUG_CPU, therefore marking it as __cpuinitdata is
quite a pointless thing to do.

Also, remove duplicate prototype of function coretemp_update_device()
at the top of this file (another one already exists barely 10 lines
above this one :-)

Signed-off-by: Satyam Sharma <satyam@infradead.org>
Acked-by: Rudolf Marek <r.marek@assembler.cz>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:29 -04:00
Riku Voipio
84f1e44296 hwmon: Add f75375s driver
Add support for Fintek F75375S/SP and F75373.

Signed-off-by: Riku Voipio <riku.voipio@movial.fi>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:29 -04:00
Jean Delvare
8477d02689 hwmon: (smsc47m1) No confusing debugging messages
It's confusing to display debugging messages for fan3 and pwm3 for
chips which don't have them.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:29 -04:00
Jean Delvare
67f921d164 hwmon: (lm70) Add a name attribute
Add a name attribute to the lm70 devices. This is required for
libsensors to recognize them.

Also drop the "+" before the temperature value, even though it did
not cause problems to libsensors, other hardware monitoring drivers
don't print it, so it's more consistent that way.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Hans de Goede <j.w.r.degoede@hhs.nl>
Acked-by: Kaiwan <kaiwan@designergraphix.com>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:29 -04:00
Jean Delvare
b26f933092 hwmon: Don't export thermistor beta
Deprecate the use of thermistor beta values as thermal sensor types.
No driver supports changing the beta value anyway.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Hans de Goede <j.w.r.degoede@hhs.nl>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:29 -04:00
Christian Hohnstaedt
5bfedac045 hwmon: Allow writing of negative trigger temperatures
- replace differing temperature variable types by long
- use strtol() instead of strtoul() for conversion

Signed-off-by: Christian Hohnstaedt <chohnstaedt@innominate.com>
Acked-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:29 -04:00
Krzysztof Helt
dcf3b5fb7f hwmon: (thmc50) add individual alarm & fault files
This patch adds individual alarm and fault files to
the thmc50 driver. These sysfs entries are required
for a new libsensors library.

Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Acked-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:29 -04:00
Darrick J. Wong
6f9703d0be hwmon: add support for adt7470
New driver to expose temperature and fan controls attached to Analog
Devices ADT7470 hwmon chips.

Signed-off-by: Darrick J. Wong <djwong@us.ibm.com>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:29 -04:00
Mark M. Hoffman
8afb10490b hwmon: (f71882fg) trivial whitespace cleanup
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:29 -04:00
Hans de Goede
45fb366940 hwmon: add support for Fintek F71882FG and F71883FG
This is the second version of a new driver for the hardware monitoring features
of the Fintek F71882FG and F71883FG Super-I/O chips. This version has several
small fixes for flaws discovered during the review of the first version.

This version of the driver does not support the pwm part of these chips (yet).
I'll first design a sysfs api for this and post that for discussion, and then
implement pwm support as an incremental patch over this one.

This driver supports all sensors of this chip, except for the vid inputs. The
vid inputs are somewhat documented in the datasheet, but I know nothing about
vid/vrm stuff. Help with this would be much appreciated.

Signed-off-by: Hans de Goede <j.w.r.degoede@hhs.nl>
Acked-by: Darrick J. Wong <djwong@us.ibm.com>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:29 -04:00
Jean Delvare
9cab0217f3 hwmon: (f71805f) List the F71806F/FG as supported
The Fintek F71806F/FG is compatible with the F71872F/FG, so it is
already supported by the f71805f hardware monitoring driver. In fact,
both chips have the same chip ID, so the driver can't even
differentiate between them.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Hans de Goede <j.w.r.degoede@hhs.nl>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:28 -04:00
Gong Jun
43e61a2d7e hwmon: (w83792d) Add individual alarm files
w83792d: add individual alarm files for the new libsensors.

Signed-off-by: Gong Jun <jgong@winbond.com>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:28 -04:00
Krzysztof Helt
c83c41e4e6 hwmon: adm1021 clean ups
This patch provides some coding standard cleanups and general code improvements
(more debug info, signed values for temperatures, changed names of ADM1023
regs, removed read/write_value functions).

Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Acked-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-10-09 22:56:28 -04:00
Jean Delvare
15bde2f1a8 hwmon: End of I/O region off-by-one
Fix an off-by-one error in the I/O region declaration of two
hardware monitoring drivers (lm78 and w83781d.) We were requesting
one extra port at the end of the region.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-09-09 10:38:37 -04:00
Jean Delvare
68a50b5678 hwmon: (smsc47m1) restore missing name attribute
The smsc47m1 driver no longer creates the name attribute used by
libsensors to identify chip types. It was lost during the conversion
to a platform driver. I was fooled by the fact that we do have a
group with all attributes, but only to delete them all at once. The
group is not used to create the attributes, so we have to explicitly
create the name attribute.

This fixes lm-sensors ticket #2236:
http://lm-sensors.org/ticket/2236

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-08-12 14:39:44 -04:00
Jean Delvare
0956895aa6 hwmon: (w83627ehf) don't assume bank 0
Don't assume that the default bank is 0. For one thing, we don't even
set it to 0 when the driver is loaded, so the initial state might be
different. For another, something (say, the BIOS) might access the chip
and leave with the bank set to something different, so assuming that
the bank value is 0 is not safe.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-08-12 14:38:31 -04:00
Mark M. Hoffman
ea7be66c44 hwmon: (w83627ehf) read fan_div values during probe
This patch forces the driver to read the fan divider values during early init.
Otherwise, a call to store_fan_min() could access uninitialized variables.

Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
2007-08-12 14:37:19 -04:00
Mark M. Hoffman
393cdad626 hwmon: fix w83781d temp sensor type setting
Commit 348753379a introduced a regression that
caused temp2 and temp3 sensor type settings to be written to temp1 instead.
The result is that temp sensor readings could be way off.

Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-08-11 14:22:57 -04:00
Hans de Goede
5cccf4a1a2 hwmon: fscher read control bugfix
Here is a small fscher bugfix for 2.6.23 merging, lifted from my other fscher
work, as requested by Jean. The current driver has a control sysfs attribute,
which shows the contents of the control register, but the underlying
global_control value in the data structure currently never gets filled with
the actual contents of this register.

Signed-off-by: Hans de Goede <j.w.r.degoede@hhs.nl>
Acked-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-07-30 21:14:00 -04:00
Adrian Bunk
4688902dab hwmon: make abituguru3_read_increment_offset() static
abituguru3_read_increment_offset() can become static.

Signed-off-by: Adrian Bunk <bunk@stusta.de>
Acked-by: Hans de Goede <j.w.r.degoede@hhs.nl>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-07-30 21:11:21 -04:00
Guillaume Chazarain
f5744e3775 hwmon: Fix regression caused by typo in lm90.c
The commit http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=32c82a934759b2c9939c9e25865c2d7d1204b9e8
broke lm90 for my (Asus V6VA) laptop.

Before 2.6.23-rc1 and with the following patch, I get:

[g ~]$ sensors
max6657-i2c-0-4c
Adapter: SMBus I801 adapter at 0400
M/B Temp:    +64°C  (low  =    +0°C, high =  +127°C)
CPU Temp:  +78.9°C  (low  = +73.2°C, high = +88.2°C)
M/B Crit:   +105°C  (hyst =   +95°C)
CPU Crit:   +105°C  (hyst =   +95°C)

Which regressed into:

[g ~]$ sensors
No sensors found!
Make sure you loaded all the kernel drivers you need.
Try sensors-detect to find out which these are.
zsh: 2701 exit 1     sensors

and dmesg contains:

i2c-adapter i2c-0: Unsupported chip (man_id=0x4D, chip_id=0x4D).

It seems to be a typo, as address 0X4F is mentionned nowhere else in the file,
and my chip is actually at 0x4C.

Signed-off-by: Guillaume Chazarain <guichaz@yahoo.fr>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
2007-07-30 21:10:34 -04:00