Regulator Driver Interface
==========================

The regulator driver interface is relatively simple and designed to allow
regulator drivers to register their services with the core framework.


Registration
============

Drivers can register a regulator by calling :-

struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc,
					 const struct regulator_config *config);

This will register the regulators capabilities and operations to the regulator
core.

Regulators can be unregistered by calling :-

void regulator_unregister(struct regulator_dev *rdev);


Regulator Events
================
Regulators can send events (e.g. over temp, under voltage, etc) to consumer
drivers by calling :-

int regulator_notifier_call_chain(struct regulator_dev *rdev,
				  unsigned long event, void *data);
