⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uclinux040408.44b0.patch

📁 44b0x处理器uclinux内核编译补丁
💻 PATCH
📖 第 1 页 / 共 5 页
字号:
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 + -