#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/power_supply.h>
#include <linux/regmap.h>
#include <linux/sched.h>
#include <linux/slab.h>
#include <linux/workqueue.h>
enum { … };
#define EC_DATA(_reg, _psp) …
static const struct battery_register { … } ec_data[] = …;
static const enum power_supply_property a500_battery_properties[] = …;
struct a500_battery { … };
static bool a500_battery_update_capacity(struct a500_battery *bat)
{ … }
static int a500_battery_get_status(struct a500_battery *bat)
{ … }
static void a500_battery_unit_adjustment(struct device *dev,
enum power_supply_property psp,
union power_supply_propval *val)
{ … }
static int a500_battery_get_ec_data_index(struct device *dev,
enum power_supply_property psp)
{ … }
static int a500_battery_get_property(struct power_supply *psy,
enum power_supply_property psp,
union power_supply_propval *val)
{ … }
static void a500_battery_poll_work(struct work_struct *work)
{ … }
static const struct power_supply_desc a500_battery_desc = …;
static int a500_battery_probe(struct platform_device *pdev)
{ … }
static void a500_battery_remove(struct platform_device *pdev)
{ … }
static int __maybe_unused a500_battery_suspend(struct device *dev)
{ … }
static int __maybe_unused a500_battery_resume(struct device *dev)
{ … }
static SIMPLE_DEV_PM_OPS(a500_battery_pm_ops,
a500_battery_suspend, a500_battery_resume);
static struct platform_driver a500_battery_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_ALIAS(…) …;
MODULE_LICENSE(…) …;