#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_platform.h>
#include <linux/pm_runtime.h>
#include <linux/nvmem-consumer.h>
#include <linux/device.h>
#include <linux/device/bus.h>
#include <linux/debugfs.h>
#include <linux/seq_file.h>
#include <linux/string.h>
#include <linux/sys_soc.h>
#include <linux/slab.h>
#include <linux/platform_device.h>
#define MTK_SOCINFO_ENTRY(_soc_name, _segment_name, _marketing_name, _cell_data1, _cell_data2) …
#define CELL_NOT_USED …
#define MAX_CELLS …
struct mtk_socinfo { … };
struct socinfo_data { … };
static const char *cell_names[MAX_CELLS] = …;
static struct socinfo_data socinfo_data_table[] = …;
static int mtk_socinfo_create_socinfo_node(struct mtk_socinfo *mtk_socinfop)
{ … }
static u32 mtk_socinfo_read_cell(struct device *dev, const char *name)
{ … }
static int mtk_socinfo_get_socinfo_data(struct mtk_socinfo *mtk_socinfop)
{ … }
static int mtk_socinfo_probe(struct platform_device *pdev)
{ … }
static void mtk_socinfo_remove(struct platform_device *pdev)
{ … }
static struct platform_driver mtk_socinfo = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;