23 #include <linux/slab.h>
32 static bool sr_enable_on_init;
36 struct omap_sr_data *sr_data)
38 struct omap_sr_nvalue_table *nvalue_table;
41 sr_data->nvalue_count = 0;
42 sr_data->nvalue_table =
NULL;
44 while (volt_data[count].volt_nominal)
47 nvalue_table = kzalloc(
sizeof(
struct omap_sr_nvalue_table)*count,
51 pr_err(
"OMAP: SmartReflex: cannot allocate memory for n-value table\n");
55 for (i = 0, j = 0; i <
count; i++) {
84 nvalue_table[
j].nvalue =
v;
92 sr_data->nvalue_table = nvalue_table;
93 sr_data->nvalue_count =
j;
98 struct omap_sr_data *sr_data;
101 struct omap_smartreflex_dev_attr *sr_dev_attr;
102 char *
name =
"smartreflex";
105 sr_data = kzalloc(
sizeof(
struct omap_sr_data),
GFP_KERNEL);
107 pr_err(
"%s: Unable to allocate memory for %s sr_data\n",
112 sr_dev_attr = (
struct omap_smartreflex_dev_attr *)oh->
dev_attr;
113 if (!sr_dev_attr || !sr_dev_attr->sensor_voltdm_name) {
114 pr_err(
"%s: No voltage domain specified for %s. Cannot initialize\n",
119 sr_data->name = oh->
name;
120 sr_data->ip_type = oh->
class->rev;
121 sr_data->senn_mod = 0x1;
122 sr_data->senp_mod = 0x1;
124 sr_data->voltdm =
voltdm_lookup(sr_dev_attr->sensor_voltdm_name);
125 if (!sr_data->voltdm) {
126 pr_err(
"%s: Unable to get voltage domain pointer for VDD %s\n",
127 __func__, sr_dev_attr->sensor_voltdm_name);
133 pr_err(
"%s: No Voltage table registered for VDD%d\n",
138 sr_set_nvalues(volt_data, sr_data);
140 sr_data->enable_on_init = sr_enable_on_init;
145 pr_warning(
"%s: Could not build omap_device for %s: %s.\n\n",
146 __func__, name, oh->
name);
159 sr_enable_on_init =
true;