• Home
  • Raw
  • Download

Lines Matching +full:led +full:- +full:sources

35  * @leden		: initial LED string enables, upper bit is global on/off
59 #define ARCXCNN_CMD_OVP_MASK 0x0C /* --- Over Voltage Threshold */
73 #define ARCXCNN_LEDEN 0x06 /* LED Enable Register */
74 #define ARCXCNN_LEDEN_ISETEXT 0x80 /* Full-scale current set extern */
75 #define ARCXCNN_LEDEN_MASK 0x3F /* LED string enables mask */
76 #define ARCXCNN_LEDEN_BITS 0x06 /* Bits of LED string enables */
84 #define ARCXCNN_WLED_ISET_LSB 0x07 /* LED ISET LSB (in upper nibble) */
86 #define ARCXCNN_WLED_ISET_MSB 0x08 /* LED ISET MSB (8 bits) */
110 ret = i2c_smbus_read_byte_data(lp->client, reg); in arcxcnn_update_field()
112 dev_err(lp->dev, "failed to read 0x%.2x\n", reg); in arcxcnn_update_field()
120 return i2c_smbus_write_byte_data(lp->client, reg, tmp); in arcxcnn_update_field()
130 ret = i2c_smbus_write_byte_data(lp->client, in arcxcnn_set_brightness()
137 return i2c_smbus_write_byte_data(lp->client, in arcxcnn_set_brightness()
144 u32 brightness = bl->props.brightness; in arcxcnn_bl_update_status()
147 if (bl->props.state & (BL_CORE_SUSPENDED | BL_CORE_FBBLANK)) in arcxcnn_bl_update_status()
154 /* set power-on/off/save modes */ in arcxcnn_bl_update_status()
156 (bl->props.power == 0) ? 0 : ARCXCNN_CMD_STDBY); in arcxcnn_bl_update_status()
167 const char *name = lp->pdata->name ? : "arctic_bl"; in arcxcnn_backlight_register()
169 props = devm_kzalloc(lp->dev, sizeof(*props), GFP_KERNEL); in arcxcnn_backlight_register()
171 return -ENOMEM; in arcxcnn_backlight_register()
173 props->type = BACKLIGHT_PLATFORM; in arcxcnn_backlight_register()
174 props->max_brightness = MAX_BRIGHTNESS; in arcxcnn_backlight_register()
176 if (lp->pdata->initial_brightness > props->max_brightness) in arcxcnn_backlight_register()
177 lp->pdata->initial_brightness = props->max_brightness; in arcxcnn_backlight_register()
179 props->brightness = lp->pdata->initial_brightness; in arcxcnn_backlight_register()
181 lp->bl = devm_backlight_device_register(lp->dev, name, lp->dev, lp, in arcxcnn_backlight_register()
183 return PTR_ERR_OR_ZERO(lp->bl); in arcxcnn_backlight_register()
188 struct device *dev = lp->dev; in arcxcnn_parse_dt()
189 struct device_node *node = dev->of_node; in arcxcnn_parse_dt()
190 u32 prog_val, num_entry, entry, sources[ARCXCNN_LEDEN_BITS]; in arcxcnn_parse_dt() local
197 ret = of_property_read_string(node, "label", &lp->pdata->name); in arcxcnn_parse_dt()
199 lp->pdata->name = NULL; in arcxcnn_parse_dt()
201 ret = of_property_read_u32(node, "default-brightness", &prog_val); in arcxcnn_parse_dt()
203 lp->pdata->initial_brightness = prog_val; in arcxcnn_parse_dt()
205 ret = of_property_read_u32(node, "arc,led-config-0", &prog_val); in arcxcnn_parse_dt()
207 lp->pdata->led_config_0 = (u8)prog_val; in arcxcnn_parse_dt()
209 ret = of_property_read_u32(node, "arc,led-config-1", &prog_val); in arcxcnn_parse_dt()
211 lp->pdata->led_config_1 = (u8)prog_val; in arcxcnn_parse_dt()
213 ret = of_property_read_u32(node, "arc,dim-freq", &prog_val); in arcxcnn_parse_dt()
215 lp->pdata->dim_freq = (u8)prog_val; in arcxcnn_parse_dt()
217 ret = of_property_read_u32(node, "arc,comp-config", &prog_val); in arcxcnn_parse_dt()
219 lp->pdata->comp_config = (u8)prog_val; in arcxcnn_parse_dt()
221 ret = of_property_read_u32(node, "arc,filter-config", &prog_val); in arcxcnn_parse_dt()
223 lp->pdata->filter_config = (u8)prog_val; in arcxcnn_parse_dt()
225 ret = of_property_read_u32(node, "arc,trim-config", &prog_val); in arcxcnn_parse_dt()
227 lp->pdata->trim_config = (u8)prog_val; in arcxcnn_parse_dt()
229 ret = of_property_count_u32_elems(node, "led-sources"); in arcxcnn_parse_dt()
231 lp->pdata->leden = ARCXCNN_LEDEN_MASK; /* all on is default */ in arcxcnn_parse_dt()
237 ret = of_property_read_u32_array(node, "led-sources", sources, in arcxcnn_parse_dt()
240 dev_err(dev, "led-sources node is invalid.\n"); in arcxcnn_parse_dt()
244 lp->pdata->leden = 0; in arcxcnn_parse_dt()
246 /* for each enable in source, set bit in led enable */ in arcxcnn_parse_dt()
248 u8 onbit = 1 << sources[entry]; in arcxcnn_parse_dt()
250 lp->pdata->leden |= onbit; in arcxcnn_parse_dt()
260 if (!i2c_check_functionality(cl->adapter, I2C_FUNC_SMBUS_BYTE_DATA)) in arcxcnn_probe()
261 return -EIO; in arcxcnn_probe()
263 lp = devm_kzalloc(&cl->dev, sizeof(*lp), GFP_KERNEL); in arcxcnn_probe()
265 return -ENOMEM; in arcxcnn_probe()
267 lp->client = cl; in arcxcnn_probe()
268 lp->dev = &cl->dev; in arcxcnn_probe()
269 lp->pdata = dev_get_platdata(&cl->dev); in arcxcnn_probe()
272 ret = i2c_smbus_write_byte_data(lp->client, in arcxcnn_probe()
277 if (!lp->pdata) { in arcxcnn_probe()
278 lp->pdata = devm_kzalloc(lp->dev, in arcxcnn_probe()
279 sizeof(*lp->pdata), GFP_KERNEL); in arcxcnn_probe()
280 if (!lp->pdata) in arcxcnn_probe()
281 return -ENOMEM; in arcxcnn_probe()
283 /* Setup defaults based on power-on defaults */ in arcxcnn_probe()
284 lp->pdata->name = NULL; in arcxcnn_probe()
285 lp->pdata->initial_brightness = INIT_BRIGHT; in arcxcnn_probe()
286 lp->pdata->leden = ARCXCNN_LEDEN_MASK; in arcxcnn_probe()
288 lp->pdata->led_config_0 = i2c_smbus_read_byte_data( in arcxcnn_probe()
289 lp->client, ARCXCNN_FADECTRL); in arcxcnn_probe()
291 lp->pdata->led_config_1 = i2c_smbus_read_byte_data( in arcxcnn_probe()
292 lp->client, ARCXCNN_ILED_CONFIG); in arcxcnn_probe()
294 lp->pdata->led_config_1 |= ARCXCNN_ILED_DIM_INT; in arcxcnn_probe()
296 lp->pdata->dim_freq = i2c_smbus_read_byte_data( in arcxcnn_probe()
297 lp->client, ARCXCNN_DIMFREQ); in arcxcnn_probe()
299 lp->pdata->comp_config = i2c_smbus_read_byte_data( in arcxcnn_probe()
300 lp->client, ARCXCNN_COMP_CONFIG); in arcxcnn_probe()
302 lp->pdata->filter_config = i2c_smbus_read_byte_data( in arcxcnn_probe()
303 lp->client, ARCXCNN_FILT_CONFIG); in arcxcnn_probe()
305 lp->pdata->trim_config = i2c_smbus_read_byte_data( in arcxcnn_probe()
306 lp->client, ARCXCNN_IMAXTUNE); in arcxcnn_probe()
315 if (lp->pdata->initial_brightness > MAX_BRIGHTNESS) in arcxcnn_probe()
316 lp->pdata->initial_brightness = MAX_BRIGHTNESS; in arcxcnn_probe()
319 ret = arcxcnn_set_brightness(lp, lp->pdata->initial_brightness); in arcxcnn_probe()
324 ret = i2c_smbus_write_byte_data(lp->client, ARCXCNN_FADECTRL, in arcxcnn_probe()
325 lp->pdata->led_config_0); in arcxcnn_probe()
329 ret = i2c_smbus_write_byte_data(lp->client, ARCXCNN_ILED_CONFIG, in arcxcnn_probe()
330 lp->pdata->led_config_1); in arcxcnn_probe()
334 ret = i2c_smbus_write_byte_data(lp->client, ARCXCNN_DIMFREQ, in arcxcnn_probe()
335 lp->pdata->dim_freq); in arcxcnn_probe()
339 ret = i2c_smbus_write_byte_data(lp->client, ARCXCNN_COMP_CONFIG, in arcxcnn_probe()
340 lp->pdata->comp_config); in arcxcnn_probe()
344 ret = i2c_smbus_write_byte_data(lp->client, ARCXCNN_FILT_CONFIG, in arcxcnn_probe()
345 lp->pdata->filter_config); in arcxcnn_probe()
349 ret = i2c_smbus_write_byte_data(lp->client, ARCXCNN_IMAXTUNE, in arcxcnn_probe()
350 lp->pdata->trim_config); in arcxcnn_probe()
354 /* set initial LED Enables */ in arcxcnn_probe()
356 ARCXCNN_LEDEN_MASK, lp->pdata->leden); in arcxcnn_probe()
362 backlight_update_status(lp->bl); in arcxcnn_probe()
367 dev_err(lp->dev, in arcxcnn_probe()
371 dev_err(lp->dev, in arcxcnn_probe()
381 i2c_smbus_write_byte_data(lp->client, in arcxcnn_remove()
384 i2c_smbus_write_byte_data(lp->client, in arcxcnn_remove()
387 lp->bl->props.brightness = 0; in arcxcnn_remove()
389 backlight_update_status(lp->bl); in arcxcnn_remove()