162306a36Sopenharmony_ci========================== 262306a36Sopenharmony_ciRegulator Driver Interface 362306a36Sopenharmony_ci========================== 462306a36Sopenharmony_ci 562306a36Sopenharmony_ciThe regulator driver interface is relatively simple and designed to allow 662306a36Sopenharmony_ciregulator drivers to register their services with the core framework. 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci 962306a36Sopenharmony_ciRegistration 1062306a36Sopenharmony_ci============ 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ciDrivers can register a regulator by calling:: 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc, 1562306a36Sopenharmony_ci const struct regulator_config *config); 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ciThis will register the regulator's capabilities and operations to the regulator 1862306a36Sopenharmony_cicore. 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ciRegulators can be unregistered by calling:: 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci void regulator_unregister(struct regulator_dev *rdev); 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ciRegulator Events 2662306a36Sopenharmony_ci================ 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ciRegulators can send events (e.g. overtemperature, undervoltage, etc) to 2962306a36Sopenharmony_ciconsumer drivers by calling:: 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci int regulator_notifier_call_chain(struct regulator_dev *rdev, 3262306a36Sopenharmony_ci unsigned long event, void *data); 33