?? uclinux44b0.patch
字號:
diff -Nur uClinux-dist.040408.original/linux-2.4.x/arch/armnommu/Makefile uClinux-dist/linux-2.4.x/arch/armnommu/Makefile--- uClinux-dist.040408.original/linux-2.4.x/arch/armnommu/Makefile 2004-04-08 08:15:01.000000000 +0800+++ uClinux-dist/linux-2.4.x/arch/armnommu/Makefile 2005-03-29 09:57:34.843750000 +0800@@ -239,7 +239,7 @@ endif ifeq ($(CONFIG_BOARD_MBA44),y)-TEXTADDR = 0x0c000000+TEXTADDR = 0x0c008000 MACHINE = S3C44B0X INCDIR = $(MACHINE) CORE_FILES := $(CORE_FILES) romfs.odiff -Nur uClinux-dist.040408.original/linux-2.4.x/arch/armnommu/boot/Makefile uClinux-dist/linux-2.4.x/arch/armnommu/boot/Makefile--- uClinux-dist.040408.original/linux-2.4.x/arch/armnommu/boot/Makefile 2004-04-08 08:14:58.000000000 +0800+++ uClinux-dist/linux-2.4.x/arch/armnommu/boot/Makefile 2005-03-29 09:57:34.890625000 +0800@@ -117,6 +117,11 @@ endif endif +ifeq ($(CONFIG_BOARD_MBA44),y)+ZRELADDR = 0x0c008000+ZTEXTADDR = 0x0c300000+endif+ # # If you don't define ZRELADDR above, # then it defaults to ZTEXTADDR--- uClinux-dist/user/mtd-utils/Makefile 2004-04-08 08:23:55.000000000 +0800+++ uClinux-dist/user/mtd-utils.bak/Makefile 2006-02-28 14:14:01.000000000 +0800@@ -31,7 +31,7 @@ BUILD_JFFS2_OBJS = $(patsubst %,build/%,$(JFFS2_OBJS)) -all: build $(TARGETS) $(BUILD_TARGETS)+all: build $(TARGETS) #$(BUILD_TARGETS) .PHONY: build:diff -Nur uClinux-dist.040408.original/linux-2.4.x/arch/armnommu/boot/compressed/Makefile uClinux-dist/linux-2.4.x/arch/armnommu/boot/compressed/Makefile--- uClinux-dist.040408.original/linux-2.4.x/arch/armnommu/boot/compressed/Makefile 2004-04-08 08:14:59.000000000 +0800+++ uClinux-dist/linux-2.4.x/arch/armnommu/boot/compressed/Makefile 2005-03-29 09:57:34.921875000 +0800@@ -83,7 +83,8 @@ piggy.o: $(SYSTEM) $(OBJCOPY) -O binary -R .note -R .comment -S $(SYSTEM) piggy- gzip $(GZFLAGS) < piggy > piggy.gz+# gzip $(GZFLAGS) < piggy > piggy.gz+ gzip $(GZFLAGS) piggy $(LD) -r $(PIGOFLAGS) -o $@ -b binary piggy.gz rm -f piggy piggy.gz diff -Nur uClinux-dist.040408.original/linux-2.4.x/arch/armnommu/boot/compressed/head.S uClinux-dist/linux-2.4.x/arch/armnommu/boot/compressed/head.S--- uClinux-dist.040408.original/linux-2.4.x/arch/armnommu/boot/compressed/head.S 2004-04-08 08:14:59.000000000 +0800+++ uClinux-dist/linux-2.4.x/arch/armnommu/boot/compressed/head.S 2005-03-29 09:57:34.953125000 +0800@@ -10,7 +10,7 @@ #include <linux/config.h> #include <linux/linkage.h> -#ifdef CONFIG_BOARD_SNDS100+#if defined(CONFIG_BOARD_SNDS100) || defined(CONFIG_BOARD_MBA44) #include <asm/hardware.h> #endif @@ -187,7 +187,7 @@ blt 1b #ifdef CONFIG_CPU_WITH_CACHE-#ifndef CONFIG_BOARD_SNDS100+#if !defined(CONFIG_BOARD_SNDS100) && !defined(CONFIG_BOARD_MBA44) mrc p15, 0, r6, c0, c0 @ get processor ID bl cache_on #endif@@ -199,12 +199,18 @@ orr r2, r2, #6 str r2, [r0] #endif+#ifdef CONFIG_BOARD_MBA44+ ldr r0, =S3C44B0X_SYSCFG+ ldr r2, [r0]+ orr r2, r2, #0xe+ str r2, [r0]+#endif #endif mov r1, sp @ malloc space above stack add r2, sp, #0x10000 @ 64k max -#ifndef CONFIG_BOARD_SNDS100+#if defined(CONFIG_BOARD_SNDS100) || defined(CONFIG_BOARD_MBA44) teq r4, r5 @ will we overwrite ourselves? moveq r5, r2 @ decompress after image movne r5, r4 @ decompress to final location@@ -429,7 +435,15 @@ str r1, [r0] mov pc, lr #endif-#ifndef CONFIG_BOARD_SNDS100+/*#ifndef CONFIG_BOARD_SNDS100*/+#ifdef CONFIG_BOARD_MBA44+ ldr r0, =S3C44B0X_SYSCFG+ ldr r1, [r0]+ orr r1, r1, #0xe+ str r1, [r0]+ mov pc, lr+#endif+#if !defined(CONFIG_BOARD_SNDS100) && !defined(CONFIG_BOARD_MBA44) #ifdef CONFIG_CPU_ARM610 eor r1, r6, #0x41000000 eor r1, r1, #0x00560000@@ -485,7 +499,11 @@ bne cache_flush_loop mov pc, lr #endif-#ifndef CONFIG_BOARD_SNDS100+/*#ifndef CONFIG_BOARD_SNDS100*/+#ifdef CONFIG_BOARD_MBA44+ mov pc, lr+#endif+#if !defined(CONFIG_BOARD_SNDS100) && !defined(CONFIG_BOARD_MBA44) ldr r1, proc_sa110_type eor r1, r1, r6 movs r1, r1, lsr #5 @ catch SA110 and SA1100diff -Nur uClinux-dist.040408.original/linux-2.4.x/arch/armnommu/boot/compressed/misc.c uClinux-dist/linux-2.4.x/arch/armnommu/boot/compressed/misc.c--- uClinux-dist.040408.original/linux-2.4.x/arch/armnommu/boot/compressed/misc.c 2004-04-08 08:14:59.000000000 +0800+++ uClinux-dist/linux-2.4.x/arch/armnommu/boot/compressed/misc.c 2005-03-29 09:57:34.984375000 +0800@@ -301,10 +301,10 @@ free_mem_ptr = free_mem_ptr_p; free_mem_ptr_end = free_mem_ptr_end_p; __machine_arch_type = arch_id;-+ if(output_data==0x0c008000)+ puts("Decompress to 0x0c008000\n"); proc_decomp_setup(); arch_decomp_setup();- makecrc(); puts("Uncompressing Linux..."); gunzip();diff -Nur uClinux-dist.040408.original/linux-2.4.x/arch/armnommu/config.in uClinux-dist/linux-2.4.x/arch/armnommu/config.in--- uClinux-dist.040408.original/linux-2.4.x/arch/armnommu/config.in 2004-04-08 08:15:01.000000000 +0800+++ uClinux-dist/linux-2.4.x/arch/armnommu/config.in 2005-03-29 09:57:35.015625000 +0800@@ -349,9 +349,9 @@ define_bool CONFIG_NO_PGT_CACHE y define_bool CONFIG_CPU_WITH_CACHE y define_bool CONFIG_CPU_WITH_MCR_INSTRUCTION n- define_int CONFIG_ARM_CLK 60000000+ define_int CONFIG_ARM_CLK 64000000 define_bool CONFIG_SERIAL_S3C44B0X y- define_int CONFIG_FORCE_MAX_ZONEORDER 5+ define_int CONFIG_FORCE_MAX_ZONEORDER 10 if [ "$CONFIG_SET_MEM_PARAM" = "n" ]; then define_hex DRAM_BASE 0x00000000 define_hex DRAM_SIZE 0x00800000diff -Nur uClinux-dist.040408.original/linux-2.4.x/arch/armnommu/mach-S3C44B0X/arch.c uClinux-dist/linux-2.4.x/arch/armnommu/mach-S3C44B0X/arch.c--- uClinux-dist.040408.original/linux-2.4.x/arch/armnommu/mach-S3C44B0X/arch.c 2004-04-08 08:15:25.000000000 +0800+++ uClinux-dist/linux-2.4.x/arch/armnommu/mach-S3C44B0X/arch.c 2005-03-29 09:57:35.078125000 +0800@@ -31,3 +31,4 @@ /* * @todo activate the hardware reset */+}\ No newline at end of filediff -Nur uClinux-dist.040408.original/linux-2.4.x/arch/armnommu/mm/init.c uClinux-dist/linux-2.4.x/arch/armnommu/mm/init.c--- uClinux-dist.040408.original/linux-2.4.x/arch/armnommu/mm/init.c 2004-04-08 08:15:08.000000000 +0800+++ uClinux-dist/linux-2.4.x/arch/armnommu/mm/init.c 2005-03-29 09:57:35.125000000 +0800@@ -381,6 +381,9 @@ machine_is_smdk2500() || machine_is_S3C2500REFRGP() ) reserve_bootmem_node(pgdat, 0, __pa(&_stext)); + /* added by Embest */+ if(machine_is_S3C44B0X())+ reserve_bootmem_node(pgdat, DRAM_BASE, __pa(&_stext)-DRAM_BASE); /* * These should likewise go elsewhere. They pre-reservediff -Nur uClinux-dist.040408.original/linux-2.4.x/arch/armnommu/vmlinux-armv.lds.in uClinux-dist/linux-2.4.x/arch/armnommu/vmlinux-armv.lds.in--- uClinux-dist.040408.original/linux-2.4.x/arch/armnommu/vmlinux-armv.lds.in 2004-04-08 08:15:01.000000000 +0800+++ uClinux-dist/linux-2.4.x/arch/armnommu/vmlinux-armv.lds.in 2005-03-29 09:57:35.140625000 +0800@@ -63,7 +63,10 @@ __stop___kallsyms = .; *(.got) /* Global offset table */-+ romfs_data = .;+ romfs.o+ romfs_data_end = .;+ _etext = .; /* End of text section */ } diff -Nur uClinux-dist.040408.original/linux-2.4.x/drivers/block/blkmem.c uClinux-dist/linux-2.4.x/drivers/block/blkmem.c--- uClinux-dist.040408.original/linux-2.4.x/drivers/block/blkmem.c 2004-04-08 08:16:15.000000000 +0800+++ uClinux-dist/linux-2.4.x/drivers/block/blkmem.c 2005-03-29 09:57:34.468750000 +0800@@ -90,6 +90,12 @@ extern char romfs_data_end[]; #endif +// added by Embest+#ifdef CONFIG_BOARD_MBA44+extern char romfs_data[];+extern char romfs_data_end[];+#endif+ /* v850e; this config stuff is ugly, ugly, ugly! */ #ifdef CONFIG_V850E #include <asm/blkmem.h>@@ -384,6 +390,11 @@ {0, romfs_data, -1}, #endif +// added by Embest+#ifdef CONFIG_BOARD_MBA44+ {0, romfs_data, -1},+#endif+ #if defined(CONFIG_ARCH_CNXT) && !defined(CONFIG_ARCH_CX821XX) /* AM29LV004T flash * rom0 -- root file-systemdiff -Nur uClinux-dist.040408.original/linux-2.4.x/drivers/net/Config.in uClinux-dist/linux-2.4.x/drivers/net/Config.in--- uClinux-dist.040408.original/linux-2.4.x/drivers/net/Config.in 2004-04-08 08:16:27.000000000 +0800+++ uClinux-dist/linux-2.4.x/drivers/net/Config.in 2005-03-29 14:37:14.421875000 +0800@@ -24,7 +24,13 @@ comment 'Ethernet (10 or 100Mbit)' bool 'Ethernet (10 or 100Mbit)' CONFIG_NET_ETHERNET if [ "$CONFIG_NET_ETHERNET" = "y" ]; then-+ if [ "$CONFIG_CPU_S3C44B0X" = "y" ]; then+ tristate ' S3CEV40 RTL8019AS ethernet support' CONFIG_ETH_RTL8019+ bool ' EduKit-II CrystalLAN CS8900A ethernet support' CONFIG_ETH_CS8900A+ if [ "$CONFIG_ETH_CS8900A" = "y" ]; then+ string ' EduKit-II CS8900A MAC Address' CS8900A_HWADDR 00:00:00:00:00:00+ fi+ fi if [ "$CONFIG_CPU_S3C2500" = "y" ]; then bool ' Samsung S3C2500 Embedded Ethernet support' CONFIG_ETH_S3C2500 if [ "$CONFIG_UCBOOTSTRAP" != "y" ]; thendiff -Nur uClinux-dist.040408.original/linux-2.4.x/drivers/net/Makefile uClinux-dist/linux-2.4.x/drivers/net/Makefile--- uClinux-dist.040408.original/linux-2.4.x/drivers/net/Makefile 2004-04-08 08:16:27.000000000 +0800+++ uClinux-dist/linux-2.4.x/drivers/net/Makefile 2005-03-29 15:00:19.156250000 +0800@@ -168,6 +168,8 @@ obj-$(CONFIG_VIA_RHINE_FET) += linuxfet.o obj-$(CONFIG_ETH_S3C2500) += s3c2500.o obj-$(CONFIG_ETH_S3C4510) += s3c4510.o+obj-$(CONFIG_ETH_RTL8019) += rtl8019.o+obj-$(CONFIG_ETH_CS8900A) += ekii-cs8900a.o obj-$(CONFIG_ETH_S3C4530) += s3c4530.o obj-$(CONFIG_SMC91111) += smc91111.o obj-$(CONFIG_FEC) += fec.odiff -Nur uClinux-dist.040408.original/linux-2.4.x/drivers/net/ekii-cs8900a.c uClinux-dist/linux-2.4.x/drivers/net/ekii-cs8900a.c--- uClinux-dist.040408.original/linux-2.4.x/drivers/net/ekii-cs8900a.c 1970-01-01 08:00:00.000000000 +0800+++ uClinux-dist/linux-2.4.x/drivers/net/ekii-cs8900a.c 2005-03-29 09:53:26.265625000 +0800@@ -0,0 +1,577 @@+/*+* linux/deriver/net/ekii-cs8900a.c+* Ethernet driver for Embest EduKit II+* Copyright (C) 2005 Embest <www.embedinfo.com>+*/+#include <linux/config.h>+#include <linux/module.h>++#include <linux/autoconf.h>+#include <linux/init.h>+#include <linux/sched.h>+#include <linux/kernel.h>+#include <linux/slab.h> // kmalloc()+#include <linux/errno.h> // error codes+#include <linux/types.h> // size_t+#include <linux/interrupt.h> // mark_bh+#include <linux/in.h>+#include <linux/netdevice.h> // net_device+#include <linux/etherdevice.h>+#include <linux/ip.h>+#include <linux/tcp.h>+#include <linux/skbuff.h>+#include <asm/irq.h>+#include "ekii-cs8900a.h"+++#define MEM_BASE 0x06000000L+#define IO_BASE 0x07000300L++#define io_write(addr, val) (*(volatile unsigned short *)(addr) = val)+#define io_read(addr) ((unsigned short)*(volatile unsigned short *)(addr))++#undef DEBUG+#ifdef DEBUG+#define TRACE(str, args...) printk("CS8900A eth: " str, ## args)+#else+#define TRACE(str, args...)+#endif+++struct cs8900a_priv {+ struct net_device_stats stats;+ spinlock_t lock;+ int dev_open;+};+++/*+* tx watchdog ticks 100 = 1s+*/+static int timeout = 100;+static char *version = "CrystalLAN CS8900A Ethernet driver version 1.0 (2005-03-18) <www.embedinfo.com>\n";+static char mac_addr[ETH_ALEN] = { 0x00,0x06,0x98,0x01,0x7E,0x8F };+++static inline void reg_write(unsigned short reg, unsigned short val)+{+ io_write((MEM_BASE+reg), val);+}+++static inline unsigned short reg_read(unsigned short reg)+{+ return io_read(MEM_BASE+reg);+}++++/*+static inline void reg_write(unsigned short reg, unsigned short val)+{+ io_write(IO_BASE+IO_PACKETPAGE_POINTER, reg);+ io_write(IO_BASE+IO_PACKETPAGE_DATA0, val);+}+++static inline unsigned short reg_read(unsigned short reg)+{+ io_write(IO_BASE+IO_PACKETPAGE_POINTER, reg);+ return io_read(IO_BASE+IO_PACKETPAGE_DATA0);+}+*/+++static int cs8900a_chip_probe(void)+{+ unsigned short id, sign;++ sign = io_read(IO_BASE+IO_PACKETPAGE_POINTER);++ io_write(IO_BASE+IO_PACKETPAGE_POINTER, REG_Identification);+ id = io_read(IO_BASE+IO_PACKETPAGE_DATA0);++ if(sign != ID_SIGNATURE || id != ID_CODE)+ return -ENODEV;++ return 0;+}+++static int cs8900a_chip_reset(void)+{+ int i;+ unsigned short result;++ /* software reset */+ io_write(IO_BASE+IO_PACKETPAGE_POINTER, REG_SelfCTL);+ io_write(IO_BASE+IO_PACKETPAGE_DATA0, RESET|SelfCTL_LOW);++ /* while INITD bit set */+ for(i=0; i<timeout; i++)+ {+ set_current_state(TASK_UNINTERRUPTIBLE);+ schedule_timeout(1);+ io_write(IO_BASE+IO_PACKETPAGE_POINTER, REG_SelfST);+ result = io_read(IO_BASE+IO_PACKETPAGE_DATA0);+ if(result & INITD) break;+ }+ if(i >= timeout)+ return -ETIME;++ /* while SIBUSY bit clean */+ for(i=0; i<timeout; i++)+ {+ set_current_state(TASK_UNINTERRUPTIBLE);+ schedule_timeout(1);+ io_write(IO_BASE+IO_PACKETPAGE_POINTER, REG_SelfST);+ result = io_read(IO_BASE+IO_PACKETPAGE_DATA0);+ if((result & SIBUSY) == 0) break;+ }+ if(i >= timeout)+ return -ETIME;++ return 0;+}+++static void cs8900a_chip_membase(unsigned long base)+{+ unsigned short temp;++ /* set memory map base address */+ io_write(IO_BASE+IO_PACKETPAGE_POINTER, REG_MemoryBaseAddress);+ io_write(IO_BASE+IO_PACKETPAGE_DATA0, base & 0xffff);+ io_write(IO_BASE+IO_PACKETPAGE_POINTER, REG_MemoryBaseAddress+2);+ io_write(IO_BASE+IO_PACKETPAGE_DATA0, base >> 16);++ /* read bus control register */+ io_write(IO_BASE+IO_PACKETPAGE_POINTER, REG_BusCTL);+ temp = io_read(IO_BASE+IO_PACKETPAGE_DATA0);+ /* enable memory map */+ temp |= MemoryE;+ io_write(IO_BASE+IO_PACKETPAGE_POINTER, REG_BusCTL);+ io_write(IO_BASE+IO_PACKETPAGE_DATA0, temp);+}+++static void cs8900a_chip_macaddr(unsigned char *mac)+{+ reg_write(REG_IA, *(unsigned short *)(mac));+ reg_write(REG_IA+2, *(unsigned short *)(mac+2));+ reg_write(REG_IA+4, *(unsigned short *)(mac+4));+}+++static void cs8900a_chip_config(void)+{+ unsigned short temp;++ /* configure LineCTL */+ temp = reg_read(REG_LineCTL);+ temp &= ~(AUIonly | AutoAUI_10BT);+ temp |= (SerRxON | SerTxON | ModBackOffE);+ reg_write(REG_LineCTL, temp);++ /* configure RxCTL */+ reg_write(REG_RxCTL, RxOKA | IdividualA | BroadcastA |+ /* CRCerrorA | RuntA| ExtradataA |*/ RxCTL_LOW);++ /* configure RxCFG */+ reg_write(REG_RxCFG, RxOKiE | CRCerroriE | RuntiE |+ ExtradataiE | RxCFG_LOW);++ /* configure TxCFG */+ reg_write(REG_TxCFG, Loss_of_CRSiE | SQErroriE | TxOKiE |+ Out_of_windowiE | JabberiE | AnycolliE | _16colliE | TxCFG_LOW);++ /* configure BufCFG */+ reg_write(REG_BufCFG, Rdy4TxiE | TxUnderruniE |
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -