diff --git a/target/linux/xburst/Makefile b/target/linux/xburst/Makefile index c94d68c27..32e85cf33 100644 --- a/target/linux/xburst/Makefile +++ b/target/linux/xburst/Makefile @@ -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. diff --git a/target/linux/xburst/base-files/etc/config/fstab b/target/linux/xburst/base-files/etc/config/fstab deleted file mode 100644 index 522356112..000000000 --- a/target/linux/xburst/base-files/etc/config/fstab +++ /dev/null @@ -1,6 +0,0 @@ -config mount - option target /card - option device /dev/mmcblk0p1 - option fstype auto - option options rw,sync - option enabled 1 diff --git a/target/linux/xburst/base-files/etc/config/network b/target/linux/xburst/base-files/etc/config/network index a086003e3..8f8ab4bd7 100644 --- a/target/linux/xburst/base-files/etc/config/network +++ b/target/linux/xburst/base-files/etc/config/network @@ -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 diff --git a/target/linux/xburst/base-files/etc/inittab b/target/linux/xburst/base-files/etc/inittab new file mode 100644 index 000000000..c638c2517 --- /dev/null +++ b/target/linux/xburst/base-files/etc/inittab @@ -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 diff --git a/target/linux/xburst/base-files/etc/opkg.conf b/target/linux/xburst/base-files/etc/opkg.conf new file mode 100644 index 000000000..838181f78 --- /dev/null +++ b/target/linux/xburst/base-files/etc/opkg.conf @@ -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 diff --git a/target/linux/xburst/config-2.6.32 b/target/linux/xburst/config-2.6.32 index a8ae91569..bf119e466 100644 --- a/target/linux/xburst/config-2.6.32 +++ b/target/linux/xburst/config-2.6.32 @@ -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 diff --git a/target/linux/xburst/files-2.6.32/arch/mips/include/asm/mach-jz4740/jz4740.h b/target/linux/xburst/files-2.6.32/arch/mips/include/asm/mach-jz4740/jz4740.h index 9885db243..5a8c6aa38 100644 --- a/target/linux/xburst/files-2.6.32/arch/mips/include/asm/mach-jz4740/jz4740.h +++ b/target/linux/xburst/files-2.6.32/arch/mips/include/asm/mach-jz4740/jz4740.h @@ -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: + * Copyright (C) 2006 - 2007 Ingenic Semiconductor Inc. + * Author: * * 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 #include -/*------------------------------------------------------------------ +/* * Platform definitions */ @@ -26,10 +24,4 @@ #include #endif -/*------------------------------------------------------------------ - * Follows are related to platform definitions - */ - -#include - #endif /* __ASM_JZ4740_H__ */ diff --git a/target/linux/xburst/files-2.6.32/arch/mips/include/asm/mach-jz4740/serial.h b/target/linux/xburst/files-2.6.32/arch/mips/include/asm/mach-jz4740/serial.h deleted file mode 100644 index c4819b982..000000000 --- a/target/linux/xburst/files-2.6.32/arch/mips/include/asm/mach-jz4740/serial.h +++ /dev/null @@ -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: - * - * 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__ */ diff --git a/target/linux/xburst/files-2.6.32/arch/mips/jz4740/board-qi_lb60.c b/target/linux/xburst/files-2.6.32/arch/mips/jz4740/board-qi_lb60.c index 800441716..617c755eb 100644 --- a/target/linux/xburst/files-2.6.32/arch/mips/jz4740/board-qi_lb60.c +++ b/target/linux/xburst/files-2.6.32/arch/mips/jz4740/board-qi_lb60.c @@ -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 = { diff --git a/target/linux/xburst/files-2.6.32/arch/mips/jz4740/setup.c b/target/linux/xburst/files-2.6.32/arch/mips/jz4740/setup.c index f475ff6dd..bfb8c0f2b 100644 --- a/target/linux/xburst/files-2.6.32/arch/mips/jz4740/setup.c +++ b/target/linux/xburst/files-2.6.32/arch/mips/jz4740/setup.c @@ -39,7 +39,6 @@ #include #include #include -#include #include "clock.h" diff --git a/target/linux/xburst/files-2.6.32/arch/mips/jz4740/time.c b/target/linux/xburst/files-2.6.32/arch/mips/jz4740/time.c index d9c5eba61..77fc2012e 100644 --- a/target/linux/xburst/files-2.6.32/arch/mips/jz4740/time.c +++ b/target/linux/xburst/files-2.6.32/arch/mips/jz4740/time.c @@ -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); } diff --git a/target/linux/xburst/files-2.6.32/drivers/char/defkeymap.c_shipped b/target/linux/xburst/files-2.6.32/drivers/char/defkeymap.c_shipped index fca8d595a..8622b2a3a 100644 --- a/target/linux/xburst/files-2.6.32/drivers/char/defkeymap.c_shipped +++ b/target/linux/xburst/files-2.6.32/drivers/char/defkeymap.c_shipped @@ -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, }; diff --git a/target/linux/xburst/files-2.6.32/drivers/video/backlight/gpm940b0.c b/target/linux/xburst/files-2.6.32/drivers/video/backlight/gpm940b0.c index 5cfb12f0e..63950b62b 100644 --- a/target/linux/xburst/files-2.6.32/drivers/video/backlight/gpm940b0.c +++ b/target/linux/xburst/files-2.6.32/drivers/video/backlight/gpm940b0.c @@ -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; diff --git a/target/linux/xburst/files-2.6.32/drivers/video/jz4740_fb.c b/target/linux/xburst/files-2.6.32/drivers/video/jz4740_fb.c index eeb702a6f..4f717080d 100644 --- a/target/linux/xburst/files-2.6.32/drivers/video/jz4740_fb.c +++ b/target/linux/xburst/files-2.6.32/drivers/video/jz4740_fb.c @@ -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; diff --git a/target/linux/xburst/files-2.6.32/sound/soc/jz4740/jz4740-i2s.c b/target/linux/xburst/files-2.6.32/sound/soc/jz4740/jz4740-i2s.c index c1e070bfd..fdea249b7 100644 --- a/target/linux/xburst/files-2.6.32/sound/soc/jz4740/jz4740-i2s.c +++ b/target/linux/xburst/files-2.6.32/sound/soc/jz4740/jz4740-i2s.c @@ -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); diff --git a/target/linux/xburst/image/Makefile b/target/linux/xburst/image/Makefile index c445494c7..21aac898b 100644 --- a/target/linux/xburst/image/Makefile +++ b/target/linux/xburst/image/Makefile @@ -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 diff --git a/target/linux/xburst/patches-2.6.32/450-fbcon-color-fonts.patch b/target/linux/xburst/patches-2.6.32/450-fbcon-color-fonts.patch new file mode 100644 index 000000000..0f0ee8cc3 --- /dev/null +++ b/target/linux/xburst/patches-2.6.32/450-fbcon-color-fonts.patch @@ -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 diff --git a/target/linux/xburst/patches-2.6.32/500-modifier-keys.patch b/target/linux/xburst/patches-2.6.32/500-modifier-keys.patch index 9a42684b7..86316e988 100644 --- a/target/linux/xburst/patches-2.6.32/500-modifier-keys.patch +++ b/target/linux/xburst/patches-2.6.32/500-modifier-keys.patch @@ -1,14 +1,18 @@ From d76e6b85f28891eecded962793fb8a02cdf26f39 Mon Sep 17 00:00:00 2001 + From: Lars-Peter Clausen -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~" diff --git a/target/linux/xburst/patches-2.6.32/600-fix-compile-zImage.patch b/target/linux/xburst/patches-2.6.32/600-fix-compile-zImage.patch new file mode 100644 index 000000000..e5f72c848 --- /dev/null +++ b/target/linux/xburst/patches-2.6.32/600-fix-compile-zImage.patch @@ -0,0 +1,58 @@ +From 4939c63a61175f87d93ac0164c7adb40e8410a47 Mon Sep 17 00:00:00 2001 +From: Xiangfu Liu +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 +-#include + #include + #include + +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 + diff --git a/target/linux/xburst/qi_lb60/config-2.6.32 b/target/linux/xburst/qi_lb60/config-2.6.32 index d052f128c..501a71ca7 100644 --- a/target/linux/xburst/qi_lb60/config-2.6.32 +++ b/target/linux/xburst/qi_lb60/config-2.6.32 @@ -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