Lines Matching refs:par
125 static void ssd1307fb_update_display(struct ssd1307fb_par *par) in ssd1307fb_update_display() argument
128 u8 *vmem = par->info->screen_base; in ssd1307fb_update_display()
131 array = ssd1307fb_alloc_array(par->width * par->height / 8, in ssd1307fb_update_display()
165 for (i = 0; i < (par->height / 8); i++) { in ssd1307fb_update_display()
166 for (j = 0; j < par->width; j++) { in ssd1307fb_update_display()
167 u32 array_idx = i * par->width + j; in ssd1307fb_update_display()
170 u32 page_length = par->width * i; in ssd1307fb_update_display()
171 u32 index = page_length + (par->width * k + j) / 8; in ssd1307fb_update_display()
180 ssd1307fb_write_array(par->client, array, par->width * par->height / 8); in ssd1307fb_update_display()
188 struct ssd1307fb_par *par = info->par; in ssd1307fb_write() local
209 ssd1307fb_update_display(par); in ssd1307fb_write()
218 struct ssd1307fb_par *par = info->par; in ssd1307fb_fillrect() local
220 ssd1307fb_update_display(par); in ssd1307fb_fillrect()
225 struct ssd1307fb_par *par = info->par; in ssd1307fb_copyarea() local
227 ssd1307fb_update_display(par); in ssd1307fb_copyarea()
232 struct ssd1307fb_par *par = info->par; in ssd1307fb_imageblit() local
234 ssd1307fb_update_display(par); in ssd1307fb_imageblit()
249 ssd1307fb_update_display(info->par); in ssd1307fb_deferred_io()
257 static int ssd1307fb_ssd1307_init(struct ssd1307fb_par *par) in ssd1307fb_ssd1307_init() argument
261 par->pwm = pwm_get(&par->client->dev, NULL); in ssd1307fb_ssd1307_init()
262 if (IS_ERR(par->pwm)) { in ssd1307fb_ssd1307_init()
263 dev_err(&par->client->dev, "Could not get PWM from device tree!\n"); in ssd1307fb_ssd1307_init()
264 return PTR_ERR(par->pwm); in ssd1307fb_ssd1307_init()
267 par->pwm_period = pwm_get_period(par->pwm); in ssd1307fb_ssd1307_init()
269 pwm_config(par->pwm, par->pwm_period / 2, par->pwm_period); in ssd1307fb_ssd1307_init()
270 pwm_enable(par->pwm); in ssd1307fb_ssd1307_init()
272 dev_dbg(&par->client->dev, "Using PWM%d with a %dns period.\n", in ssd1307fb_ssd1307_init()
273 par->pwm->pwm, par->pwm_period); in ssd1307fb_ssd1307_init()
276 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SEG_REMAP_ON); in ssd1307fb_ssd1307_init()
281 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_DISPLAY_ON); in ssd1307fb_ssd1307_init()
288 static int ssd1307fb_ssd1307_remove(struct ssd1307fb_par *par) in ssd1307fb_ssd1307_remove() argument
290 pwm_disable(par->pwm); in ssd1307fb_ssd1307_remove()
291 pwm_put(par->pwm); in ssd1307fb_ssd1307_remove()
300 static int ssd1307fb_ssd1306_init(struct ssd1307fb_par *par) in ssd1307fb_ssd1306_init() argument
305 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_CONTRAST); in ssd1307fb_ssd1306_init()
309 ret = ssd1307fb_write_cmd(par->client, 0x7f); in ssd1307fb_ssd1306_init()
314 ret = ssd1307fb_write_cmd(par->client, 0xc8); in ssd1307fb_ssd1306_init()
319 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SEG_REMAP_ON); in ssd1307fb_ssd1306_init()
324 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_MULTIPLEX_RATIO); in ssd1307fb_ssd1306_init()
328 ret = ssd1307fb_write_cmd(par->client, par->height - 1); in ssd1307fb_ssd1306_init()
333 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_DISPLAY_OFFSET); in ssd1307fb_ssd1306_init()
337 ret = ssd1307fb_write_cmd(par->client, 0x20); in ssd1307fb_ssd1306_init()
342 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_CLOCK_FREQ); in ssd1307fb_ssd1306_init()
346 ret = ssd1307fb_write_cmd(par->client, 0xf0); in ssd1307fb_ssd1306_init()
351 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_PRECHARGE_PERIOD); in ssd1307fb_ssd1306_init()
355 ret = ssd1307fb_write_cmd(par->client, 0x22); in ssd1307fb_ssd1306_init()
360 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_COM_PINS_CONFIG); in ssd1307fb_ssd1306_init()
364 ret = ssd1307fb_write_cmd(par->client, 0x22); in ssd1307fb_ssd1306_init()
369 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_VCOMH); in ssd1307fb_ssd1306_init()
373 ret = ssd1307fb_write_cmd(par->client, 0x49); in ssd1307fb_ssd1306_init()
378 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_CHARGE_PUMP); in ssd1307fb_ssd1306_init()
382 ret = ssd1307fb_write_cmd(par->client, 0x14); in ssd1307fb_ssd1306_init()
387 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_ADDRESS_MODE); in ssd1307fb_ssd1306_init()
391 ret = ssd1307fb_write_cmd(par->client, in ssd1307fb_ssd1306_init()
396 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_COL_RANGE); in ssd1307fb_ssd1306_init()
400 ret = ssd1307fb_write_cmd(par->client, 0x0); in ssd1307fb_ssd1306_init()
404 ret = ssd1307fb_write_cmd(par->client, par->width - 1); in ssd1307fb_ssd1306_init()
408 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_PAGE_RANGE); in ssd1307fb_ssd1306_init()
412 ret = ssd1307fb_write_cmd(par->client, 0x0); in ssd1307fb_ssd1306_init()
416 ret = ssd1307fb_write_cmd(par->client, in ssd1307fb_ssd1306_init()
417 par->page_offset + (par->height / 8) - 1); in ssd1307fb_ssd1306_init()
422 ret = ssd1307fb_write_cmd(par->client, SSD1307FB_DISPLAY_ON); in ssd1307fb_ssd1306_init()
452 struct ssd1307fb_par *par; in ssd1307fb_probe() local
467 par = info->par; in ssd1307fb_probe()
468 par->info = info; in ssd1307fb_probe()
469 par->client = client; in ssd1307fb_probe()
471 par->ops = (struct ssd1307fb_ops *)of_match_device(ssd1307fb_of_match, in ssd1307fb_probe()
474 par->reset = of_get_named_gpio(client->dev.of_node, in ssd1307fb_probe()
476 if (!gpio_is_valid(par->reset)) { in ssd1307fb_probe()
481 if (of_property_read_u32(node, "solomon,width", &par->width)) in ssd1307fb_probe()
482 par->width = 96; in ssd1307fb_probe()
484 if (of_property_read_u32(node, "solomon,height", &par->height)) in ssd1307fb_probe()
485 par->height = 16; in ssd1307fb_probe()
487 if (of_property_read_u32(node, "solomon,page-offset", &par->page_offset)) in ssd1307fb_probe()
488 par->page_offset = 1; in ssd1307fb_probe()
490 vmem_size = par->width * par->height / 8; in ssd1307fb_probe()
501 info->fix.line_length = par->width / 8; in ssd1307fb_probe()
505 info->var.xres = par->width; in ssd1307fb_probe()
506 info->var.xres_virtual = par->width; in ssd1307fb_probe()
507 info->var.yres = par->height; in ssd1307fb_probe()
508 info->var.yres_virtual = par->height; in ssd1307fb_probe()
523 ret = devm_gpio_request_one(&client->dev, par->reset, in ssd1307fb_probe()
529 par->reset, ret); in ssd1307fb_probe()
536 gpio_set_value(par->reset, 0); in ssd1307fb_probe()
538 gpio_set_value(par->reset, 1); in ssd1307fb_probe()
541 if (par->ops->init) { in ssd1307fb_probe()
542 ret = par->ops->init(par); in ssd1307fb_probe()
558 if (par->ops->remove) in ssd1307fb_probe()
559 par->ops->remove(par); in ssd1307fb_probe()
570 struct ssd1307fb_par *par = info->par; in ssd1307fb_remove() local
573 if (par->ops->remove) in ssd1307fb_remove()
574 par->ops->remove(par); in ssd1307fb_remove()