• Home
  • Raw
  • Download

Lines Matching refs:ctx

34 	void (*update)(struct img_ascii_lcd_ctx *ctx);
71 static void boston_update(struct img_ascii_lcd_ctx *ctx) in boston_update() argument
76 val = *((u64 *)&ctx->curr[0]); in boston_update()
77 __raw_writeq(val, ctx->base); in boston_update()
79 val = *((u32 *)&ctx->curr[0]); in boston_update()
80 __raw_writel(val, ctx->base); in boston_update()
81 val = *((u32 *)&ctx->curr[4]); in boston_update()
82 __raw_writel(val, ctx->base + 4); in boston_update()
97 static void malta_update(struct img_ascii_lcd_ctx *ctx) in malta_update() argument
102 for (i = 0; i < ctx->cfg->num_chars; i++) { in malta_update()
103 err = regmap_write(ctx->regmap, in malta_update()
104 ctx->offset + (i * 8), ctx->curr[i]); in malta_update()
133 static int sead3_wait_sm_idle(struct img_ascii_lcd_ctx *ctx) in sead3_wait_sm_idle() argument
139 err = regmap_read(ctx->regmap, in sead3_wait_sm_idle()
140 ctx->offset + SEAD3_REG_CPLD_STATUS, in sead3_wait_sm_idle()
150 static int sead3_wait_lcd_idle(struct img_ascii_lcd_ctx *ctx) in sead3_wait_lcd_idle() argument
155 err = sead3_wait_sm_idle(ctx); in sead3_wait_lcd_idle()
160 err = regmap_read(ctx->regmap, in sead3_wait_lcd_idle()
161 ctx->offset + SEAD3_REG_LCD_CTRL, in sead3_wait_lcd_idle()
166 err = sead3_wait_sm_idle(ctx); in sead3_wait_lcd_idle()
170 err = regmap_read(ctx->regmap, in sead3_wait_lcd_idle()
171 ctx->offset + SEAD3_REG_CPLD_DATA, in sead3_wait_lcd_idle()
180 static void sead3_update(struct img_ascii_lcd_ctx *ctx) in sead3_update() argument
185 for (i = 0; i < ctx->cfg->num_chars; i++) { in sead3_update()
186 err = sead3_wait_lcd_idle(ctx); in sead3_update()
190 err = regmap_write(ctx->regmap, in sead3_update()
191 ctx->offset + SEAD3_REG_LCD_CTRL, in sead3_update()
196 err = sead3_wait_lcd_idle(ctx); in sead3_update()
200 err = regmap_write(ctx->regmap, in sead3_update()
201 ctx->offset + SEAD3_REG_LCD_DATA, in sead3_update()
202 ctx->curr[i]); in sead3_update()
233 struct img_ascii_lcd_ctx *ctx = (struct img_ascii_lcd_ctx *)arg; in img_ascii_lcd_scroll() local
234 unsigned int i, ch = ctx->scroll_pos; in img_ascii_lcd_scroll()
235 unsigned int num_chars = ctx->cfg->num_chars; in img_ascii_lcd_scroll()
240 for (; i < num_chars && ch < ctx->message_len; i++, ch++) in img_ascii_lcd_scroll()
241 ctx->curr[i] = ctx->message[ch]; in img_ascii_lcd_scroll()
248 ctx->cfg->update(ctx); in img_ascii_lcd_scroll()
251 ctx->scroll_pos++; in img_ascii_lcd_scroll()
252 ctx->scroll_pos %= ctx->message_len; in img_ascii_lcd_scroll()
255 if (ctx->message_len > ctx->cfg->num_chars) in img_ascii_lcd_scroll()
256 mod_timer(&ctx->timer, jiffies + ctx->scroll_rate); in img_ascii_lcd_scroll()
271 static int img_ascii_lcd_display(struct img_ascii_lcd_ctx *ctx, in img_ascii_lcd_display() argument
277 del_timer_sync(&ctx->timer); in img_ascii_lcd_display()
286 new_msg = devm_kmalloc(&ctx->pdev->dev, count + 1, GFP_KERNEL); in img_ascii_lcd_display()
293 if (ctx->message) in img_ascii_lcd_display()
294 devm_kfree(&ctx->pdev->dev, ctx->message); in img_ascii_lcd_display()
296 ctx->message = new_msg; in img_ascii_lcd_display()
297 ctx->message_len = count; in img_ascii_lcd_display()
298 ctx->scroll_pos = 0; in img_ascii_lcd_display()
301 img_ascii_lcd_scroll((unsigned long)ctx); in img_ascii_lcd_display()
320 struct img_ascii_lcd_ctx *ctx = dev_get_drvdata(dev); in message_show() local
322 return sprintf(buf, "%s\n", ctx->message); in message_show()
339 struct img_ascii_lcd_ctx *ctx = dev_get_drvdata(dev); in message_store() local
342 err = img_ascii_lcd_display(ctx, buf, count); in message_store()
361 struct img_ascii_lcd_ctx *ctx; in img_ascii_lcd_probe() local
370 ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx) + cfg->num_chars, in img_ascii_lcd_probe()
372 if (!ctx) in img_ascii_lcd_probe()
376 ctx->regmap = syscon_node_to_regmap(pdev->dev.parent->of_node); in img_ascii_lcd_probe()
377 if (IS_ERR(ctx->regmap)) in img_ascii_lcd_probe()
378 return PTR_ERR(ctx->regmap); in img_ascii_lcd_probe()
381 &ctx->offset)) in img_ascii_lcd_probe()
385 ctx->base = devm_ioremap_resource(&pdev->dev, res); in img_ascii_lcd_probe()
386 if (IS_ERR(ctx->base)) in img_ascii_lcd_probe()
387 return PTR_ERR(ctx->base); in img_ascii_lcd_probe()
390 ctx->pdev = pdev; in img_ascii_lcd_probe()
391 ctx->cfg = cfg; in img_ascii_lcd_probe()
392 ctx->message = NULL; in img_ascii_lcd_probe()
393 ctx->scroll_pos = 0; in img_ascii_lcd_probe()
394 ctx->scroll_rate = HZ / 2; in img_ascii_lcd_probe()
397 init_timer(&ctx->timer); in img_ascii_lcd_probe()
398 ctx->timer.function = img_ascii_lcd_scroll; in img_ascii_lcd_probe()
399 ctx->timer.data = (unsigned long)ctx; in img_ascii_lcd_probe()
401 platform_set_drvdata(pdev, ctx); in img_ascii_lcd_probe()
404 err = img_ascii_lcd_display(ctx, "Linux " UTS_RELEASE " ", -1); in img_ascii_lcd_probe()
414 del_timer_sync(&ctx->timer); in img_ascii_lcd_probe()
429 struct img_ascii_lcd_ctx *ctx = platform_get_drvdata(pdev); in img_ascii_lcd_remove() local
432 del_timer_sync(&ctx->timer); in img_ascii_lcd_remove()