BigW Consortium Gitlab

Commit 3ad95e08 by David Frey

Merge remote-tracking branch 'thong/eink_revertbits'

parents 81304453 7931c7b4
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <linux/rmap.h> #include <linux/rmap.h>
#include <linux/pagemap.h> #include <linux/pagemap.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/bitrev.h>
#include "fb_waveshare_eink.h" #include "fb_waveshare_eink.h"
...@@ -339,6 +340,8 @@ static int ws_eink_init_display(struct ws_eink_fb_par *par) ...@@ -339,6 +340,8 @@ static int ws_eink_init_display(struct ws_eink_fb_par *par)
static int ws_eink_update_display(struct ws_eink_fb_par *par) static int ws_eink_update_display(struct ws_eink_fb_par *par)
{ {
int ret = 0; int ret = 0;
int i;
int frame_size;
u8 *vmem = par->info->screen_base; u8 *vmem = par->info->screen_base;
u8 *ssbuf = par->ssbuf; u8 *ssbuf = par->ssbuf;
const u8 *lut; const u8 *lut;
...@@ -358,7 +361,13 @@ static int ws_eink_update_display(struct ws_eink_fb_par *par) ...@@ -358,7 +361,13 @@ static int ws_eink_update_display(struct ws_eink_fb_par *par)
if (ret) if (ret)
return ret; return ret;
memcpy(&ssbuf, &vmem, sizeof(vmem)); frame_size = par->props->height * par->props->width * par->props->bpp / 8;
memcpy(ssbuf, vmem, frame_size);
for (i = 0; i < frame_size; i++) {
ssbuf[i] = bitrev8(ssbuf[i]);
}
ret = set_frame_memory(par, ssbuf); ret = set_frame_memory(par, ssbuf);
if (ret) if (ret)
...@@ -507,6 +516,7 @@ static int ws_eink_spi_probe(struct spi_device *spi) ...@@ -507,6 +516,7 @@ static int ws_eink_spi_probe(struct spi_device *spi)
const struct waveshare_eink_device_properties *dev_props; const struct waveshare_eink_device_properties *dev_props;
struct ws_eink_fb_par *par; struct ws_eink_fb_par *par;
u8 *vmem; u8 *vmem;
u8 *ssbuf;
int vmem_size; int vmem_size;
pdata = spi->dev.platform_data; pdata = spi->dev.platform_data;
...@@ -533,6 +543,10 @@ static int ws_eink_spi_probe(struct spi_device *spi) ...@@ -533,6 +543,10 @@ static int ws_eink_spi_probe(struct spi_device *spi)
if (!vmem) if (!vmem)
return -ENOMEM; return -ENOMEM;
ssbuf = vzalloc(vmem_size);
if (!ssbuf)
return -ENOMEM;
info = framebuffer_alloc(sizeof(struct ws_eink_fb_par), &spi->dev); info = framebuffer_alloc(sizeof(struct ws_eink_fb_par), &spi->dev);
if (!info) { if (!info) {
retval = -ENOMEM; retval = -ENOMEM;
...@@ -570,6 +584,7 @@ static int ws_eink_spi_probe(struct spi_device *spi) ...@@ -570,6 +584,7 @@ static int ws_eink_spi_probe(struct spi_device *spi)
par->rst = pdata->rst_gpio; par->rst = pdata->rst_gpio;
par->dc = pdata->dc_gpio; par->dc = pdata->dc_gpio;
par->busy = pdata->busy_gpio; par->busy = pdata->busy_gpio;
par->ssbuf = ssbuf;
retval = register_framebuffer(info); retval = register_framebuffer(info);
if (retval < 0) { if (retval < 0) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment