Lines Matching refs:par

150 static void ssd1307fb_update_display(struct ssd1307fb_par *par)  in ssd1307fb_update_display()  argument
153 u8 *vmem = par->info->screen_base; in ssd1307fb_update_display()
156 array = ssd1307fb_alloc_array(par->width * par->height / 8, in ssd1307fb_update_display()
190 for (i = 0; i < (par->height / 8); i++) { in ssd1307fb_update_display()
191 for (j = 0; j < par->width; j++) { in ssd1307fb_update_display()
192 u32 array_idx = i * par->width + j; in ssd1307fb_update_display()
195 u32 page_length = par->width * i; in ssd1307fb_update_display()
196 u32 index = page_length + (par->width * k + j) / 8; in ssd1307fb_update_display()
205 ssd1307fb_write_array(par->client, array, par->width * par->height / 8); in ssd1307fb_update_display()
213 struct ssd1307fb_par *par = info->par; in ssd1307fb_write() local
234 ssd1307fb_update_display(par); in ssd1307fb_write()
243 struct ssd1307fb_par *par = info->par; in ssd1307fb_blank() local
246 return ssd1307fb_write_cmd(par->client, SSD1307FB_DISPLAY_OFF); in ssd1307fb_blank()
248 return ssd1307fb_write_cmd(par->client, SSD1307FB_DISPLAY_ON); in ssd1307fb_blank()
253 struct ssd1307fb_par *par = info->par; in ssd1307fb_fillrect() local
255 ssd1307fb_update_display(par); in ssd1307fb_fillrect()
260 struct ssd1307fb_par *par = info->par; in ssd1307fb_copyarea() local
262 ssd1307fb_update_display(par); in ssd1307fb_copyarea()
267 struct ssd1307fb_par *par = info->par; in ssd1307fb_imageblit() local
269 ssd1307fb_update_display(par); in ssd1307fb_imageblit()
285 ssd1307fb_update_display(info->par); in ssd1307fb_deferred_io()
288 static int ssd1307fb_init(struct ssd1307fb_par *par) in ssd1307fb_init() argument
294 if (par->device_info->need_pwm) { in ssd1307fb_init()
295 par->pwm = pwm_get(&par->client->dev, NULL); in ssd1307fb_init()
296 if (IS_ERR(par->pwm)) { in ssd1307fb_init()
297 dev_err(&par->client->dev, "Could not get PWM from device tree!\n"); in ssd1307fb_init()
298 return PTR_ERR(par->pwm); in ssd1307fb_init()
305 pwm_apply_args(par->pwm); in ssd1307fb_init()
307 pwm_get_args(par->pwm, &pargs); in ssd1307fb_init()
309 par->pwm_period = pargs.period; in ssd1307fb_init()
311 pwm_config(par->pwm, par->pwm_period / 2, par->pwm_period); in ssd1307fb_init()
312 pwm_enable(par->pwm); in ssd1307fb_init()
314 dev_dbg(&par->client->dev, "Using PWM%d with a %dns period.\n", in ssd1307fb_init()
315 par->pwm->pwm, par->pwm_period); in ssd1307fb_init()
319 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_CONTRAST); in ssd1307fb_init()
323 ret = ssd1307fb_write_cmd(par->client, par->contrast); in ssd1307fb_init()
328 if (par->seg_remap) { in ssd1307fb_init()
329 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SEG_REMAP_ON); in ssd1307fb_init()
335 com_invdir = 0xc0 | (par->com_invdir & 0x1) << 3; in ssd1307fb_init()
336 ret = ssd1307fb_write_cmd(par->client, com_invdir); in ssd1307fb_init()
341 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_MULTIPLEX_RATIO); in ssd1307fb_init()
345 ret = ssd1307fb_write_cmd(par->client, par->height - 1); in ssd1307fb_init()
350 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_DISPLAY_OFFSET); in ssd1307fb_init()
354 ret = ssd1307fb_write_cmd(par->client, par->com_offset); in ssd1307fb_init()
359 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_CLOCK_FREQ); in ssd1307fb_init()
363 dclk = ((par->dclk_div - 1) & 0xf) | (par->dclk_frq & 0xf) << 4; in ssd1307fb_init()
364 ret = ssd1307fb_write_cmd(par->client, dclk); in ssd1307fb_init()
369 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_PRECHARGE_PERIOD); in ssd1307fb_init()
373 precharge = (par->prechargep1 & 0xf) | (par->prechargep2 & 0xf) << 4; in ssd1307fb_init()
374 ret = ssd1307fb_write_cmd(par->client, precharge); in ssd1307fb_init()
379 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_COM_PINS_CONFIG); in ssd1307fb_init()
383 compins = 0x02 | !(par->com_seq & 0x1) << 4 in ssd1307fb_init()
384 | (par->com_lrremap & 0x1) << 5; in ssd1307fb_init()
385 ret = ssd1307fb_write_cmd(par->client, compins); in ssd1307fb_init()
390 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_VCOMH); in ssd1307fb_init()
394 ret = ssd1307fb_write_cmd(par->client, par->vcomh); in ssd1307fb_init()
399 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_CHARGE_PUMP); in ssd1307fb_init()
403 ret = ssd1307fb_write_cmd(par->client, in ssd1307fb_init()
404 BIT(4) | (par->device_info->need_chargepump ? BIT(2) : 0)); in ssd1307fb_init()
409 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_ADDRESS_MODE); in ssd1307fb_init()
413 ret = ssd1307fb_write_cmd(par->client, in ssd1307fb_init()
419 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_COL_RANGE); in ssd1307fb_init()
423 ret = ssd1307fb_write_cmd(par->client, 0x0); in ssd1307fb_init()
427 ret = ssd1307fb_write_cmd(par->client, par->width - 1); in ssd1307fb_init()
432 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_PAGE_RANGE); in ssd1307fb_init()
436 ret = ssd1307fb_write_cmd(par->client, 0x0); in ssd1307fb_init()
440 ret = ssd1307fb_write_cmd(par->client, in ssd1307fb_init()
441 par->page_offset + (par->height / 8) - 1); in ssd1307fb_init()
446 ssd1307fb_update_display(par); in ssd1307fb_init()
449 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_DISPLAY_ON); in ssd1307fb_init()
458 struct ssd1307fb_par *par = bl_get_data(bdev); in ssd1307fb_update_bl() local
462 par->contrast = brightness; in ssd1307fb_update_bl()
464 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_CONTRAST); in ssd1307fb_update_bl()
467 ret = ssd1307fb_write_cmd(par->client, par->contrast); in ssd1307fb_update_bl()
475 struct ssd1307fb_par *par = bl_get_data(bdev); in ssd1307fb_get_brightness() local
477 return par->contrast; in ssd1307fb_get_brightness()
549 struct ssd1307fb_par *par; in ssd1307fb_probe() local
564 par = info->par; in ssd1307fb_probe()
565 par->info = info; in ssd1307fb_probe()
566 par->client = client; in ssd1307fb_probe()
568 par->device_info = of_device_get_match_data(&client->dev); in ssd1307fb_probe()
570 par->reset = devm_gpiod_get_optional(&client->dev, "reset", in ssd1307fb_probe()
572 if (IS_ERR(par->reset)) { in ssd1307fb_probe()
574 PTR_ERR(par->reset)); in ssd1307fb_probe()
575 ret = PTR_ERR(par->reset); in ssd1307fb_probe()
579 par->vbat_reg = devm_regulator_get_optional(&client->dev, "vbat"); in ssd1307fb_probe()
580 if (IS_ERR(par->vbat_reg)) { in ssd1307fb_probe()
581 ret = PTR_ERR(par->vbat_reg); in ssd1307fb_probe()
583 par->vbat_reg = NULL; in ssd1307fb_probe()
591 if (of_property_read_u32(node, "solomon,width", &par->width)) in ssd1307fb_probe()
592 par->width = 96; in ssd1307fb_probe()
594 if (of_property_read_u32(node, "solomon,height", &par->height)) in ssd1307fb_probe()
595 par->height = 16; in ssd1307fb_probe()
597 if (of_property_read_u32(node, "solomon,page-offset", &par->page_offset)) in ssd1307fb_probe()
598 par->page_offset = 1; in ssd1307fb_probe()
600 if (of_property_read_u32(node, "solomon,com-offset", &par->com_offset)) in ssd1307fb_probe()
601 par->com_offset = 0; in ssd1307fb_probe()
603 if (of_property_read_u32(node, "solomon,prechargep1", &par->prechargep1)) in ssd1307fb_probe()
604 par->prechargep1 = 2; in ssd1307fb_probe()
606 if (of_property_read_u32(node, "solomon,prechargep2", &par->prechargep2)) in ssd1307fb_probe()
607 par->prechargep2 = 2; in ssd1307fb_probe()
609 par->seg_remap = !of_property_read_bool(node, "solomon,segment-no-remap"); in ssd1307fb_probe()
610 par->com_seq = of_property_read_bool(node, "solomon,com-seq"); in ssd1307fb_probe()
611 par->com_lrremap = of_property_read_bool(node, "solomon,com-lrremap"); in ssd1307fb_probe()
612 par->com_invdir = of_property_read_bool(node, "solomon,com-invdir"); in ssd1307fb_probe()
614 par->contrast = 127; in ssd1307fb_probe()
615 par->vcomh = par->device_info->default_vcomh; in ssd1307fb_probe()
618 par->dclk_div = par->device_info->default_dclk_div; in ssd1307fb_probe()
619 par->dclk_frq = par->device_info->default_dclk_frq; in ssd1307fb_probe()
621 vmem_size = par->width * par->height / 8; in ssd1307fb_probe()
644 info->fix.line_length = par->width / 8; in ssd1307fb_probe()
648 info->var.xres = par->width; in ssd1307fb_probe()
649 info->var.xres_virtual = par->width; in ssd1307fb_probe()
650 info->var.yres = par->height; in ssd1307fb_probe()
651 info->var.yres_virtual = par->height; in ssd1307fb_probe()
668 if (par->reset) { in ssd1307fb_probe()
670 gpiod_set_value(par->reset, 0); in ssd1307fb_probe()
672 gpiod_set_value(par->reset, 1); in ssd1307fb_probe()
676 if (par->vbat_reg) { in ssd1307fb_probe()
677 ret = regulator_enable(par->vbat_reg); in ssd1307fb_probe()
685 ret = ssd1307fb_init(par); in ssd1307fb_probe()
696 bl = backlight_device_register(bl_name, &client->dev, par, in ssd1307fb_probe()
705 bl->props.brightness = par->contrast; in ssd1307fb_probe()
716 if (par->device_info->need_pwm) { in ssd1307fb_probe()
717 pwm_disable(par->pwm); in ssd1307fb_probe()
718 pwm_put(par->pwm); in ssd1307fb_probe()
721 if (par->vbat_reg) in ssd1307fb_probe()
722 regulator_disable(par->vbat_reg); in ssd1307fb_probe()
733 struct ssd1307fb_par *par = info->par; in ssd1307fb_remove() local
735 ssd1307fb_write_cmd(par->client, SSD1307FB_DISPLAY_OFF); in ssd1307fb_remove()
740 if (par->device_info->need_pwm) { in ssd1307fb_remove()
741 pwm_disable(par->pwm); in ssd1307fb_remove()
742 pwm_put(par->pwm); in ssd1307fb_remove()