What:		/sys/class/regulator/.../state
Date:		April 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Each regulator directory will contain a field called
		state. This holds the regulator output state.

		This will be one of the following strings:

		'enabled'
		'disabled'
		'unknown'

		'enabled' means the regulator output is ON and is supplying
		power to the system.

		'disabled' means the regulator output is OFF and is not
		supplying power to the system..

		'unknown' means software cannot determine the state.

		NOTE: this field can be used in conjunction with microvolts
		and microamps to determine regulator output levels.


What:		/sys/class/regulator/.../type
Date:		April 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Each regulator directory will contain a field called
		type. This holds the regulator type.

		This will be one of the following strings:

		'voltage'
		'current'
		'unknown'

		'voltage' means the regulator output voltage can be controlled
		by software.

		'current' means the regulator output current limit can be
		controlled by software.

		'unknown' means software cannot control either voltage or
		current limit.


What:		/sys/class/regulator/.../microvolts
Date:		April 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Each regulator directory will contain a field called
		microvolts. This holds the regulator output voltage setting
		measured in microvolts (i.e. E-6 Volts).

		NOTE: This value should not be used to determine the regulator
		output voltage level as this value is the same regardless of
		whether the regulator is enabled or disabled.


What:		/sys/class/regulator/.../microamps
Date:		April 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Each regulator directory will contain a field called
		microamps. This holds the regulator output current limit
		setting measured in microamps (i.e. E-6 Amps).

		NOTE: This value should not be used to determine the regulator
		output current level as this value is the same regardless of
		whether the regulator is enabled or disabled.


What:		/sys/class/regulator/.../opmode
Date:		April 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Each regulator directory will contain a field called
		opmode. This holds the regulator operating mode setting.

		The opmode value can be one of the following strings:

		'fast'
		'normal'
		'idle'
		'standby'
		'unknown'

		The modes are described in include/linux/regulator/regulator.h

		NOTE: This value should not be used to determine the regulator
		output operating mode as this value is the same regardless of
		whether the regulator is enabled or disabled.


What:		/sys/class/regulator/.../min_microvolts
Date:		April 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Each regulator directory will contain a field called
		min_microvolts. This holds the minimum safe working regulator
		output voltage setting for this domain measured in microvolts.

		NOTE: this will return the string 'constraint not defined' if
		the power domain has no min microvolts constraint defined by
		platform code.


What:		/sys/class/regulator/.../max_microvolts
Date:		April 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Each regulator directory will contain a field called
		max_microvolts. This holds the maximum safe working regulator
		output voltage setting for this domain measured in microvolts.

		NOTE: this will return the string 'constraint not defined' if
		the power domain has no max microvolts constraint defined by
		platform code.


What:		/sys/class/regulator/.../min_microamps
Date:		April 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Each regulator directory will contain a field called
		min_microamps. This holds the minimum safe working regulator
		output current limit setting for this domain measured in
		microamps.

		NOTE: this will return the string 'constraint not defined' if
		the power domain has no min microamps constraint defined by
		platform code.


What:		/sys/class/regulator/.../max_microamps
Date:		April 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Each regulator directory will contain a field called
		max_microamps. This holds the maximum safe working regulator
		output current limit setting for this domain measured in
		microamps.

		NOTE: this will return the string 'constraint not defined' if
		the power domain has no max microamps constraint defined by
		platform code.


What:		/sys/class/regulator/.../num_users
Date:		April 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Each regulator directory will contain a field called
		num_users. This holds the number of consumer devices that
		have called regulator_enable() on this regulator.


What:		/sys/class/regulator/.../requested_microamps
Date:		April 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Each regulator directory will contain a field called
		requested_microamps. This holds the total requested load
		current in microamps for this regulator from all its consumer
		devices.


What:		/sys/class/regulator/.../parent
Date:		April 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Some regulator directories will contain a link called parent.
		This points to the parent or supply regulator if one exists.

What:		/sys/class/regulator/.../suspend_mem_microvolts
Date:		May 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Each regulator directory will contain a field called
		suspend_mem_microvolts. This holds the regulator output
		voltage setting for this domain measured in microvolts when
		the system is suspended to memory.

		NOTE: this will return the string 'not defined' if
		the power domain has no suspend to memory voltage defined by
		platform code.

What:		/sys/class/regulator/.../suspend_disk_microvolts
Date:		May 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Each regulator directory will contain a field called
		suspend_disk_microvolts. This holds the regulator output
		voltage setting for this domain measured in microvolts when
		the system is suspended to disk.

		NOTE: this will return the string 'not defined' if
		the power domain has no suspend to disk voltage defined by
		platform code.

What:		/sys/class/regulator/.../suspend_standby_microvolts
Date:		May 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Each regulator directory will contain a field called
		suspend_standby_microvolts. This holds the regulator output
		voltage setting for this domain measured in microvolts when
		the system is suspended to standby.

		NOTE: this will return the string 'not defined' if
		the power domain has no suspend to standby voltage defined by
		platform code.

What:		/sys/class/regulator/.../suspend_mem_mode
Date:		May 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Each regulator directory will contain a field called
		suspend_mem_mode. This holds the regulator operating mode
		setting for this domain when the system is suspended to
		memory.

		NOTE: this will return the string 'not defined' if
		the power domain has no suspend to memory mode defined by
		platform code.

What:		/sys/class/regulator/.../suspend_disk_mode
Date:		May 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Each regulator directory will contain a field called
		suspend_disk_mode. This holds the regulator operating mode
		setting for this domain when the system is suspended to disk.

		NOTE: this will return the string 'not defined' if
		the power domain has no suspend to disk mode defined by
		platform code.

What:		/sys/class/regulator/.../suspend_standby_mode
Date:		May 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Each regulator directory will contain a field called
		suspend_standby_mode. This holds the regulator operating mode
		setting for this domain when the system is suspended to
		standby.

		NOTE: this will return the string 'not defined' if
		the power domain has no suspend to standby mode defined by
		platform code.

What:		/sys/class/regulator/.../suspend_mem_state
Date:		May 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Each regulator directory will contain a field called
		suspend_mem_state. This holds the regulator operating state
		when suspended to memory.

		This will be one of the following strings:

		'enabled'
		'disabled'
		'not defined'

What:		/sys/class/regulator/.../suspend_disk_state
Date:		May 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Each regulator directory will contain a field called
		suspend_disk_state. This holds the regulator operating state
		when suspended to disk.

		This will be one of the following strings:

		'enabled'
		'disabled'
		'not defined'

What:		/sys/class/regulator/.../suspend_standby_state
Date:		May 2008
KernelVersion:	2.6.26
Contact:	Liam Girdwood <lg@opensource.wolfsonmicro.com>
Description:
		Each regulator directory will contain a field called
		suspend_standby_state. This holds the regulator operating
		state when suspended to standby.

		This will be one of the following strings:

		'enabled'
		'disabled'
		'not defined'
