display: kernel-driver: rework color-to-bw conversion
This commit is contained in:
parent
f0f671c6fb
commit
1e4ba2c739
@ -8,8 +8,7 @@
|
|||||||
#include <linux/gpio/consumer.h>
|
#include <linux/gpio/consumer.h>
|
||||||
#include <linux/fb.h>
|
#include <linux/fb.h>
|
||||||
|
|
||||||
#define BPP 8 // 8
|
#define BPP 16
|
||||||
#define PIX_THRESHOLD 0
|
|
||||||
|
|
||||||
#define LMGE_GPIO 100
|
#define LMGE_GPIO 100
|
||||||
#define LMGE_OTHER 99
|
#define LMGE_OTHER 99
|
||||||
@ -21,9 +20,9 @@ MODULE_AUTHOR("Markus Koch");
|
|||||||
MODULE_DESCRIPTION("lmg6202ulyt display driver");
|
MODULE_DESCRIPTION("lmg6202ulyt display driver");
|
||||||
MODULE_VERSION("0.1");
|
MODULE_VERSION("0.1");
|
||||||
|
|
||||||
static char *testparam = "param";
|
static int pix_threshold = 0;
|
||||||
module_param(testparam, charp, S_IRUGO);
|
module_param(pix_threshold, int, 0);
|
||||||
MODULE_PARM_DESC(testparam, "A test parameter");
|
MODULE_PARM_DESC(pix_threshold, "Black / White threshold. 0-255");
|
||||||
|
|
||||||
static struct of_device_id lmg6202ulyt_dt_ids[] = {
|
static struct of_device_id lmg6202ulyt_dt_ids[] = {
|
||||||
{ .compatible = "hitachi,lmg6202ulyt", },
|
{ .compatible = "hitachi,lmg6202ulyt", },
|
||||||
@ -122,7 +121,9 @@ static int lmg6202ulyt_init_fix(struct lmg6202ulyt_priv *priv)
|
|||||||
else
|
else
|
||||||
fix->visual = FB_VISUAL_TRUECOLOR;
|
fix->visual = FB_VISUAL_TRUECOLOR;
|
||||||
|
|
||||||
printk(KERN_INFO "lmg6202ulyt: Using %d bpp.\n", var->bits_per_pixel);
|
printk(KERN_INFO "lmg6202ulyt: Using %d bpp (%s).\n",
|
||||||
|
var->bits_per_pixel,
|
||||||
|
(var->grayscale ? "grayscale" : "truecolor"));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -209,6 +210,7 @@ void lmg6202ulyt_deferred_io(struct fb_info *info, struct list_head *pagelist)
|
|||||||
int i;
|
int i;
|
||||||
int blk;
|
int blk;
|
||||||
char __iomem *pixel;
|
char __iomem *pixel;
|
||||||
|
char pixval;
|
||||||
int txsz;
|
int txsz;
|
||||||
|
|
||||||
spi_write(priv->spi, buf, 5);
|
spi_write(priv->spi, buf, 5);
|
||||||
@ -219,7 +221,13 @@ void lmg6202ulyt_deferred_io(struct fb_info *info, struct list_head *pagelist)
|
|||||||
buf[0] = 1;
|
buf[0] = 1;
|
||||||
|
|
||||||
for (i = 0; i < BLOCKSIZE * 8; i++) {
|
for (i = 0; i < BLOCKSIZE * 8; i++) {
|
||||||
if (*pixel > PIX_THRESHOLD) {
|
#if BPP == 8
|
||||||
|
pixval = *(pixel);
|
||||||
|
#else
|
||||||
|
pixval = *(pixel + 1);
|
||||||
|
// TODO: We should have more cases here for higher BPPs
|
||||||
|
#endif
|
||||||
|
if (pixval > pix_threshold) {
|
||||||
buf[(i / 8) + 1] |= (1 << (7 - (i % 8)));
|
buf[(i / 8) + 1] |= (1 << (7 - (i % 8)));
|
||||||
}
|
}
|
||||||
if (pixel >= info->screen_base + info->screen_size - ((info->var.bits_per_pixel) / 8))
|
if (pixel >= info->screen_base + info->screen_size - ((info->var.bits_per_pixel) / 8))
|
||||||
|
Loading…
Reference in New Issue
Block a user