1.1 --- a/include/sdram.h Sun Jan 24 21:18:17 2016 +0100
1.2 +++ b/include/sdram.h Sun Jan 24 21:37:15 2016 +0100
1.3 @@ -6,7 +6,7 @@
1.4 * Copyright (C) 2009 Qi Hardware Inc.
1.5 * Authors: Xiangfu Liu <xiangfu@openmobilefree.net>
1.6 *
1.7 - * Copyright (C) 2015 Paul Boddie <paul@boddie.org.uk>
1.8 + * Copyright (C) 2015, 2016 Paul Boddie <paul@boddie.org.uk>
1.9 *
1.10 * This program is free software: you can redistribute it and/or modify
1.11 * it under the terms of the GNU General Public License as published by
1.12 @@ -25,11 +25,6 @@
1.13 #ifndef __SDRAM_H__
1.14 #define __SDRAM_H__
1.15
1.16 -/* virt_to_phys() from u-boot/arch/mips/include/asm/addrspace.h
1.17 - via u-boot/arch/mips/include/asm/io.h */
1.18 -/* #define virt_to_phys(n) (((int) n) & 0x1fffffff) */
1.19 -#define virt_to_phys(n) ((int) n)
1.20 -
1.21 /*
1.22 * RAM configuration
1.23 */
2.1 --- a/stage2/jzlcd.c Sun Jan 24 21:18:17 2016 +0100
2.2 +++ b/stage2/jzlcd.c Sun Jan 24 21:37:15 2016 +0100
2.3 @@ -53,14 +53,14 @@
2.4 return ALIGN(addr - PAGE_SIZE + 1, PAGE_SIZE) - lcd_get_total_size(&panel_info);
2.5 }
2.6
2.7 -static int jz_lcd_init_mem(void *lcdbase, vidinfo_t *vid);
2.8 +static int jz_lcd_init_mem(unsigned long lcdbase, vidinfo_t *vid);
2.9 static void jz_lcd_desc_init(vidinfo_t *vid);
2.10 static int jz_lcd_hw_init(vidinfo_t *vid);
2.11
2.12 -void lcd_ctrl_init(void **lcdbase)
2.13 +void lcd_ctrl_init(unsigned long *lcdbase)
2.14 {
2.15 /* Start from the top of memory and obtain a framebuffer region. */
2.16 - *lcdbase = (void *) lcd_setmem(get_memory_size());
2.17 + *lcdbase = lcd_setmem(get_memory_size());
2.18
2.19 jz_lcd_init_mem(*lcdbase, &panel_info);
2.20 jz_lcd_desc_init(&panel_info);
2.21 @@ -81,18 +81,18 @@
2.22 REG_LCD_CTRL |= (1<<4); /* LCDCTRL.DIS, regular disable */
2.23 }
2.24
2.25 -static int jz_lcd_init_mem(void *lcdbase, vidinfo_t *vid)
2.26 +static int jz_lcd_init_mem(unsigned long lcdbase, vidinfo_t *vid)
2.27 {
2.28 unsigned long palette_mem_size;
2.29 struct jz_fb_info *fbi = &vid->jz_fb;
2.30 - int fb_size = lcd_get_size(vid);
2.31 + unsigned long fb_size = lcd_get_size(vid);
2.32
2.33 - fbi->screen = (unsigned long)lcdbase;
2.34 + fbi->screen = lcdbase;
2.35 fbi->palette_size = 256;
2.36 palette_mem_size = fbi->palette_size * sizeof(u16);
2.37
2.38 /* locate palette and descs at end of page following fb */
2.39 - fbi->palette = (unsigned long)lcdbase + fb_size + PAGE_SIZE - palette_mem_size;
2.40 + fbi->palette = lcdbase + fb_size + PAGE_SIZE - palette_mem_size;
2.41
2.42 return 0;
2.43 }
2.44 @@ -101,6 +101,7 @@
2.45 {
2.46 struct jz_fb_dma_descriptor *descriptors;
2.47 struct jz_fb_info * fbi;
2.48 +
2.49 fbi = &vid->jz_fb;
2.50 descriptors = ((struct jz_fb_dma_descriptor *) fbi->palette) - 3;
2.51 fbi->dmadesc_fblow = (struct jz_fb_dma_descriptor *) &descriptors[0];
2.52 @@ -108,32 +109,32 @@
2.53 fbi->dmadesc_palette = (struct jz_fb_dma_descriptor *) &descriptors[2];
2.54
2.55 /* populate descriptors */
2.56 - fbi->dmadesc_fblow->fdadr = virt_to_phys(fbi->dmadesc_fblow);
2.57 - fbi->dmadesc_fblow->fsadr = virt_to_phys((void *)(fbi->screen + lcd_get_size(vid)));
2.58 + fbi->dmadesc_fblow->fdadr = fbi->dmadesc_fblow;
2.59 + fbi->dmadesc_fblow->fsadr = fbi->screen + lcd_get_size(vid);
2.60 fbi->dmadesc_fblow->fidr = 0;
2.61 fbi->dmadesc_fblow->ldcmd = lcd_get_size(vid) / 4 ;
2.62
2.63 - fbi->fdadr1 = virt_to_phys(fbi->dmadesc_fblow); /* only used in dual-panel mode */
2.64 + fbi->fdadr1 = fbi->dmadesc_fblow; /* only used in dual-panel mode */
2.65
2.66 - fbi->dmadesc_fbhigh->fsadr = virt_to_phys((void *)fbi->screen);
2.67 + fbi->dmadesc_fbhigh->fsadr = fbi->screen;
2.68 fbi->dmadesc_fbhigh->fidr = 0;
2.69 fbi->dmadesc_fbhigh->ldcmd = lcd_get_size(vid) / 4; /* length in word */
2.70
2.71 - fbi->dmadesc_palette->fsadr = virt_to_phys((void *)fbi->palette);
2.72 + fbi->dmadesc_palette->fsadr = fbi->palette;
2.73 fbi->dmadesc_palette->fidr = 0;
2.74 fbi->dmadesc_palette->ldcmd = (fbi->palette_size * 2)/4 | (1<<28);
2.75
2.76 if(NBITS(vid->vl_bpix) < 12)
2.77 {
2.78 /* assume any mode with <12 bpp is palette driven */
2.79 - fbi->dmadesc_palette->fdadr = virt_to_phys(fbi->dmadesc_fbhigh);
2.80 - fbi->dmadesc_fbhigh->fdadr = virt_to_phys(fbi->dmadesc_palette);
2.81 + fbi->dmadesc_palette->fdadr = fbi->dmadesc_fbhigh;
2.82 + fbi->dmadesc_fbhigh->fdadr = fbi->dmadesc_palette;
2.83 /* flips back and forth between pal and fbhigh */
2.84 - fbi->fdadr0 = virt_to_phys(fbi->dmadesc_palette);
2.85 + fbi->fdadr0 = fbi->dmadesc_palette;
2.86 } else {
2.87 /* palette shouldn't be loaded in true-color mode */
2.88 - fbi->dmadesc_fbhigh->fdadr = virt_to_phys((void *)fbi->dmadesc_fbhigh);
2.89 - fbi->fdadr0 = virt_to_phys(fbi->dmadesc_fbhigh); /* no pal just fbhigh */
2.90 + fbi->dmadesc_fbhigh->fdadr = fbi->dmadesc_fbhigh;
2.91 + fbi->fdadr0 = fbi->dmadesc_fbhigh; /* no pal just fbhigh */
2.92 }
2.93
2.94 flush_cache_all();
2.95 @@ -390,11 +391,11 @@
2.96 __cpm_start_lcd();
2.97 udelay(1000);
2.98
2.99 - REG_LCD_DA0 = fbi->fdadr0; /* frame descripter*/
2.100 + REG_LCD_DA0 = (unsigned long) fbi->fdadr0; /* frame descriptor */
2.101
2.102 if (((jzfb.cfg & MODE_MASK) == MODE_STN_COLOR_DUAL) ||
2.103 ((jzfb.cfg & MODE_MASK) == MODE_STN_MONO_DUAL))
2.104 - REG_LCD_DA1 = fbi->fdadr1; /* frame descripter*/
2.105 + REG_LCD_DA1 = (unsigned long) fbi->fdadr1; /* frame descriptor */
2.106
2.107 return 0;
2.108 }
3.1 --- a/stage2/jzlcd.h Sun Jan 24 21:18:17 2016 +0100
3.2 +++ b/stage2/jzlcd.h Sun Jan 24 21:37:15 2016 +0100
3.3 @@ -25,7 +25,7 @@
3.4 #ifndef __JZLCD_H__
3.5 #define __JZLCD_H__
3.6
3.7 -void lcd_ctrl_init(void **lcdbase);
3.8 +void lcd_ctrl_init(unsigned long *lcdbase);
3.9 void lcd_enable(void);
3.10 void lcd_disable(void);
3.11
3.12 @@ -50,10 +50,10 @@
3.13 * LCD controller stucture for JZSOC: JZ4740
3.14 */
3.15 struct jz_fb_dma_descriptor {
3.16 - unsigned long fdadr; /* Frame descriptor address register */
3.17 - unsigned long fsadr; /* Frame source address register */
3.18 - unsigned long fidr; /* Frame ID register */
3.19 - unsigned long ldcmd; /* Command register */
3.20 + struct jz_fb_dma_descriptor *fdadr; /* Frame descriptor address register */
3.21 + unsigned long fsadr; /* Frame source address register */
3.22 + unsigned long fidr; /* Frame ID register */
3.23 + unsigned long ldcmd; /* Command register */
3.24 };
3.25
3.26 /*
3.27 @@ -61,8 +61,8 @@
3.28 */
3.29 struct jz_fb_info {
3.30
3.31 - unsigned long fdadr0; /* physical address of frame/palette descriptor */
3.32 - unsigned long fdadr1; /* physical address of frame descriptor */
3.33 + struct jz_fb_dma_descriptor *fdadr0; /* physical address of frame/palette descriptor */
3.34 + struct jz_fb_dma_descriptor *fdadr1; /* physical address of frame descriptor */
3.35
3.36 /* DMA descriptors */
3.37 struct jz_fb_dma_descriptor *dmadesc_fblow;
4.1 --- a/stage2/lcd.c Sun Jan 24 21:18:17 2016 +0100
4.2 +++ b/stage2/lcd.c Sun Jan 24 21:37:15 2016 +0100
4.3 @@ -32,14 +32,14 @@
4.4 #include "board.h"
4.5
4.6 extern vidinfo_t panel_info;
4.7 -static void *lcd_base;
4.8 -u32 irq_counter = 0;
4.9 +static unsigned long lcd_base;
4.10 +unsigned long irq_counter = 0;
4.11
4.12 void test_pixel(unsigned short h, unsigned short v)
4.13 {
4.14 unsigned short v_max = panel_info.vl_row;
4.15 unsigned short h_max = panel_info.vl_col;
4.16 - u32 *pix = (u32 *)lcd_base + v * h_max + h;
4.17 + unsigned long *pix = (unsigned long *)lcd_base + v * h_max + h;
4.18
4.19 /* NOTE: Code assumes 32 bits/pixel. */
4.20 #ifdef NORMAL
4.21 @@ -52,7 +52,7 @@
4.22 unsigned short offset, bit;
4.23 bit = 31 - (32 * h / (h_max - 1));
4.24 offset = v / 4;
4.25 - *pix = ((*((u32 *) 0x80000200 + offset) & (1 << bit)) >> bit) ? 0xffffffff : 0;
4.26 + *pix = ((*((unsigned long *) 0x80000200 + offset) & (1 << bit)) >> bit) ? 0xffffffff : 0;
4.27 #else
4.28 unsigned short bit;
4.29 volatile unsigned int cp0_register;
4.30 @@ -70,7 +70,7 @@
4.31 void clear_pixel(unsigned short h, unsigned short v)
4.32 {
4.33 unsigned short h_max = panel_info.vl_col;
4.34 - u32 *pix = (u32 *)lcd_base + v * h_max + h;
4.35 + unsigned long *pix = (unsigned long *)lcd_base + v * h_max + h;
4.36
4.37 *pix = 0;
4.38 }
4.39 @@ -93,7 +93,7 @@
4.40 unsigned short v_max = panel_info.vl_row;
4.41 unsigned short h_max = panel_info.vl_col;
4.42 unsigned short v, h;
4.43 - u32 *pix = (u32 *)lcd_base;
4.44 + unsigned long *pix = (unsigned long *)lcd_base;
4.45
4.46 for (v = 0; v < v_max; v += 1) {
4.47 for (h = 0; h < h_max; h += 1) {