diff options
Diffstat (limited to 'drivers/staging/fbtft')
29 files changed, 131 insertions, 156 deletions
diff --git a/drivers/staging/fbtft/fb_agm1264k-fl.c b/drivers/staging/fbtft/fb_agm1264k-fl.c index a6e3af74a904..4ee76dbd30b5 100644 --- a/drivers/staging/fbtft/fb_agm1264k-fl.c +++ b/drivers/staging/fbtft/fb_agm1264k-fl.c @@ -185,9 +185,9 @@ static void write_reg8_bus8(struct fbtft_par *par, int len, ...) buf[i] = (u8)va_arg(args, unsigned int); va_end(args); - fbtft_par_dbg_hex(DEBUG_WRITE_REGISTER, par, - par->info->device, u8, buf, len, "%s: ", __func__); - } + fbtft_par_dbg_hex(DEBUG_WRITE_REGISTER, par, par->info->device, + u8, buf, len, "%s: ", __func__); +} va_start(args, len); @@ -246,7 +246,7 @@ static void set_addr_win(struct fbtft_par *par, int xs, int ys, int xe, int ye) static void construct_line_bitmap(struct fbtft_par *par, u8 *dest, signed short *src, - int xs, int xe, int y) + int xs, int xe, int y) { int x, i; @@ -361,7 +361,8 @@ static int write_vmem(struct fbtft_par *par, size_t offset, size_t len) /* left half of display */ if (addr_win.xs < par->info->var.xres / 2) { construct_line_bitmap(par, buf, convert_buf, - addr_win.xs, par->info->var.xres / 2, y); + addr_win.xs, + par->info->var.xres / 2, y); len = par->info->var.xres / 2 - addr_win.xs; @@ -382,8 +383,9 @@ static int write_vmem(struct fbtft_par *par, size_t offset, size_t len) /* right half of display */ if (addr_win.xe >= par->info->var.xres / 2) { construct_line_bitmap(par, buf, - convert_buf, par->info->var.xres / 2, - addr_win.xe + 1, y); + convert_buf, + par->info->var.xres / 2, + addr_win.xe + 1, y); len = addr_win.xe + 1 - par->info->var.xres / 2; @@ -413,7 +415,7 @@ static int write_vmem(struct fbtft_par *par, size_t offset, size_t len) static int write(struct fbtft_par *par, void *buf, size_t len) { fbtft_par_dbg_hex(DEBUG_WRITE, par, par->info->device, u8, buf, len, - "%s(len=%d): ", __func__, len); + "%s(len=%d): ", __func__, len); gpio_set_value(par->RW, 0); /* set write mode */ diff --git a/drivers/staging/fbtft/fb_hx8340bn.c b/drivers/staging/fbtft/fb_hx8340bn.c index 9970ed74bb38..1ca1fcd353d6 100644 --- a/drivers/staging/fbtft/fb_hx8340bn.c +++ b/drivers/staging/fbtft/fb_hx8340bn.c @@ -37,7 +37,7 @@ "3 3 17 8 4 7 05 7 6 0 3 1 6 0 0 " static bool emulate; -module_param(emulate, bool, 0); +module_param(emulate, bool, 0000); MODULE_PARM_DESC(emulate, "Force emulation in 9-bit mode"); static int init_display(struct fbtft_par *par) @@ -158,7 +158,7 @@ static int set_var(struct fbtft_par *par) * ON0 ON1 CN0 CN1 CN2 CN3 CN4 MN0 MN1 MN2 MN3 MN4 MN5 XXXX GC */ #define CURVE(num, idx) curves[num * par->gamma.num_values + idx] -static int set_gamma(struct fbtft_par *par, unsigned long *curves) +static int set_gamma(struct fbtft_par *par, u32 *curves) { unsigned long mask[] = { 0x0f, 0x0f, 0x1f, 0x0f, 0x0f, 0x0f, 0x1f, 0x07, 0x07, 0x07, diff --git a/drivers/staging/fbtft/fb_hx8347d.c b/drivers/staging/fbtft/fb_hx8347d.c index 450a61e3f99c..bbf78f8644a8 100644 --- a/drivers/staging/fbtft/fb_hx8347d.c +++ b/drivers/staging/fbtft/fb_hx8347d.c @@ -102,7 +102,7 @@ static void set_addr_win(struct fbtft_par *par, int xs, int ys, int xe, int ye) * VRN0 VRN1 VRN2 VRN3 VRN4 VRN5 PRN0 PRN1 PKN0 PKN1 PKN2 PKN3 PKN4 CGM */ #define CURVE(num, idx) curves[num * par->gamma.num_values + idx] -static int set_gamma(struct fbtft_par *par, unsigned long *curves) +static int set_gamma(struct fbtft_par *par, u32 *curves) { unsigned long mask[] = { 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7f, 0x7f, 0x1f, 0x1f, diff --git a/drivers/staging/fbtft/fb_hx8353d.c b/drivers/staging/fbtft/fb_hx8353d.c index 72e4ff8c5553..2c18051a44b3 100644 --- a/drivers/staging/fbtft/fb_hx8353d.c +++ b/drivers/staging/fbtft/fb_hx8353d.c @@ -118,7 +118,7 @@ static int set_var(struct fbtft_par *par) } /* gamma string format: */ -static int set_gamma(struct fbtft_par *par, unsigned long *curves) +static int set_gamma(struct fbtft_par *par, u32 *curves) { write_reg(par, 0xE0, curves[0], curves[1], curves[2], curves[3], diff --git a/drivers/staging/fbtft/fb_ili9163.c b/drivers/staging/fbtft/fb_ili9163.c index 6b8f8b17e9a3..579e17734612 100644 --- a/drivers/staging/fbtft/fb_ili9163.c +++ b/drivers/staging/fbtft/fb_ili9163.c @@ -202,7 +202,7 @@ static int set_var(struct fbtft_par *par) #ifdef GAMMA_ADJ #define CURVE(num, idx) curves[num * par->gamma.num_values + idx] -static int gamma_adj(struct fbtft_par *par, unsigned long *curves) +static int gamma_adj(struct fbtft_par *par, u32 *curves) { unsigned long mask[] = { 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, diff --git a/drivers/staging/fbtft/fb_ili9320.c b/drivers/staging/fbtft/fb_ili9320.c index 278e4c7e95e5..20ba86da028b 100644 --- a/drivers/staging/fbtft/fb_ili9320.c +++ b/drivers/staging/fbtft/fb_ili9320.c @@ -221,7 +221,7 @@ static int set_var(struct fbtft_par *par) * VRN0 VRN1 RN0 RN1 KN0 KN1 KN2 KN3 KN4 KN5 */ #define CURVE(num, idx) curves[num * par->gamma.num_values + idx] -static int set_gamma(struct fbtft_par *par, unsigned long *curves) +static int set_gamma(struct fbtft_par *par, u32 *curves) { unsigned long mask[] = { 0x1f, 0x1f, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, diff --git a/drivers/staging/fbtft/fb_ili9325.c b/drivers/staging/fbtft/fb_ili9325.c index 19e33bab9cac..7189de5ae4b3 100644 --- a/drivers/staging/fbtft/fb_ili9325.c +++ b/drivers/staging/fbtft/fb_ili9325.c @@ -215,7 +215,7 @@ static int set_var(struct fbtft_par *par) * VRN0 VRN1 RN0 RN1 KN0 KN1 KN2 KN3 KN4 KN5 */ #define CURVE(num, idx) curves[num * par->gamma.num_values + idx] -static int set_gamma(struct fbtft_par *par, unsigned long *curves) +static int set_gamma(struct fbtft_par *par, u32 *curves) { unsigned long mask[] = { 0x1f, 0x1f, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, diff --git a/drivers/staging/fbtft/fb_ili9341.c b/drivers/staging/fbtft/fb_ili9341.c index ff35c8624ca3..21a98e9e1a14 100644 --- a/drivers/staging/fbtft/fb_ili9341.c +++ b/drivers/staging/fbtft/fb_ili9341.c @@ -121,7 +121,7 @@ static int set_var(struct fbtft_par *par) * Negative: Par1 Par2 [...] Par15 */ #define CURVE(num, idx) curves[num * par->gamma.num_values + idx] -static int set_gamma(struct fbtft_par *par, unsigned long *curves) +static int set_gamma(struct fbtft_par *par, u32 *curves) { int i; diff --git a/drivers/staging/fbtft/fb_pcd8544.c b/drivers/staging/fbtft/fb_pcd8544.c index a4710dc067ef..87f678a314cc 100644 --- a/drivers/staging/fbtft/fb_pcd8544.c +++ b/drivers/staging/fbtft/fb_pcd8544.c @@ -33,11 +33,11 @@ #define DEFAULT_GAMMA "40" /* gamma controls the contrast in this driver */ static unsigned int tc; -module_param(tc, uint, 0); +module_param(tc, uint, 0000); MODULE_PARM_DESC(tc, "TC[1:0] Temperature coefficient: 0-3 (default: 0)"); static unsigned int bs = 4; -module_param(bs, uint, 0); +module_param(bs, uint, 0000); MODULE_PARM_DESC(bs, "BS[2:0] Bias voltage level: 0-7 (default: 4)"); static int init_display(struct fbtft_par *par) @@ -137,7 +137,7 @@ static int write_vmem(struct fbtft_par *par, size_t offset, size_t len) return ret; } -static int set_gamma(struct fbtft_par *par, unsigned long *curves) +static int set_gamma(struct fbtft_par *par, u32 *curves) { /* apply mask */ curves[0] &= 0x7F; diff --git a/drivers/staging/fbtft/fb_ra8875.c b/drivers/staging/fbtft/fb_ra8875.c index 308a244972aa..89d36d6d0cd3 100644 --- a/drivers/staging/fbtft/fb_ra8875.c +++ b/drivers/staging/fbtft/fb_ra8875.c @@ -33,7 +33,7 @@ static int write_spi(struct fbtft_par *par, void *buf, size_t len) struct spi_message m; fbtft_par_dbg_hex(DEBUG_WRITE, par, par->info->device, u8, buf, len, - "%s(len=%d): ", __func__, len); + "%s(len=%d): ", __func__, len); if (!par->spi) { dev_err(par->info->device, @@ -42,10 +42,6 @@ static int write_spi(struct fbtft_par *par, void *buf, size_t len) } spi_message_init(&m); - if (par->txbuf.dma && buf == par->txbuf.buf) { - t.tx_dma = par->txbuf.dma; - m.is_dma_mapped = 1; - } spi_message_add_tail(&t, &m); return spi_sync(par->spi, &m); } @@ -55,9 +51,9 @@ static int init_display(struct fbtft_par *par) gpio_set_value(par->gpio.dc, 1); fbtft_par_dbg(DEBUG_INIT_DISPLAY, par, - "%s()\n", __func__); + "%s()\n", __func__); fbtft_par_dbg(DEBUG_INIT_DISPLAY, par, - "display size %dx%d\n", + "display size %dx%d\n", par->info->var.xres, par->info->var.yres); @@ -215,7 +211,7 @@ static void write_reg8_bus8(struct fbtft_par *par, int len, ...) buf[i] = (u8)va_arg(args, unsigned int); va_end(args); fbtft_par_dbg_hex(DEBUG_WRITE_REGISTER, par, par->info->device, - u8, buf, len, "%s: ", __func__); + u8, buf, len, "%s: ", __func__); } va_start(args, len); @@ -266,7 +262,7 @@ static int write_vmem16_bus8(struct fbtft_par *par, size_t offset, size_t len) size_t startbyte_size = 0; fbtft_par_dbg(DEBUG_WRITE_VMEM, par, "%s(offset=%zu, len=%zu)\n", - __func__, offset, len); + __func__, offset, len); remain = len / 2; vmem16 = (u16 *)(par->info->screen_buffer + offset); diff --git a/drivers/staging/fbtft/fb_s6d1121.c b/drivers/staging/fbtft/fb_s6d1121.c index 9b1d70b218df..3b36ed50d491 100644 --- a/drivers/staging/fbtft/fb_s6d1121.c +++ b/drivers/staging/fbtft/fb_s6d1121.c @@ -130,7 +130,7 @@ static int set_var(struct fbtft_par *par) * PKN0 PKN1 PKN2 PKN3 PKN4 PKN5 PKN6 PKN7 PRN8 PRN9 PRN10 PRN11 VRN0 VRN1 */ #define CURVE(num, idx) curves[num * par->gamma.num_values + idx] -static int set_gamma(struct fbtft_par *par, unsigned long *curves) +static int set_gamma(struct fbtft_par *par, u32 *curves) { unsigned long mask[] = { 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, diff --git a/drivers/staging/fbtft/fb_ssd1289.c b/drivers/staging/fbtft/fb_ssd1289.c index 25f9fbe1e76f..c603e1516e64 100644 --- a/drivers/staging/fbtft/fb_ssd1289.c +++ b/drivers/staging/fbtft/fb_ssd1289.c @@ -30,7 +30,7 @@ "02 03 2 5 7 5 4 2 4 2" static unsigned int reg11 = 0x6040; -module_param(reg11, uint, 0); +module_param(reg11, uint, 0000); MODULE_PARM_DESC(reg11, "Register 11h value"); static int init_display(struct fbtft_par *par) @@ -136,7 +136,7 @@ static int set_var(struct fbtft_par *par) * VRN0 VRN1 PRN0 PRN1 PKN0 PKN1 PKN2 PKN3 PKN4 PKN5 */ #define CURVE(num, idx) curves[num * par->gamma.num_values + idx] -static int set_gamma(struct fbtft_par *par, unsigned long *curves) +static int set_gamma(struct fbtft_par *par, u32 *curves) { unsigned long mask[] = { 0x1f, 0x1f, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, diff --git a/drivers/staging/fbtft/fb_ssd1305.c b/drivers/staging/fbtft/fb_ssd1305.c index 4b38c3fadd60..33c03872ca84 100644 --- a/drivers/staging/fbtft/fb_ssd1305.c +++ b/drivers/staging/fbtft/fb_ssd1305.c @@ -148,7 +148,7 @@ static int blank(struct fbtft_par *par, bool on) } /* Gamma is used to control Contrast */ -static int set_gamma(struct fbtft_par *par, unsigned long *curves) +static int set_gamma(struct fbtft_par *par, u32 *curves) { curves[0] &= 0xFF; /* Set Contrast Control for BANK0 */ diff --git a/drivers/staging/fbtft/fb_ssd1306.c b/drivers/staging/fbtft/fb_ssd1306.c index 80fc57029fee..96c58de85288 100644 --- a/drivers/staging/fbtft/fb_ssd1306.c +++ b/drivers/staging/fbtft/fb_ssd1306.c @@ -62,6 +62,8 @@ static int init_display(struct fbtft_par *par) write_reg(par, 0xA8); if (par->info->var.yres == 64) write_reg(par, 0x3F); + else if (par->info->var.yres == 48) + write_reg(par, 0x2F); else write_reg(par, 0x1F); @@ -82,7 +84,7 @@ static int init_display(struct fbtft_par *par) /* Vertical addressing mode */ write_reg(par, 0x01); - /*Set Segment Re-map */ + /* Set Segment Re-map */ /* column address 127 is mapped to SEG0 */ write_reg(par, 0xA0 | 0x1); @@ -95,6 +97,9 @@ static int init_display(struct fbtft_par *par) if (par->info->var.yres == 64) /* A[4]=1b, Alternative COM pin configuration */ write_reg(par, 0x12); + else if (par->info->var.yres == 48) + /* A[4]=1b, Alternative COM pin configuration */ + write_reg(par, 0x12); else /* A[4]=0b, Sequential COM pin configuration */ write_reg(par, 0x02); @@ -124,6 +129,19 @@ static int init_display(struct fbtft_par *par) return 0; } +static void set_addr_win_64x48(struct fbtft_par *par) +{ + /* Set Column Address */ + write_reg(par, 0x21); + write_reg(par, 0x20); + write_reg(par, 0x5F); + + /* Set Page Address */ + write_reg(par, 0x22); + write_reg(par, 0x0); + write_reg(par, 0x5); +} + static void set_addr_win(struct fbtft_par *par, int xs, int ys, int xe, int ye) { /* Set Lower Column Start Address for Page Addressing Mode */ @@ -132,12 +150,15 @@ static void set_addr_win(struct fbtft_par *par, int xs, int ys, int xe, int ye) write_reg(par, 0x10 | 0x0); /* Set Display Start Line */ write_reg(par, 0x40 | 0x0); + + if (par->info->var.xres == 64 && par->info->var.yres == 48) + set_addr_win_64x48(par); } static int blank(struct fbtft_par *par, bool on) { fbtft_par_dbg(DEBUG_BLANK, par, "%s(blank=%s)\n", - __func__, on ? "true" : "false"); + __func__, on ? "true" : "false"); if (on) write_reg(par, 0xAE); @@ -147,7 +168,7 @@ static int blank(struct fbtft_par *par, bool on) } /* Gamma is used to control Contrast */ -static int set_gamma(struct fbtft_par *par, unsigned long *curves) +static int set_gamma(struct fbtft_par *par, u32 *curves) { /* apply mask */ curves[0] &= 0xFF; @@ -162,26 +183,24 @@ static int set_gamma(struct fbtft_par *par, unsigned long *curves) static int write_vmem(struct fbtft_par *par, size_t offset, size_t len) { u16 *vmem16 = (u16 *)par->info->screen_buffer; + u32 xres = par->info->var.xres; + u32 yres = par->info->var.yres; u8 *buf = par->txbuf.buf; int x, y, i; int ret = 0; - for (x = 0; x < par->info->var.xres; x++) { - for (y = 0; y < par->info->var.yres/8; y++) { + for (x = 0; x < xres; x++) { + for (y = 0; y < yres / 8; y++) { *buf = 0x00; for (i = 0; i < 8; i++) - *buf |= (vmem16[(y * 8 + i) * - par->info->var.xres + x] ? - 1 : 0) << i; + *buf |= (vmem16[(y * 8 + i) * xres + x] ? 1 : 0) << i; buf++; } } /* Write data */ gpio_set_value(par->gpio.dc, 1); - ret = par->fbtftops.write(par, par->txbuf.buf, - par->info->var.xres * par->info->var.yres / - 8); + ret = par->fbtftops.write(par, par->txbuf.buf, xres * yres / 8); if (ret < 0) dev_err(par->info->device, "write failed and returned: %d\n", ret); diff --git a/drivers/staging/fbtft/fb_ssd1325.c b/drivers/staging/fbtft/fb_ssd1325.c index 15078bf2aa4b..b7e40c24f58e 100644 --- a/drivers/staging/fbtft/fb_ssd1325.c +++ b/drivers/staging/fbtft/fb_ssd1325.c @@ -116,7 +116,7 @@ static int blank(struct fbtft_par *par, bool on) * 0 = Setting of GS1 < Setting of GS2 < Setting of GS3.....< * Setting of GS14 < Setting of GS15 */ -static int set_gamma(struct fbtft_par *par, unsigned long *curves) +static int set_gamma(struct fbtft_par *par, u32 *curves) { int i; diff --git a/drivers/staging/fbtft/fb_ssd1331.c b/drivers/staging/fbtft/fb_ssd1331.c index 1d74ac1343a8..26f24e32d979 100644 --- a/drivers/staging/fbtft/fb_ssd1331.c +++ b/drivers/staging/fbtft/fb_ssd1331.c @@ -122,7 +122,7 @@ static void write_reg8_bus8(struct fbtft_par *par, int len, ...) * Setting of GS63 has to be > Setting of GS62 +1 * */ -static int set_gamma(struct fbtft_par *par, unsigned long *curves) +static int set_gamma(struct fbtft_par *par, u32 *curves) { unsigned long tmp[GAMMA_NUM * GAMMA_LEN]; int i, acc = 0; @@ -145,14 +145,16 @@ static int set_gamma(struct fbtft_par *par, unsigned long *curves) } write_reg(par, 0xB8, - tmp[0], tmp[1], tmp[2], tmp[3], tmp[4], tmp[5], tmp[6], tmp[7], - tmp[8], tmp[9], tmp[10], tmp[11], tmp[12], tmp[13], tmp[14], tmp[15], - tmp[16], tmp[17], tmp[18], tmp[19], tmp[20], tmp[21], tmp[22], tmp[23], - tmp[24], tmp[25], tmp[26], tmp[27], tmp[28], tmp[29], tmp[30], tmp[31], - tmp[32], tmp[33], tmp[34], tmp[35], tmp[36], tmp[37], tmp[38], tmp[39], - tmp[40], tmp[41], tmp[42], tmp[43], tmp[44], tmp[45], tmp[46], tmp[47], - tmp[48], tmp[49], tmp[50], tmp[51], tmp[52], tmp[53], tmp[54], tmp[55], - tmp[56], tmp[57], tmp[58], tmp[59], tmp[60], tmp[61], tmp[62]); + tmp[0], tmp[1], tmp[2], tmp[3], tmp[4], tmp[5], tmp[6], + tmp[7], tmp[8], tmp[9], tmp[10], tmp[11], tmp[12], tmp[13], + tmp[14], tmp[15], tmp[16], tmp[17], tmp[18], tmp[19], tmp[20], + tmp[21], tmp[22], tmp[23], tmp[24], tmp[25], tmp[26], tmp[27], + tmp[28], tmp[29], tmp[30], tmp[31], tmp[32], tmp[33], tmp[34], + tmp[35], tmp[36], tmp[37], tmp[38], tmp[39], tmp[40], tmp[41], + tmp[42], tmp[43], tmp[44], tmp[45], tmp[46], tmp[47], tmp[48], + tmp[49], tmp[50], tmp[51], tmp[52], tmp[53], tmp[54], tmp[55], + tmp[56], tmp[57], tmp[58], tmp[59], tmp[60], tmp[61], + tmp[62]); return 0; } @@ -160,7 +162,7 @@ static int set_gamma(struct fbtft_par *par, unsigned long *curves) static int blank(struct fbtft_par *par, bool on) { fbtft_par_dbg(DEBUG_BLANK, par, "%s(blank=%s)\n", - __func__, on ? "true" : "false"); + __func__, on ? "true" : "false"); if (on) write_reg(par, 0xAE); else diff --git a/drivers/staging/fbtft/fb_ssd1351.c b/drivers/staging/fbtft/fb_ssd1351.c index 200aa9ba98f9..e62235d4d9e7 100644 --- a/drivers/staging/fbtft/fb_ssd1351.c +++ b/drivers/staging/fbtft/fb_ssd1351.c @@ -71,8 +71,8 @@ static int set_var(struct fbtft_par *par) if (par->fbtftops.init_display != init_display) { /* don't risk messing up register A0h */ fbtft_par_dbg(DEBUG_INIT_DISPLAY, par, - "%s: skipping since custom init_display() is used\n", - __func__); + "%s: skipping since custom init_display() is used\n", + __func__); return 0; } @@ -117,7 +117,7 @@ static int set_var(struct fbtft_par *par) * Setting of GS63 has to be > Setting of GS62 +1 * */ -static int set_gamma(struct fbtft_par *par, unsigned long *curves) +static int set_gamma(struct fbtft_par *par, u32 *curves) { unsigned long tmp[GAMMA_NUM * GAMMA_LEN]; int i, acc = 0; diff --git a/drivers/staging/fbtft/fb_st7735r.c b/drivers/staging/fbtft/fb_st7735r.c index 710b74bbba97..24d17cdc71ab 100644 --- a/drivers/staging/fbtft/fb_st7735r.c +++ b/drivers/staging/fbtft/fb_st7735r.c @@ -143,7 +143,7 @@ static int set_var(struct fbtft_par *par) * VRF0N VOS0N PK0N PK1N PK2N PK3N PK4N PK5N PK6N PK7N PK8N PK9N SELV0N SELV1N SELV62N SELV63N */ #define CURVE(num, idx) curves[num * par->gamma.num_values + idx] -static int set_gamma(struct fbtft_par *par, unsigned long *curves) +static int set_gamma(struct fbtft_par *par, u32 *curves) { int i, j; diff --git a/drivers/staging/fbtft/fb_st7789v.c b/drivers/staging/fbtft/fb_st7789v.c index 085e9872c46d..8935a97ec048 100644 --- a/drivers/staging/fbtft/fb_st7789v.c +++ b/drivers/staging/fbtft/fb_st7789v.c @@ -178,7 +178,7 @@ static int set_var(struct fbtft_par *par) * * Return: 0 on success, < 0 if error occurred. */ -static int set_gamma(struct fbtft_par *par, unsigned long *curves) +static int set_gamma(struct fbtft_par *par, u32 *curves) { int i; int j; diff --git a/drivers/staging/fbtft/fb_tls8204.c b/drivers/staging/fbtft/fb_tls8204.c index ea2ddacb9468..4302e822de3b 100644 --- a/drivers/staging/fbtft/fb_tls8204.c +++ b/drivers/staging/fbtft/fb_tls8204.c @@ -36,7 +36,7 @@ #define DEFAULT_GAMMA "40" static unsigned int bs = 4; -module_param(bs, uint, 0); +module_param(bs, uint, 0000); MODULE_PARM_DESC(bs, "BS[2:0] Bias voltage level: 0-7 (default: 4)"); static int init_display(struct fbtft_par *par) @@ -130,7 +130,7 @@ static int write_vmem(struct fbtft_par *par, size_t offset, size_t len) return ret; } -static int set_gamma(struct fbtft_par *par, unsigned long *curves) +static int set_gamma(struct fbtft_par *par, u32 *curves) { /* apply mask */ curves[0] &= 0x7F; diff --git a/drivers/staging/fbtft/fb_uc1611.c b/drivers/staging/fbtft/fb_uc1611.c index b33b73f17da4..48e3b3fd9fed 100644 --- a/drivers/staging/fbtft/fb_uc1611.c +++ b/drivers/staging/fbtft/fb_uc1611.c @@ -42,30 +42,30 @@ /* BR -> actual ratio: 0-3 -> 5, 10, 11, 13 */ static unsigned int ratio = 2; -module_param(ratio, uint, 0); +module_param(ratio, uint, 0000); MODULE_PARM_DESC(ratio, "BR[1:0] Bias voltage ratio: 0-3 (default: 2)"); static unsigned int gain = 3; -module_param(gain, uint, 0); +module_param(gain, uint, 0000); MODULE_PARM_DESC(gain, "GN[1:0] Bias voltage gain: 0-3 (default: 3)"); static unsigned int pot = 16; -module_param(pot, uint, 0); +module_param(pot, uint, 0000); MODULE_PARM_DESC(pot, "PM[6:0] Bias voltage pot.: 0-63 (default: 16)"); /* TC -> % compensation per deg C: 0-3 -> -.05, -.10, -.015, -.20 */ static unsigned int temp; -module_param(temp, uint, 0); +module_param(temp, uint, 0000); MODULE_PARM_DESC(temp, "TC[1:0] Temperature compensation: 0-3 (default: 0)"); /* PC[1:0] -> LCD capacitance: 0-3 -> <20nF, 20-28 nF, 29-40 nF, 40-56 nF */ static unsigned int load = 1; -module_param(load, uint, 0); +module_param(load, uint, 0000); MODULE_PARM_DESC(load, "PC[1:0] Panel Loading: 0-3 (default: 1)"); /* PC[3:2] -> V_LCD: 0, 1, 3 -> ext., int. with ratio = 5, int. standard */ static unsigned int pump = 3; -module_param(pump, uint, 0); +module_param(pump, uint, 0000); MODULE_PARM_DESC(pump, "PC[3:2] Pump control: 0,1,3 (default: 3)"); static int init_display(struct fbtft_par *par) diff --git a/drivers/staging/fbtft/fb_watterott.c b/drivers/staging/fbtft/fb_watterott.c index a52e28a48825..429304546b44 100644 --- a/drivers/staging/fbtft/fb_watterott.c +++ b/drivers/staging/fbtft/fb_watterott.c @@ -40,7 +40,7 @@ #define COLOR_RGB565 16 static short mode = 565; -module_param(mode, short, 0); +module_param(mode, short, 0000); MODULE_PARM_DESC(mode, "RGB color transfer mode: 332, 565 (default)"); static void write_reg8_bus8(struct fbtft_par *par, int len, ...) diff --git a/drivers/staging/fbtft/fbtft-core.c b/drivers/staging/fbtft/fbtft-core.c index bbe89c9c4fb9..7c8af29cdb75 100644 --- a/drivers/staging/fbtft/fbtft-core.c +++ b/drivers/staging/fbtft/fbtft-core.c @@ -32,7 +32,6 @@ #include <linux/backlight.h> #include <linux/platform_device.h> #include <linux/spinlock.h> -#include <linux/dma-mapping.h> #include <linux/of.h> #include <linux/of_gpio.h> #include <video/mipi_display.h> @@ -41,15 +40,9 @@ #include "internal.h" static unsigned long debug; -module_param(debug, ulong, 0); +module_param(debug, ulong, 0000); MODULE_PARM_DESC(debug, "override device debug level"); -#ifdef CONFIG_HAS_DMA -static bool dma = true; -module_param(dma, bool, 0); -MODULE_PARM_DESC(dma, "Use DMA buffer"); -#endif - void fbtft_dbg_hex(const struct device *dev, int groupsize, void *buf, size_t len, const char *fmt, ...) { @@ -337,10 +330,10 @@ static void fbtft_reset(struct fbtft_par *par) if (par->gpio.reset == -1) return; fbtft_par_dbg(DEBUG_RESET, par, "%s()\n", __func__); - gpio_set_value(par->gpio.reset, 0); - udelay(20); - gpio_set_value(par->gpio.reset, 1); - mdelay(120); + gpio_set_value_cansleep(par->gpio.reset, 0); + usleep_range(20, 40); + gpio_set_value_cansleep(par->gpio.reset, 1); + msleep(120); } static void fbtft_update_display(struct fbtft_par *par, unsigned int start_line, @@ -668,7 +661,7 @@ struct fb_info *fbtft_framebuffer_alloc(struct fbtft_display *display, int vmem_size, i; s16 *init_sequence = display->init_sequence; char *gamma = display->gamma; - unsigned long *gamma_curves = NULL; + u32 *gamma_curves = NULL; /* sanity check */ if (display->gamma_num * display->gamma_len > @@ -836,17 +829,7 @@ struct fb_info *fbtft_framebuffer_alloc(struct fbtft_display *display, #endif if (txbuflen > 0) { -#ifdef CONFIG_HAS_DMA - if (dma) { - dev->coherent_dma_mask = ~0; - txbuf = dmam_alloc_coherent(dev, txbuflen, - &par->txbuf.dma, GFP_DMA); - } else -#endif - { - txbuf = devm_kzalloc(par->info->device, - txbuflen, GFP_KERNEL); - } + txbuf = devm_kzalloc(par->info->device, txbuflen, GFP_KERNEL); if (!txbuf) goto alloc_fail; par->txbuf.buf = txbuf; @@ -975,8 +958,7 @@ int fbtft_register_framebuffer(struct fb_info *fb_info) fbtft_sysfs_init(par); if (par->txbuf.buf) - sprintf(text1, ", %zu KiB %sbuffer memory", - par->txbuf.len >> 10, par->txbuf.dma ? "DMA " : ""); + sprintf(text1, ", %zu KiB buffer memory", par->txbuf.len >> 10); if (spi) sprintf(text2, ", spi%d.%d at %d MHz", spi->master->bus_num, spi->chip_select, spi->max_speed_hz / 1000000); diff --git a/drivers/staging/fbtft/fbtft-io.c b/drivers/staging/fbtft/fbtft-io.c index 4dcea2e0b3ae..d86840548b74 100644 --- a/drivers/staging/fbtft/fbtft-io.c +++ b/drivers/staging/fbtft/fbtft-io.c @@ -22,10 +22,6 @@ int fbtft_write_spi(struct fbtft_par *par, void *buf, size_t len) } spi_message_init(&m); - if (par->txbuf.dma && buf == par->txbuf.buf) { - t.tx_dma = par->txbuf.dma; - m.is_dma_mapped = 1; - } spi_message_add_tail(&t, &m); return spi_sync(par->spi, &m); } diff --git a/drivers/staging/fbtft/fbtft-sysfs.c b/drivers/staging/fbtft/fbtft-sysfs.c index 8d8bd12b90a1..6b6fbaa794f4 100644 --- a/drivers/staging/fbtft/fbtft-sysfs.c +++ b/drivers/staging/fbtft/fbtft-sysfs.c @@ -4,7 +4,6 @@ static int get_next_ulong(char **str_p, unsigned long *val, char *sep, int base) { char *p_val; - int ret; if (!str_p || !(*str_p)) return -EINVAL; @@ -14,14 +13,10 @@ static int get_next_ulong(char **str_p, unsigned long *val, char *sep, int base) if (!p_val) return -EINVAL; - ret = kstrtoul(p_val, base, val); - if (ret) - return -EINVAL; - - return 0; + return kstrtoul(p_val, base, val); } -int fbtft_gamma_parse_str(struct fbtft_par *par, unsigned long *curves, +int fbtft_gamma_parse_str(struct fbtft_par *par, u32 *curves, const char *str, int size) { char *str_p, *curve_p = NULL; @@ -94,7 +89,7 @@ out: } static ssize_t -sprintf_gamma(struct fbtft_par *par, unsigned long *curves, char *buf) +sprintf_gamma(struct fbtft_par *par, u32 *curves, char *buf) { ssize_t len = 0; unsigned int i, j; @@ -103,7 +98,7 @@ sprintf_gamma(struct fbtft_par *par, unsigned long *curves, char *buf) for (i = 0; i < par->gamma.num_curves; i++) { for (j = 0; j < par->gamma.num_values; j++) len += scnprintf(&buf[len], PAGE_SIZE, - "%04lx ", curves[i * par->gamma.num_values + j]); + "%04x ", curves[i * par->gamma.num_values + j]); buf[len - 1] = '\n'; } mutex_unlock(&par->gamma.lock); @@ -117,7 +112,7 @@ static ssize_t store_gamma_curve(struct device *device, { struct fb_info *fb_info = dev_get_drvdata(device); struct fbtft_par *par = fb_info->par; - unsigned long tmp_curves[FBTFT_GAMMA_MAX_VALUES_TOTAL]; + u32 tmp_curves[FBTFT_GAMMA_MAX_VALUES_TOTAL]; int ret; ret = fbtft_gamma_parse_str(par, tmp_curves, buf, count); diff --git a/drivers/staging/fbtft/fbtft.h b/drivers/staging/fbtft/fbtft.h index aacdde92cc2e..44cf94d160d4 100644 --- a/drivers/staging/fbtft/fbtft.h +++ b/drivers/staging/fbtft/fbtft.h @@ -92,7 +92,7 @@ struct fbtft_ops { void (*unregister_backlight)(struct fbtft_par *par); int (*set_var)(struct fbtft_par *par); - int (*set_gamma)(struct fbtft_par *par, unsigned long *curves); + int (*set_gamma)(struct fbtft_par *par, u32 *curves); }; /** @@ -209,7 +209,6 @@ struct fbtft_par { u32 pseudo_palette[16]; struct { void *buf; - dma_addr_t dma; size_t len; } txbuf; u8 *buf; @@ -232,7 +231,7 @@ struct fbtft_par { s16 *init_sequence; struct { struct mutex lock; - unsigned long *curves; + u32 *curves; int num_values; int num_curves; } gamma; diff --git a/drivers/staging/fbtft/fbtft_device.c b/drivers/staging/fbtft/fbtft_device.c index de46f8d988d2..9ffb9cecc465 100644 --- a/drivers/staging/fbtft/fbtft_device.c +++ b/drivers/staging/fbtft/fbtft_device.c @@ -29,85 +29,85 @@ static struct spi_device *spi_device; static struct platform_device *p_device; static char *name; -module_param(name, charp, 0); +module_param(name, charp, 0000); MODULE_PARM_DESC(name, "Devicename (required). name=list => list all supported devices."); static unsigned int rotate; -module_param(rotate, uint, 0); +module_param(rotate, uint, 0000); MODULE_PARM_DESC(rotate, "Angle to rotate display counter clockwise: 0, 90, 180, 270"); static unsigned int busnum; -module_param(busnum, uint, 0); +module_param(busnum, uint, 0000); MODULE_PARM_DESC(busnum, "SPI bus number (default=0)"); static unsigned int cs; -module_param(cs, uint, 0); +module_param(cs, uint, 0000); MODULE_PARM_DESC(cs, "SPI chip select (default=0)"); static unsigned int speed; -module_param(speed, uint, 0); +module_param(speed, uint, 0000); MODULE_PARM_DESC(speed, "SPI speed (override device default)"); static int mode = -1; -module_param(mode, int, 0); +module_param(mode, int, 0000); MODULE_PARM_DESC(mode, "SPI mode (override device default)"); static char *gpios; -module_param(gpios, charp, 0); +module_param(gpios, charp, 0000); MODULE_PARM_DESC(gpios, "List of gpios. Comma separated with the form: reset:23,dc:24 (when overriding the default, all gpios must be specified)"); static unsigned int fps; -module_param(fps, uint, 0); +module_param(fps, uint, 0000); MODULE_PARM_DESC(fps, "Frames per second (override driver default)"); static char *gamma; -module_param(gamma, charp, 0); +module_param(gamma, charp, 0000); MODULE_PARM_DESC(gamma, "String representation of Gamma Curve(s). Driver specific."); static int txbuflen; -module_param(txbuflen, int, 0); +module_param(txbuflen, int, 0000); MODULE_PARM_DESC(txbuflen, "txbuflen (override driver default)"); static int bgr = -1; -module_param(bgr, int, 0); +module_param(bgr, int, 0000); MODULE_PARM_DESC(bgr, "BGR bit (supported by some drivers)."); static unsigned int startbyte; -module_param(startbyte, uint, 0); +module_param(startbyte, uint, 0000); MODULE_PARM_DESC(startbyte, "Sets the Start byte used by some SPI displays."); static bool custom; -module_param(custom, bool, 0); +module_param(custom, bool, 0000); MODULE_PARM_DESC(custom, "Add a custom display device. Use speed= argument to make it a SPI device, else platform_device"); static unsigned int width; -module_param(width, uint, 0); +module_param(width, uint, 0000); MODULE_PARM_DESC(width, "Display width, used with the custom argument"); static unsigned int height; -module_param(height, uint, 0); +module_param(height, uint, 0000); MODULE_PARM_DESC(height, "Display height, used with the custom argument"); static unsigned int buswidth = 8; -module_param(buswidth, uint, 0); +module_param(buswidth, uint, 0000); MODULE_PARM_DESC(buswidth, "Display bus width, used with the custom argument"); static s16 init[FBTFT_MAX_INIT_SEQUENCE]; static int init_num; -module_param_array(init, short, &init_num, 0); +module_param_array(init, short, &init_num, 0000); MODULE_PARM_DESC(init, "Init sequence, used with the custom argument"); static unsigned long debug; -module_param(debug, ulong, 0); +module_param(debug, ulong, 0000); MODULE_PARM_DESC(debug, "level: 0-7 (the remaining 29 bits is for advanced usage)"); static unsigned int verbose = 3; -module_param(verbose, uint, 0); +module_param(verbose, uint, 0000); MODULE_PARM_DESC(verbose, "0 silent, >0 show gpios, >1 show devices, >2 show devices before (default=3)"); diff --git a/drivers/staging/fbtft/flexfb.c b/drivers/staging/fbtft/flexfb.c index ded10718712b..af8422e18780 100644 --- a/drivers/staging/fbtft/flexfb.c +++ b/drivers/staging/fbtft/flexfb.c @@ -27,40 +27,40 @@ #define DRVNAME "flexfb" static char *chip; -module_param(chip, charp, 0); +module_param(chip, charp, 0000); MODULE_PARM_DESC(chip, "LCD controller"); static unsigned int width; -module_param(width, uint, 0); +module_param(width, uint, 0000); MODULE_PARM_DESC(width, "Display width"); static unsigned int height; -module_param(height, uint, 0); +module_param(height, uint, 0000); MODULE_PARM_DESC(height, "Display height"); static s16 init[512]; static int init_num; -module_param_array(init, short, &init_num, 0); +module_param_array(init, short, &init_num, 0000); MODULE_PARM_DESC(init, "Init sequence"); static unsigned int setaddrwin; -module_param(setaddrwin, uint, 0); +module_param(setaddrwin, uint, 0000); MODULE_PARM_DESC(setaddrwin, "Which set_addr_win() implementation to use"); static unsigned int buswidth = 8; -module_param(buswidth, uint, 0); +module_param(buswidth, uint, 0000); MODULE_PARM_DESC(buswidth, "Width of databus (default: 8)"); static unsigned int regwidth = 8; -module_param(regwidth, uint, 0); +module_param(regwidth, uint, 0000); MODULE_PARM_DESC(regwidth, "Width of controller register (default: 8)"); static bool nobacklight; -module_param(nobacklight, bool, 0); +module_param(nobacklight, bool, 0000); MODULE_PARM_DESC(nobacklight, "Turn off backlight functionality."); static bool latched; -module_param(latched, bool, 0); +module_param(latched, bool, 0000); MODULE_PARM_DESC(latched, "Use with latched 16-bit databus"); static s16 *initp; @@ -418,22 +418,6 @@ static const struct flexfb_lcd_controller flexfb_chip_table[] = { .init_seq_sz = ARRAY_SIZE(ili9225_init), }, { - .name = "ili9225", - .width = 176, - .height = 220, - .regwidth = 16, - .init_seq = ili9225_init, - .init_seq_sz = ARRAY_SIZE(ili9225_init), - }, - { - .name = "ili9225", - .width = 176, - .height = 220, - .regwidth = 16, - .init_seq = ili9225_init, - .init_seq_sz = ARRAY_SIZE(ili9225_init), - }, - { .name = "ili9320", .width = 240, .height = 320, diff --git a/drivers/staging/fbtft/internal.h b/drivers/staging/fbtft/internal.h index eea0ec5ff4d3..25b9bf6f54bb 100644 --- a/drivers/staging/fbtft/internal.h +++ b/drivers/staging/fbtft/internal.h @@ -19,7 +19,7 @@ void fbtft_sysfs_init(struct fbtft_par *par); void fbtft_sysfs_exit(struct fbtft_par *par); void fbtft_expand_debug_value(unsigned long *debug); -int fbtft_gamma_parse_str(struct fbtft_par *par, unsigned long *curves, +int fbtft_gamma_parse_str(struct fbtft_par *par, u32 *curves, const char *str, int size); #endif /* __LINUX_FBTFT_INTERNAL_H */ |