1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-12-24 05:34:36 +02:00

some cleanup about xburst target

- make zImage compile fine
 - set the ip addr to 192.168.254.101
 - add more tty
 - format nand partition to 3
 - cleanup keyboard
 - cleanup gmp940b driver
 - add color font patch, use setfont2 in userspace
 - add FPU in config, change font to 6x11
 - add default CMDLINE, which is for zImage


Signed-off-by: Xiangfu Liu <xiangfu@sharism.cc>
This commit is contained in:
Xiangfu Liu 2010-10-30 06:58:45 -08:00
parent 293a2a0958
commit f187a489f1
20 changed files with 490 additions and 184 deletions

View File

@ -18,7 +18,7 @@ DEVICE_TYPE=other
include $(INCLUDE_DIR)/target.mk
KERNELNAME:=uImage
KERNELNAME:=uImage zImage
define Target/Description
Build firmware images for XBurst JZ47x0 based boards.

View File

@ -1,6 +0,0 @@
config mount
option target /card
option device /dev/mmcblk0p1
option fstype auto
option options rw,sync
option enabled 1

View File

@ -9,5 +9,7 @@ config interface loopback
config interface lan
option ifname usb0
option proto static
option ipaddr 192.168.1.1
option ipaddr 192.168.254.101
option netmask 255.255.255.0
option gateway 192.168.254.100
option dns 208.67.222.222

View File

@ -0,0 +1,8 @@
::sysinit:/etc/init.d/rcS S boot
::shutdown:/etc/init.d/rcS K stop
tts/0::askfirst:/bin/ash --login
ttyS0::askfirst:/bin/ash --login
tty1::respawn:/bin/ash --login
tty2::askfirst:/bin/ash --login
tty3::askfirst:/bin/ash --login
tty4::askfirst:/bin/ash --login

View File

@ -0,0 +1,5 @@
src/gz snapshots http://downloads.qi-hardware.com/software/packages/openwrt/xburst/latest
dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay

View File

@ -94,7 +94,8 @@ CONFIG_FORCE_MAX_ZONEORDER=12
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
# CONFIG_FRAMEBUFFER_CONSOLE is not set
CONFIG_FREEZER=y
# CONFIG_FSNOTIFY is not set
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CMOS_UPDATE=y

View File

@ -1,11 +1,9 @@
/*
* linux/include/asm-mips/mach-jz4740/jz4740.h
* arch/mips/include/asm/mach-jz4740/jz4740.h
* JZ4740 common definition.
*
* JZ4740 common definition.
*
* Copyright (C) 2006 - 2007 Ingenic Semiconductor Inc.
*
* Author: <lhhuang@ingenic.cn>
* Copyright (C) 2006 - 2007 Ingenic Semiconductor Inc.
* Author: <lhhuang@ingenic.cn>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
@ -18,7 +16,7 @@
#include <asm/mach-jz4740/regs.h>
#include <asm/mach-jz4740/dma.h>
/*------------------------------------------------------------------
/*
* Platform definitions
*/
@ -26,10 +24,4 @@
#include <asm/mach-jz4740/board-qi_lb60.h>
#endif
/*------------------------------------------------------------------
* Follows are related to platform definitions
*/
#include <asm/mach-jz4740/serial.h>
#endif /* __ASM_JZ4740_H__ */

View File

@ -1,30 +0,0 @@
/*
* linux/include/asm-mips/mach-jz4740/serial.h
*
* Ingenic's JZ4740 common include.
*
* Copyright (C) 2006 - 2007 Ingenic Semiconductor Inc.
*
* Author: <yliu@ingenic.cn>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef __ASM_BOARD_SERIAL_H__
#define __ASM_BOARD_SERIAL_H__
#ifndef CONFIG_SERIAL_MANY_PORTS
#undef RS_TABLE_SIZE
#define RS_TABLE_SIZE 1
#endif
#define JZ_BASE_BAUD (12000000/16)
#define JZ_SERIAL_PORT_DEFNS \
{ .baud_base = JZ_BASE_BAUD, .irq = IRQ_UART0, \
.flags = STD_COM_FLAGS, .iomem_base = (u8 *)UART0_BASE, \
.iomem_reg_shift = 2, .io_type = SERIAL_IO_MEM },
#endif /* __ASM_BORAD_SERIAL_H__ */

View File

@ -94,8 +94,12 @@ static struct mtd_partition qi_lb60_partitions_2gb[] = {
},
{ .name = "NAND ROOTFS partition",
.offset = 8 * 0x100000,
.size = (504 + 512 + 1024) * 0x100000,
.size = 256 * 0x100000,
},
{ .name = "NAND DATA partition",
.offset = 264 * 0x100000,
.size = 1784 * 0x100000,
},
};
static void qi_lb60_nand_ident(struct platform_device *pdev,
@ -120,16 +124,12 @@ static struct jz_nand_platform_data qi_lb60_nand_pdata = {
};
/* Keyboard*/
/* #define KEEP_UART_ALIVE
* don't define this. the keyboard and keyboard both work
*/
#define KEY_QI_VOLUP KEY_F11
#define KEY_QI_VOLDOWN KEY_F12
#define KEY_QI_QI KEY_F13
#define KEY_QI_UPRED KEY_RIGHTALT
#define KEY_QI_VOLUP KEY_VOLUMEUP
#define KEY_QI_VOLDOWN KEY_VOLUMEDOWN
#define KEY_QI_ACUTE KEY_GRAVE
#define KEY_QI_FN KEY_LEFTCTRL
#define KEY_QI_UPRED KEY_RIGHTALT
static const uint32_t qi_lb60_keymap[] = {
KEY(0, 0, KEY_F1), /* S2 */
@ -167,7 +167,7 @@ static const uint32_t qi_lb60_keymap[] = {
KEY(4, 0, KEY_TAB), /* S34 */
KEY(4, 1, KEY_CAPSLOCK), /* S35 */
KEY(4, 2, KEY_BACKSLASH), /* S36 */
KEY(4, 3, KEY_APOSTROPHE), /* S37 */
KEY(4, 3, KEY_QI_ACUTE), /* S37 */
KEY(4, 4, KEY_COMMA), /* S38 */
KEY(4, 5, KEY_DOT), /* S39 */
KEY(4, 6, KEY_SLASH), /* S40 */
@ -188,12 +188,9 @@ static const uint32_t qi_lb60_keymap[] = {
KEY(6, 5, KEY_QI_VOLDOWN), /* S55 */
KEY(6, 6, KEY_DOWN), /* S56 */
KEY(6, 7, KEY_RIGHT), /* S57 */
#ifndef KEEP_UART_ALIVE
KEY(7, 0, KEY_LEFTSHIFT), /* S58 */
KEY(7, 1, KEY_LEFTALT), /* S59 */
KEY(7, 2, KEY_QI_FN), /* S60 */
#endif
};
static const struct matrix_keymap_data qi_lb60_keymap_data = {
@ -206,10 +203,7 @@ static const unsigned int qi_lb60_keypad_cols[] = {
};
static const unsigned int qi_lb60_keypad_rows[] = {
114, 115, 116, 117, 118, 119, 120,
#ifndef KEEP_UART_ALIVE
122,
#endif
114, 115, 116, 117, 118, 119, 120, 122,
};
static struct matrix_keypad_platform_data qi_lb60_pdata = {

View File

@ -39,7 +39,6 @@
#include <asm/mach-jz4740/jz4740.h>
#include <asm/mach-jz4740/regs.h>
#include <asm/mach-jz4740/clock.h>
#include <asm/mach-jz4740/serial.h>
#include "clock.h"

View File

@ -98,12 +98,12 @@ static void jz4740_init_timer(void)
static void jz4740_timer_enable(unsigned int timer)
{
writel(BIT(timer), jz4740_timer_base + JZ_REG_TIMER_STOP_CLEAR);
writel(BIT(timer), jz4740_timer_base + JZ_REG_TIMER_ENABLE_SET);
writeb(BIT(timer), jz4740_timer_base + JZ_REG_TIMER_ENABLE_SET);
}
static void jz4740_timer_disable(unsigned int timer)
{
writel(BIT(timer), jz4740_timer_base + JZ_REG_TIMER_ENABLE_CLEAR);
writeb(BIT(timer), jz4740_timer_base + JZ_REG_TIMER_ENABLE_CLEAR);
writel(BIT(timer), jz4740_timer_base + JZ_REG_TIMER_STOP_SET);
}

View File

@ -11,7 +11,7 @@ u_short plain_map[NR_KEYS] = {
0xfb71, 0xfb77, 0xfb65, 0xfb72, 0xfb74, 0xfb79, 0xfb75, 0xfb69,
0xfb6f, 0xfb70, 0xf05b, 0xf05d, 0xf201, 0xf706, 0xfb61, 0xfb73,
0xfb64, 0xfb66, 0xfb67, 0xfb68, 0xfb6a, 0xfb6b, 0xfb6c, 0xf03b,
0xf027, 0xf060, 0xf700, 0xf05c, 0xfb7a, 0xfb78, 0xfb63, 0xfb76,
0xf027, 0xf0b4, 0xf700, 0xf05c, 0xfb7a, 0xfb78, 0xfb63, 0xfb76,
0xfb62, 0xfb6e, 0xfb6d, 0xf02c, 0xf02e, 0xf02f, 0xf701, 0xf30c,
0xf703, 0xf020, 0xf207, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104,
0xf105, 0xf106, 0xf107, 0xf108, 0xf109, 0xf208, 0xf209, 0xf307,
@ -46,13 +46,13 @@ static u_short shift_map[NR_KEYS] = {
0xfb51, 0xfb57, 0xfb45, 0xfb52, 0xfb54, 0xfb59, 0xfb55, 0xfb49,
0xfb4f, 0xfb50, 0xf07b, 0xf07d, 0xf201, 0xf706, 0xfb41, 0xfb53,
0xfb44, 0xfb46, 0xfb47, 0xfb48, 0xfb4a, 0xfb4b, 0xfb4c, 0xf03a,
0xf022, 0xf07e, 0xf700, 0xf07c, 0xfb5a, 0xfb58, 0xfb43, 0xfb56,
0xf022, 0xf060, 0xf700, 0xf07c, 0xfb5a, 0xfb58, 0xfb43, 0xfb56,
0xfb42, 0xfb4e, 0xfb4d, 0xf03b, 0xf03a, 0xf03f, 0xf701, 0xf30c,
0xf703, 0xf020, 0xf207, 0xf10a, 0xf10b, 0xf10c, 0xf10d, 0xf10e,
0xf10f, 0xf110, 0xf111, 0xf112, 0xf113, 0xf213, 0xf203, 0xf307,
0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
0xf302, 0xf303, 0xf300, 0xf310, 0xf206, 0xf200, 0xf03e, 0xf10a,
0xf10b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0xf302, 0xf303, 0xf300, 0xf310, 0xf206, 0xf200, 0xf03e, 0xf20b,
0xf20a, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0xf30e, 0xf702, 0xf30d, 0xf01c, 0xf701, 0xf205, 0xf114, 0xf603,
0xf20b, 0xf601, 0xf602, 0xf117, 0xf600, 0xf20a, 0xf115, 0xf116,
0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
@ -77,17 +77,17 @@ static u_short shift_map[NR_KEYS] = {
static u_short altgr_map[NR_KEYS] = {
0xf200, 0xf200, 0xf200, 0xf040, 0xf200, 0xf024, 0xf200, 0xf200,
0xf07b, 0xf05b, 0xf05d, 0xf07d, 0xf05c, 0xf07e, 0xf008, 0xf200,
0xf07b, 0xf05b, 0xf05d, 0xf07d, 0xf05c, 0xf07e, 0xf116, 0xf200,
0xf021, 0xf040, 0xf023, 0xf024, 0xf025, 0xf05e, 0xf026, 0xf02a,
0xf028, 0xf029, 0xf200, 0xf07e, 0xf201, 0xf706, 0xf0b0, 0xf0a8,
0xf0a4, 0xf02d, 0xf05f, 0xf07b, 0xf05b, 0xf05d, 0xf07d, 0xf200,
0xf200, 0xf200, 0xf700, 0xf200, 0xf039, 0xf030, 0xf916, 0xfb76,
0xf200, 0xf200, 0xf700, 0xf200, 0xfb7a, 0xfb78, 0xf916, 0xfb76,
0xf915, 0xf03c, 0xf03e, 0xf027, 0xf022, 0xf200, 0xf701, 0xf30c,
0xf703, 0xf200, 0xf207, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035,
0xf036, 0xf037, 0xf038, 0xf514, 0xf515, 0xf208, 0xf202, 0xf911,
0xf703, 0xf200, 0xf207, 0xf50c, 0xf50d, 0xf50e, 0xf50f, 0xf510,
0xf511, 0xf512, 0xf513, 0xf514, 0xf515, 0xf208, 0xf202, 0xf911,
0xf912, 0xf913, 0xf30b, 0xf90e, 0xf90f, 0xf910, 0xf30a, 0xf90b,
0xf90c, 0xf90d, 0xf90a, 0xf310, 0xf206, 0xf200, 0xf07c, 0xf516,
0xf517, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0xf90c, 0xf90d, 0xf90a, 0xf310, 0xf206, 0xf200, 0xf07c, 0xf118,
0xf119, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0xf30e, 0xf702, 0xf30d, 0xf01c, 0xf701, 0xf205, 0xf114, 0xf603,
0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
@ -116,7 +116,7 @@ static u_short ctrl_map[NR_KEYS] = {
0xf011, 0xf017, 0xf005, 0xf012, 0xf014, 0xf019, 0xf015, 0xf009,
0xf00f, 0xf010, 0xf01b, 0xf01d, 0xf201, 0xf706, 0xf001, 0xf013,
0xf004, 0xf006, 0xf007, 0xf008, 0xf00a, 0xf00b, 0xf00c, 0xf200,
0xf007, 0xf000, 0xf700, 0xf01c, 0xf01a, 0xf018, 0xf003, 0xf016,
0xf007, 0xf200, 0xf700, 0xf01c, 0xf01a, 0xf018, 0xf003, 0xf016,
0xf002, 0xf00e, 0xf00d, 0xf200, 0xf20e, 0xf07f, 0xf701, 0xf30c,
0xf703, 0xf000, 0xf207, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104,
0xf105, 0xf106, 0xf107, 0xf108, 0xf109, 0xf208, 0xf204, 0xf307,
@ -186,7 +186,7 @@ static u_short alt_map[NR_KEYS] = {
0xf871, 0xf877, 0xf865, 0xf872, 0xf874, 0xf879, 0xf875, 0xf869,
0xf86f, 0xf870, 0xf85b, 0xf85d, 0xf80d, 0xf706, 0xf861, 0xf873,
0xf864, 0xf866, 0xf867, 0xf868, 0xf86a, 0xf86b, 0xf86c, 0xf83b,
0xf827, 0xf860, 0xf700, 0xf85c, 0xf87a, 0xf878, 0xf863, 0xf876,
0xf827, 0xf200, 0xf700, 0xf85c, 0xf87a, 0xf878, 0xf863, 0xf876,
0xf862, 0xf86e, 0xf86d, 0xf200, 0xf200, 0xf82f, 0xf701, 0xf30c,
0xf703, 0xf820, 0xf207, 0xf500, 0xf501, 0xf502, 0xf503, 0xf504,
0xf505, 0xf506, 0xf507, 0xf508, 0xf509, 0xf208, 0xf209, 0xf907,
@ -324,8 +324,6 @@ char func_buf[] = {
'\033', '[', '1', '9', '~', 0,
'\033', '[', '2', '0', '~', 0,
'\033', '[', '2', '1', '~', 0,
'\033', '[', '2', '3', '~', 0,
'\033', '[', '2', '4', '~', 0,
'\033', '[', '2', '5', '~', 0,
'\033', '[', '2', '6', '~', 0,
'\033', '[', '2', '8', '~', 0,
@ -359,6 +357,8 @@ char *func_table[MAX_NR_FUNC] = {
func_buf + 37,
func_buf + 43,
func_buf + 49,
0,
0,
func_buf + 55,
func_buf + 61,
func_buf + 67,
@ -368,17 +368,15 @@ char *func_table[MAX_NR_FUNC] = {
func_buf + 91,
func_buf + 97,
func_buf + 103,
func_buf + 109,
func_buf + 115,
func_buf + 120,
func_buf + 125,
func_buf + 130,
func_buf + 135,
func_buf + 140,
func_buf + 145,
func_buf + 108,
func_buf + 113,
func_buf + 118,
func_buf + 123,
func_buf + 128,
func_buf + 133,
0,
0,
func_buf + 149,
func_buf + 137,
0,
};

View File

@ -176,6 +176,7 @@ static int __devinit gpm940b0_probe(struct spi_device *spi)
gpm940b0->enabled = 1;
dev_set_drvdata(&spi->dev, gpm940b0);
gpm940b0_write_reg(spi, 0x07, 0x8d);
gpm940b0_write_reg(spi, 0x13, 0x01);
gpm940b0_write_reg(spi, 0x5, 0xc7);
return 0;

View File

@ -221,6 +221,10 @@ static int jzfb_setcolreg(unsigned regno, unsigned red, unsigned green, unsigned
if (regno >= fb->cmap.len)
return -EINVAL;
red >>= 8;
green >>= 8;
blue >>= 8;
((uint32_t*)fb->pseudo_palette)[regno] = red << 16 | green << 8 | blue;
return 0;

View File

@ -259,8 +259,8 @@ static int jz4740_i2s_set_fmt(struct snd_soc_dai *dai,
}
static int jz4740_i2s_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params,
struct snd_soc_dai *dai)
struct snd_pcm_hw_params *params,
struct snd_soc_dai *dai)
{
struct jz4740_i2s *i2s = jz4740_dai_to_i2s(dai);
bool playback = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK);
@ -272,11 +272,11 @@ static int jz4740_i2s_hw_params(struct snd_pcm_substream *substream,
switch (params_format(params)) {
case SNDRV_PCM_FORMAT_S8:
sample_size = 0;
sample_size = 0;
dma_width = JZ4740_DMA_WIDTH_8BIT;
break;
break;
case SNDRV_PCM_FORMAT_S16:
sample_size = 1;
sample_size = 1;
dma_width = JZ4740_DMA_WIDTH_16BIT;
break;
default:
@ -285,22 +285,22 @@ static int jz4740_i2s_hw_params(struct snd_pcm_substream *substream,
if (playback) {
ctrl &= ~JZ_AIC_CTRL_OUTPUT_SAMPLE_SIZE_MASK;
ctrl |= sample_size << JZ_AIC_CTRL_OUTPUT_SAMPLE_SIZE_OFFSET;
ctrl |= sample_size << JZ_AIC_CTRL_OUTPUT_SAMPLE_SIZE_OFFSET;
} else {
ctrl &= ~JZ_AIC_CTRL_INPUT_SAMPLE_SIZE_MASK;
ctrl |= sample_size << JZ_AIC_CTRL_INPUT_SAMPLE_SIZE_OFFSET;
ctrl |= sample_size << JZ_AIC_CTRL_INPUT_SAMPLE_SIZE_OFFSET;
}
switch (params_channels(params)) {
case 2:
break;
break;
case 1:
if (playback) {
ctrl |= JZ_AIC_CTRL_MONO_TO_STEREO;
break;
}
if (playback) {
ctrl |= JZ_AIC_CTRL_MONO_TO_STEREO;
break;
}
default:
return -EINVAL;
return -EINVAL;
}
jz4740_i2s_write(i2s, JZ_REG_AIC_CTRL, ctrl);
@ -410,7 +410,7 @@ static int jz4740_i2s_probe(struct platform_device *pdev, struct snd_soc_dai *da
conf = (7 << JZ_AIC_CONF_FIFO_RX_THRESHOLD_OFFSET) |
(8 << JZ_AIC_CONF_FIFO_TX_THRESHOLD_OFFSET) |
JZ_AIC_CONF_OVERFLOW_PLAY_LAST |
JZ_AIC_CONF_I2S |
JZ_AIC_CONF_I2S |
JZ_AIC_CONF_INTERNAL_CODEC;
jz4740_i2s_write(i2s, JZ_REG_AIC_CONF, JZ_AIC_CONF_RESET);

View File

@ -19,6 +19,9 @@ endif
define Image/BuildKernel
cp $(LINUX_DIR)/arch/mips/boot/uImage $(BIN_DIR)/$(IMG_PREFIX)-uImage.bin
ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y)
cp $(LINUX_DIR)/arch/mips/boot/compressed/zImage $(BIN_DIR)/$(IMG_PREFIX)-zImage.bin
endif
endef
define Image/Build/squashfs

View File

@ -0,0 +1,300 @@
--- ./drivers/char/vt.c.orig 2010-03-16 04:52:04.000000000 +1300
+++ ./drivers/char/vt.c 2010-07-13 00:00:34.000000000 +1200
@@ -3894,6 +3894,7 @@
struct console_font font;
int rc = -EINVAL;
int size;
+ u8 std_font = *((u32*)op->data) != 0x6a127efd;
if (vc->vc_mode != KD_TEXT)
return -EINVAL;
@@ -3923,7 +3924,7 @@
}
if (op->width <= 0 || op->width > 32 || op->height > 32)
return -EINVAL;
- size = (op->width+7)/8 * 32 * op->charcount;
+ size = ( std_font ? (op->width+7)/8 * 32 : 4 * op->width * op->height) * op->charcount;
if (size > max_font_size)
return -ENOSPC;
font.charcount = op->charcount;
--- ./drivers/video/console/bitblit.c.orig 2010-07-01 11:30:17.000000000 +1200
+++ ./drivers/video/console/bitblit.c 2010-07-15 21:12:13.000000000 +1200
@@ -110,6 +110,12 @@
info->fbops->fb_imageblit(info, image);
}
+/* info: details of the framebuffer
+ * image: the off-screen image in which the character (sub)string is being
+ * prepared
+ * dst: a pointer to the top-left pixel in the off-screen image where the
+ * character (sub)string should go
+ */
static inline void bit_putcs_unaligned(struct vc_data *vc,
struct fb_info *info, const u16 *s,
u32 attr, u32 cnt, u32 d_pitch,
@@ -145,12 +151,62 @@
}
+void inline draw_glyph_row_inv( int pixels_across_glyph, u8 *src, u8 *target) {
+ u32 *pixel_on_glyph_sheet = (u32*) src;
+ u32 *pixel_on_screen = (u32*) target;
+
+ while( pixels_across_glyph--) {
+ *pixel_on_screen = ~(*pixel_on_glyph_sheet);
+ ++ pixel_on_glyph_sheet;
+ ++ pixel_on_screen;
+ }
+}
+
+void inline draw_glyph_row_75( int pixels_across_glyph, u8 *src, u8 *target) {
+ u32 pixel;
+ u32 *pixel_on_glyph_sheet = (u32*) src;
+ u32 *pixel_on_screen = (u32*) target;
+ /* Copy the pixels at 75% brightness */
+ while( pixels_across_glyph--) {
+ pixel = *pixel_on_glyph_sheet;
+ /* This is a cheeky way of multiplying by 0.75 */
+ pixel = ( pixel >> 1) & 0x7f7f7f7f;
+ pixel += ( pixel >> 1) & 0x7f7f7f7f;
+ *pixel_on_screen = pixel;
+ ++ pixel_on_glyph_sheet;
+ ++ pixel_on_screen;
+ }
+}
+
+/*
+ * width: the number of bytes required to store a single row of pixels from
+ * a glyph
+ * cellsize: the number of bytes required to store the pixels for a single
+ * glyph
+ * maxcnt: the maximum number of characters that can be blasted to the screen
+ * at one time ( limited by the amount of video RAM available for a
+ * (sub)string of characters)
+ * The NanoNote has 32-bits per pixel arranged BGRA
+ * info->fix.line_length: the number of bytes to advance through the frame
+ * buffer in order to get from the address of a pixel to
+ * the address of the pixel directly below it
+ * screen_row_hop: the number of 32-bit words to advance through the frame
+ * buffer in order to get from the address of a pixel to the
+ * address of the pixel directly below it on the screen
+ * glyph_on_screen: the address of the pixel on screen where the top-left of
+ * the next glyph should go
+ * row_on_screen: the address of the pixel on screen where the next row of
+ * pixels from the glyph should go
+ * row_on_glyph_sheet: pointer within font.data ( the glyph sheet) of the
+ * left-most pixel from the next row to be drawn
+ */
static void bit_putcs(struct vc_data *vc, struct fb_info *info,
const unsigned short *s, int count, int yy, int xx,
int fg, int bg)
{
struct fb_image image;
- u32 width = DIV_ROUND_UP(vc->vc_font.width, 8);
+ u8 std_font = *((u32*)vc->vc_font.data) != 0x6a127efd;
+ u32 width = std_font ? DIV_ROUND_UP(vc->vc_font.width, 8) : 4 * vc->vc_font.width;
u32 cellsize = width * vc->vc_font.height;
u32 maxcnt = info->pixmap.size/cellsize;
u32 scan_align = info->pixmap.scan_align - 1;
@@ -158,6 +214,10 @@
u32 mod = vc->vc_font.width % 8, cnt, pitch, size;
u32 attribute = get_attribute(info, scr_readw(s));
u8 *dst, *buf = NULL;
+ u32 screen_row_hop;
+ u16 charmask;
+ u8 *row_on_glyph_sheet, *glyph_on_screen, *row_on_screen;
+ u8 code_point, rows_left;
image.fg_color = fg;
image.bg_color = bg;
@@ -172,31 +232,73 @@
return;
}
- while (count) {
- if (count > maxcnt)
- cnt = maxcnt;
- else
- cnt = count;
-
- image.width = vc->vc_font.width * cnt;
- pitch = DIV_ROUND_UP(image.width, 8) + scan_align;
- pitch &= ~scan_align;
- size = pitch * image.height + buf_align;
- size &= ~buf_align;
- dst = fb_get_buffer_offset(info, &info->pixmap, size);
- image.data = dst;
-
- if (!mod)
- bit_putcs_aligned(vc, info, s, attribute, cnt, pitch,
- width, cellsize, &image, buf, dst);
- else
- bit_putcs_unaligned(vc, info, s, attribute, cnt,
- pitch, width, cellsize, &image,
- buf, dst);
-
- image.dx += cnt * vc->vc_font.width;
- count -= cnt;
- s += cnt;
+ if ( std_font) {
+ while (count) {
+ if (count > maxcnt)
+ cnt = maxcnt;
+ else
+ cnt = count;
+
+ image.width = vc->vc_font.width * cnt;
+ pitch = DIV_ROUND_UP(image.width, 8) + scan_align;
+ pitch &= ~scan_align;
+ size = pitch * image.height + buf_align;
+ size &= ~buf_align;
+ dst = fb_get_buffer_offset(info, &info->pixmap, size);
+ image.data = dst;
+
+ if (!mod)
+ bit_putcs_aligned(vc, info, s, attribute, cnt,
+ pitch, width, cellsize,
+ &image, buf, dst);
+ else
+ bit_putcs_unaligned(vc, info, s, attribute, cnt,
+ pitch, width, cellsize,
+ &image, buf, dst);
+
+ image.dx += cnt * vc->vc_font.width;
+ count -= cnt;
+ s += cnt;
+ }
+ }
+ else { /* The font is not a standard 1-bit font */
+ charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
+ screen_row_hop = info->fix.line_length;
+ glyph_on_screen = info->screen_base +
+ screen_row_hop * image.dy +
+ 4 * image.dx;
+ /* While there are still characters to draw.. */
+ while (count--) {
+ code_point = scr_readw(s++) & charmask;
+ row_on_glyph_sheet = vc->vc_font.data +
+ cellsize * code_point;
+ /* Draw every row of the glyph */
+ row_on_screen = glyph_on_screen;
+ rows_left = vc->vc_font.height;
+ while( rows_left--)
+ {
+ /* If the background color is NOT black then do
+ * reverse video */
+ if ( 0 < bg) {
+ draw_glyph_row_inv( vc->vc_font.width,
+ row_on_glyph_sheet,
+ row_on_screen);
+ }
+ /* If the foreground color is high-intensity */
+ else if ( 8 <= fg) {
+ memcpy( row_on_screen,
+ row_on_glyph_sheet, width);
+ }
+ else {
+ draw_glyph_row_75( vc->vc_font.width,
+ row_on_glyph_sheet,
+ row_on_screen);
+ }
+ row_on_glyph_sheet += width;
+ row_on_screen += screen_row_hop;
+ }
+ glyph_on_screen += width;
+ }
}
/* buf is always NULL except when in monochrome mode, so in this case
@@ -239,6 +341,29 @@
}
}
+static void bgra_cursor( struct vc_data *vc, struct fb_info *info, short c,
+ struct fb_cursor *cursor)
+{
+ u32 x = cursor->image.dx;
+ u32 y = cursor->image.dy;
+ u32 gw = vc->vc_font.width;
+ u32 gh = vc->vc_font.height;
+ u32 *pixel;
+
+ /* Draw the glyph to the screen */
+ bit_putcs( vc, info, &c, 1, y/gh, x/gw, 0, 0);
+
+ if ( cursor->enable) {
+ /* Invert the last row of pixels */
+ pixel = (u32*) ( info->screen_base +
+ info->fix.line_length * ( y + gh - 1) + 4 * x);
+ while ( gw--) {
+ *pixel ^= 0xffffffff;
+ ++ pixel;
+ }
+ }
+}
+
static void bit_cursor(struct vc_data *vc, struct fb_info *info, int mode,
int softback_lines, int fg, int bg)
{
@@ -250,6 +375,7 @@
int attribute, use_sw = (vc->vc_cursor_type & 0x10);
int err = 1;
char *src;
+ u8 std_font = *((u32*)vc->vc_font.data) != 0x6a127efd;
cursor.set = 0;
@@ -388,8 +514,14 @@
if (info->fbops->fb_cursor)
err = info->fbops->fb_cursor(info, &cursor);
- if (err)
- soft_cursor(info, &cursor);
+ if (err) {
+ if ( std_font) {
+ soft_cursor(info, &cursor);
+ }
+ else {
+ bgra_cursor( vc, info, c, &cursor);
+ }
+ }
ops->cursor_reset = 0;
}
--- ./drivers/video/console/fbcon.c.orig 2010-07-12 23:19:39.000000000 +1200
+++ ./drivers/video/console/fbcon.c 2010-07-13 20:18:41.000000000 +1200
@@ -2528,7 +2528,8 @@
int size;
int i, csum;
u8 *new_data, *data = font->data;
- int pitch = (font->width+7) >> 3;
+ u8 std_font = *((u32*)data) != 0x6a127efd;
+ int pitch = std_font ? (font->width+7) >> 3 : 4 * font->width;
/* Is there a reason why fbconsole couldn't handle any charcount >256?
* If not this check should be changed to charcount < 256 */
@@ -2547,6 +2548,7 @@
size = h * pitch * charcount;
new_data = kmalloc(FONT_EXTRA_WORDS * sizeof(int) + size, GFP_USER);
+ DPRINTK(KERN_INFO "fbcon_set_font size:%d\n", size);
if (!new_data)
return -ENOMEM;
@@ -2555,8 +2557,14 @@
FNTSIZE(new_data) = size;
FNTCHARCNT(new_data) = charcount;
REFCOUNT(new_data) = 0; /* usage counter */
- for (i=0; i< charcount; i++) {
- memcpy(new_data + i*h*pitch, data + i*32*pitch, h*pitch);
+ if ( std_font) {
+ for (i=0; i< charcount; i++) {
+ memcpy(new_data + i*h*pitch, data + i*32*pitch,
+ h*pitch);
+ }
+ }
+ else {
+ memcpy( new_data, data, size);
}
/* Since linux has a nice crc32 function use it for counting font

View File

@ -1,14 +1,18 @@
From d76e6b85f28891eecded962793fb8a02cdf26f39 Mon Sep 17 00:00:00 2001
From: Lars-Peter Clausen <lars@metafoo.de>
Date: Mon, 11 Jan 2010 04:29:51 +0100
Subject: [PATCH] /opt/Projects/openwrt/target/linux/xburst/patches-2.6.31/500-modifier-keys.patch
---
drivers/char/defkeymap.map | 74 +++++++++++++++++++++++++++++++-------------
1 files changed, 52 insertions(+), 22 deletions(-)
--- a/drivers/char/defkeymap.map
+++ b/drivers/char/defkeymap.map
drivers/char/defkeymap.map | 80 ++++++++++++++++++++++++++++++--------------
1 files changed, 54 insertions(+), 26 deletions(-)
Index: linux-2.6.32.10/drivers/char/defkeymap.map
===================================================================
--- linux-2.6.32.10.orig/drivers/char/defkeymap.map 2010-03-15 23:52:04.000000000 +0800
+++ linux-2.6.32.10/drivers/char/defkeymap.map 2010-06-04 21:50:10.855160218 +0800
@@ -1,5 +1,5 @@
# Default kernel keymap. This uses 7 modifier combinations.
-keymaps 0-2,4-5,8,12
@ -16,18 +20,15 @@ Subject: [PATCH] /opt/Projects/openwrt/target/linux/xburst/patches-2.6.31/500-mo
# Change the above line into
# keymaps 0-2,4-6,8,12
# in case you want the entries
@@ -45,24 +45,38 @@ keycode 12 = minus underscor
control keycode 12 = Control_underscore
shift control keycode 12 = Control_underscore
@@ -47,22 +47,36 @@
alt keycode 12 = Meta_minus
-keycode 13 = equal plus
+keycode 13 = equal plus
keycode 13 = equal plus
alt keycode 13 = Meta_equal
+ altgr keycode 13 = asciitilde
+ ctrll keycode 13 = three
keycode 14 = Delete Delete
- control keycode 14 = BackSpace
+ altgr keycode 14 = BackSpace
+ altgr keycode 14 = Remove
alt keycode 14 = Meta_Delete
keycode 15 = Tab Tab
alt keycode 15 = Meta_Tab
@ -58,7 +59,7 @@ Subject: [PATCH] /opt/Projects/openwrt/target/linux/xburst/patches-2.6.31/500-mo
keycode 26 = bracketleft braceleft
control keycode 26 = Escape
alt keycode 26 = Meta_bracketleft
@@ -71,19 +85,28 @@ keycode 27 = bracketright bracerigh
@@ -71,27 +85,34 @@
alt keycode 27 = Meta_bracketright
keycode 28 = Return
alt keycode 28 = Meta_Control_m
@ -91,16 +92,16 @@ Subject: [PATCH] /opt/Projects/openwrt/target/linux/xburst/patches-2.6.31/500-mo
keycode 39 = semicolon colon
alt keycode 39 = Meta_semicolon
keycode 40 = apostrophe quotedbl
@@ -97,58 +120,65 @@ keycode 43 = backslash bar
control keycode 40 = Control_g
alt keycode 40 = Meta_apostrophe
-keycode 41 = grave asciitilde
- control keycode 41 = nul
- alt keycode 41 = Meta_grave
+keycode 41 = U+00B4 grave
keycode 42 = Shift
keycode 43 = backslash bar
control keycode 43 = Control_backslash
alt keycode 43 = Meta_backslash
keycode 44 = z
+ altgr keycode 44 = nine
keycode 45 = x
+ altgr keycode 45 = zero
keycode 46 = c
altgr keycode 46 = Hex_C
keycode 47 = v
@@ -104,16 +125,21 @@
keycode 48 = b
altgr keycode 48 = Hex_B
keycode 49 = n
@ -127,55 +128,26 @@ Subject: [PATCH] /opt/Projects/openwrt/target/linux/xburst/patches-2.6.31/500-mo
keycode 55 = KP_Multiply
keycode 56 = Alt
keycode 57 = space space
control keycode 57 = nul
alt keycode 57 = Meta_space
keycode 58 = Caps_Lock
-keycode 59 = F1 F11 Console_13
+keycode 59 = F1 F11 one
control keycode 59 = F1
alt keycode 59 = Console_1
control alt keycode 59 = Console_1
-keycode 60 = F2 F12 Console_14
+keycode 60 = F2 F12 two
control keycode 60 = F2
alt keycode 60 = Console_2
control alt keycode 60 = Console_2
-keycode 61 = F3 F13 Console_15
+keycode 61 = F3 F13 three
control keycode 61 = F3
alt keycode 61 = Console_3
control alt keycode 61 = Console_3
-keycode 62 = F4 F14 Console_16
+keycode 62 = F4 F14 four
control keycode 62 = F4
alt keycode 62 = Console_4
control alt keycode 62 = Console_4
-keycode 63 = F5 F15 Console_17
+keycode 63 = F5 F15 five
control keycode 63 = F5
alt keycode 63 = Console_5
control alt keycode 63 = Console_5
-keycode 64 = F6 F16 Console_18
+keycode 64 = F6 F16 six
control keycode 64 = F6
alt keycode 64 = Console_6
control alt keycode 64 = Console_6
-keycode 65 = F7 F17 Console_19
+keycode 65 = F7 F17 seven
control keycode 65 = F7
alt keycode 65 = Console_7
control alt keycode 65 = Console_7
-keycode 66 = F8 F18 Console_20
+keycode 66 = F8 F18 eight
control keycode 66 = F8
alt keycode 66 = Console_8
control alt keycode 66 = Console_8
@@ -220,7 +250,7 @@ keycode 93 =
keycode 94 =
keycode 95 =
keycode 96 = KP_Enter
-keycode 97 = Control
+keycode 97 = Control
keycode 98 = KP_Divide
keycode 99 = Control_backslash
control keycode 99 = Control_backslash
@@ -204,11 +230,11 @@
keycode 85 =
keycode 86 = less greater bar
alt keycode 86 = Meta_less
-keycode 87 = F11 F11 Console_23
+keycode 87 = F11 Scroll_Backward Prior
control keycode 87 = F11
alt keycode 87 = Console_11
control alt keycode 87 = Console_11
-keycode 88 = F12 F12 Console_24
+keycode 88 = F12 Scroll_Forward Next
control keycode 88 = F12
alt keycode 88 = Console_12
control alt keycode 88 = Console_12
@@ -269,8 +295,6 @@
string F8 = "\033[19~"
string F9 = "\033[20~"
string F10 = "\033[21~"
-string F11 = "\033[23~"
-string F12 = "\033[24~"
string F13 = "\033[25~"
string F14 = "\033[26~"
string F15 = "\033[28~"

View File

@ -0,0 +1,58 @@
From 4939c63a61175f87d93ac0164c7adb40e8410a47 Mon Sep 17 00:00:00 2001
From: Xiangfu Liu <xiangfu@qi-hardware.com>
Date: Sun, 17 Jan 2010 23:38:35 +0800
Subject: [PATCH] ix upload zImage
---
arch/mips/boot/compressed/head.S | 1 -
arch/mips/boot/compressed/misc.c | 22 ----------------------
2 files changed, 0 insertions(+), 23 deletions(-)
diff --git a/arch/mips/boot/compressed/head.S b/arch/mips/boot/compressed/head.S
index d9700eb..6a4e685 100644
--- a/arch/mips/boot/compressed/head.S
+++ b/arch/mips/boot/compressed/head.S
@@ -5,7 +5,6 @@
*/
#include <asm/asm.h>
-#include <asm/cacheops.h>
#include <asm/cachectl.h>
#include <asm/regdef.h>
diff --git a/arch/mips/boot/compressed/misc.c b/arch/mips/boot/compressed/misc.c
index 2309fee..c0b041b 100644
--- a/arch/mips/boot/compressed/misc.c
+++ b/arch/mips/boot/compressed/misc.c
@@ -103,28 +103,6 @@ static unsigned long free_mem_end_ptr;
#include "../../../../lib/inflate.c"
-static void *malloc(int size)
-{
- void *p;
-
- if (size <0) error("Malloc error\n");
- if (free_mem_ptr == 0) error("Memory error\n");
-
- free_mem_ptr = (free_mem_ptr + 3) & ~3; /* Align */
-
- p = (void *)free_mem_ptr;
- free_mem_ptr += size;
-
- if (free_mem_ptr >= free_mem_end_ptr)
- error("\nOut of memory\n");
-
- return p;
-}
-
-static void free(void *where)
-{ /* Don't care */
-}
-
static void gzip_mark(void **ptr)
{
*ptr = (void *) free_mem_ptr;
--
1.6.3.3

View File

@ -1,7 +1,9 @@
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BATTERY_JZ4740=y
CONFIG_CHARGER_GPIO=y
CONFIG_CMDLINE="root=/dev/ram0 rootfstype=ramfs console=ttyS0,57600 console=tty0 mem=32M"
CONFIG_FB_JZ4740=y
CONFIG_FONT_6x11=y
# CONFIG_FONT_SUN8x16 is not set
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_JZ4740_ADC=y
CONFIG_JZ4740_QI_LB60=y
@ -11,7 +13,10 @@ CONFIG_LCD_CLASS_DEVICE=y
CONFIG_LCD_GPM940B0=y
CONFIG_LOGO=y
CONFIG_LOGO_OPENWRT_CLUT224=y
CONFIG_MIPS_FPU_EMU=y
CONFIG_SOC_JZ4740=y
CONFIG_SPI=y
CONFIG_SPI_BITBANG=y
CONFIG_SPI_GPIO=y
CONFIG_SPI_MASTER=y
CONFIG_USB_ETH_RNDIS=n