📄 linux-2.6.28-sitsang.patch
字号:
+ break;++ case led_amber_on:+ break;++ case led_amber_off:+ break;++ case led_red_on:+ if (led_state & LED_STATE_CLAIMED)+ hw_led_state &= ~SITSANG_SYS_BUSY_LED;+ break;++ case led_red_off:+ if (led_state & LED_STATE_CLAIMED)+ hw_led_state |= SITSANG_SYS_BUSY_LED;+ break;++ default:+ break;+ }++ if (led_state & LED_STATE_ENABLED)+ {+ switch (hw_led_state) {+ case 0: // all on+ SITSANG_HEARTBEAT_LED_ON;+ SITSANG_SYS_BUSY_LED_ON;+ break;+ case 1: // turn off heartbeat, status on:+ SITSANG_HEARTBEAT_LED_OFF;+ SITSANG_SYS_BUSY_LED_ON;+ break;+ case 2: // status off, heartbeat on:+ SITSANG_HEARTBEAT_LED_ON;+ SITSANG_SYS_BUSY_LED_OFF;+ break;+ case 3: // turn them both off...+ SITSANG_HEARTBEAT_LED_OFF;+ SITSANG_SYS_BUSY_LED_OFF;+ break;+ default:+ break;+ }+ }+ local_irq_restore(flags);+}+diff -purN linux-2.6.28/arch/arm/mach-pxa/Makefile linux-2.6.28-sitsang/arch/arm/mach-pxa/Makefile--- linux-2.6.28/arch/arm/mach-pxa/Makefile 2008-12-25 07:26:37.000000000 +0800+++ linux-2.6.28-sitsang/arch/arm/mach-pxa/Makefile 2008-12-26 17:00:45.000000000 +0800@@ -29,6 +29,7 @@ obj-$(CONFIG_CPU_PXA930) += pxa930.o obj-$(CONFIG_ARCH_GUMSTIX) += gumstix.o obj-$(CONFIG_MACH_AM200EPD) += am200epd.o obj-$(CONFIG_ARCH_LUBBOCK) += lubbock.o+obj-$(CONFIG_ARCH_SITSANG) += sitsang.o obj-$(CONFIG_MACH_LOGICPD_PXA270) += lpd270.o obj-$(CONFIG_MACH_MAINSTONE) += mainstone.o obj-$(CONFIG_MACH_MP900C) += mp900.o@@ -72,6 +73,7 @@ obj-$(CONFIG_PXA_EZX) += ezx.o # Support for blinky lights led-y := leds.o led-$(CONFIG_ARCH_LUBBOCK) += leds-lubbock.o+led-$(CONFIG_ARCH_SITSANG) += leds-sitsang.o led-$(CONFIG_MACH_MAINSTONE) += leds-mainstone.o led-$(CONFIG_ARCH_PXA_IDP) += leds-idp.o diff -purN linux-2.6.28/arch/arm/mach-pxa/sitsang.c linux-2.6.28-sitsang/arch/arm/mach-pxa/sitsang.c--- linux-2.6.28/arch/arm/mach-pxa/sitsang.c 1970-01-01 08:00:00.000000000 +0800+++ linux-2.6.28-sitsang/arch/arm/mach-pxa/sitsang.c 2008-12-25 21:20:27.000000000 +0800@@ -0,0 +1,225 @@+#include <linux/module.h>+#include <linux/kernel.h>+#include <linux/init.h>+#include <linux/platform_device.h>+#include <linux/sysdev.h>+#include <linux/major.h>+#include <linux/fb.h>+#include <linux/interrupt.h>+#include <linux/mtd/mtd.h>+#include <linux/mtd/partitions.h>++#include <asm/setup.h>+#include <asm/memory.h>+#include <asm/mach-types.h>+#include <mach/hardware.h>+#include <asm/irq.h>+#include <asm/sizes.h>++#include <asm/mach/arch.h>+#include <asm/mach/map.h>+#include <asm/mach/irq.h>+#include <asm/mach/flash.h>++#include <mach/sitsang.h>+#include <mach/pxa-regs.h>+#include <mach/pxa2xx-regs.h>+#include <mach/mfp-pxa25x.h>+#include <mach/pxafb.h>++//#include<video/lcdctrl.h>++#include "generic.h"+#include "clock.h"+#include "devices.h"++static unsigned long sitsang_irq_en_mask;++static unsigned long sitsang_pin_config[] __initdata = {+ /* BTUART */+ GPIO42_BTUART_RXD,+ GPIO43_BTUART_TXD,+ GPIO44_BTUART_CTS,+ GPIO45_BTUART_RTS,+ + /* setup FFART mode values */+ GPIO39_FFUART_TXD,+ GPIO40_FFUART_DTR,+ GPIO41_FFUART_RTS,+ + GPIO34_FFUART_RXD,+ GPIO35_FFUART_CTS,+ GPIO36_FFUART_DCD,+ GPIO37_FFUART_DSR,+ GPIO38_FFUART_RI,++ /* wakeup */+// GPIO1_GPIO | WAKEUP_ON_EDGE_RISE,+};++static void sitsang_mask_irq(unsigned int irq)+{+ int sitsang_irq = (irq - SITSANG_IRQ(0));++/* switch(irq){*/+ switch(sitsang_irq) {+ case 0:+ sitsang_irq_en_mask &= ~(SITSANG_BIMR_USB_HC1_OC_IRQ);+ SITSANG_BIMR_RW &= ~(SITSANG_BIMR_USB_HC1_OC_IRQ);+ SITSANG_BIPR_RW &= ~(SITSANG_BIPR_USB_HC1_OC_IRQ);+ break;+ case 1:+ sitsang_irq_en_mask &= ~(SITSANG_BIMR_USB_HC2_OC_IRQ);+ SITSANG_BIMR_RW &= ~(SITSANG_BIMR_USB_HC2_OC_IRQ);+ SITSANG_BIPR_RW &= ~(SITSANG_BIPR_USB_HC2_OC_IRQ);+ break;+ case 2:+ sitsang_irq_en_mask &= ~(SITSANG_BIMR_BATT_CHARGED_IRQ);+ SITSANG_BIMR_RW &= ~(SITSANG_BIMR_BATT_CHARGED_IRQ);+ SITSANG_BIPR_RW &= ~(SITSANG_BIPR_BATT_CHARGED_IRQ);+ break;+ }+ +}++static void sitsang_unmask_irq(unsigned int irq)+{+ int sitsang_irq = (irq - SITSANG_IRQ(0));+ sitsang_irq_en_mask |= (1 << sitsang_irq);++ switch(sitsang_irq){+ case 0:+ sitsang_irq_en_mask |= (SITSANG_BIMR_USB_HC1_OC_IRQ);+ SITSANG_BIMR_RW |= (SITSANG_BIMR_USB_HC1_OC_IRQ);+ break;+ case 1:+ sitsang_irq_en_mask |= (SITSANG_BIMR_USB_HC2_OC_IRQ);+ SITSANG_BIMR_RW |= (SITSANG_BIMR_USB_HC2_OC_IRQ);+ break;+ case 2:+ sitsang_irq_en_mask |= (SITSANG_BIMR_BATT_CHARGED_IRQ);+ SITSANG_BIMR_RW |= (SITSANG_BIMR_BATT_CHARGED_IRQ);+ break;+ }+ +}++static struct irq_chip sitsang_irq_chip = {+ .name = "FPGA",+ .ack = sitsang_mask_irq,+ .mask = sitsang_mask_irq,+ .unmask = sitsang_unmask_irq,+};++static void sitsang_irq_handler(unsigned int irq, struct irq_desc *desc)+{+ unsigned long pending = SITSANG_BIPR_RW & sitsang_irq_en_mask;+ do {+ GEDR(0) = GPIO_bit(0);+ if (likely(pending)) {+ irq = SITSANG_IRQ(0) + __ffs(pending);+ desc = irq_desc + irq;+ desc_handle_irq(irq, desc);+ }+ pending = SITSANG_BIPR_RW & sitsang_irq_en_mask;+ } while (pending);+}++static void __init sitsang_init_irq(void)+{+ int irq;+ pxa25x_init_irq();++ /* setup extra irqs */+ for (irq = SITSANG_IRQ(0); irq <= SITSANG_IRQ(SITSANG_IRQ_COUNT-1); irq++) {+ set_irq_chip(irq, &sitsang_irq_chip);+ set_irq_handler(irq, handle_level_irq);+ set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);+ }++ set_irq_chained_handler(IRQ_GPIO(0), sitsang_irq_handler);+ set_irq_type(IRQ_GPIO(0), IRQ_TYPE_EDGE_FALLING);+}++static struct resource flash_resources[] = {+ [0] = {+ .start = 0x00000000,+ .end = SZ_64M - 1,+ .flags = IORESOURCE_MEM,+ },+};+++static struct flash_platform_data sitsang_flash_data[1] = {+ {+ .map_name = "cfi_probe",+ .parts = NULL,+ .nr_parts = 0,+ }+};++static struct platform_device sitsang_flash_device[1] = {+ {+ .name = "pxa2xx-flash",+ .id = 0,+ .dev = {+ .platform_data = &sitsang_flash_data[0],+ },+ .resource = &flash_resources[0],+ .num_resources = 1,+ },+};++static struct platform_device *devices[] __initdata = {+ &sitsang_flash_device[0],+};+++++static void __init sitsang_init(void)+{+ pxa2xx_mfp_config(ARRAY_AND_SIZE(sitsang_pin_config));+ //set_pxa_fb_info(&sharp_lm8v31);+ sitsang_flash_data[0].width = (BOOT_DEF & 1) ? 2 : 4;+ sitsang_flash_data[0].name = " flash";+ (void) platform_add_devices(devices, ARRAY_SIZE(devices));+}++static struct map_desc sitsang_io_desc[] __initdata = {+ { SITSANG_FPGA_VIRT,+ __phys_to_pfn(SITSANG_FPGA_PHYS), + 0x00100000, + MT_DEVICE+ }, + /* CPLD */+};++static void __init sitsang_map_io(void)+{+ pxa_map_io();+ iotable_init(sitsang_io_desc, ARRAY_SIZE(sitsang_io_desc));++ PWER = 0x00000002;+ PFER = 0x00000000;+ PRER = 0x00000002;+ PGSR0 = 0x00008000;+ PGSR1 = 0x003F0202;+ PGSR2 = 0x0001C000;+ PCFR |= PCFR_OPDE;++ + /* enable PCR for FFUART */+ SITSANG_PCR_RW |= (SITSANG_PCR_BTUART_ON | \+ SITSANG_PCR_RS232_ON | SITSANG_PCR_PER_ON);+}++MACHINE_START(SITSANG, "Intel Sitsang Development Platform")+ /* MAINTAINER ("Intel Inc.") */+ .phys_io = 0x40000000,+ .io_pg_offst = ((io_p2v(0x40000000))>>18)&0xfffc,+ .map_io = sitsang_map_io,+ .init_irq = sitsang_init_irq,+ .timer = &pxa_timer,+ .init_machine = sitsang_init,+MACHINE_ENDdiff -purN linux-2.6.28/.config linux-2.6.28-sitsang/.config--- linux-2.6.28/.config 1970-01-01 08:00:00.000000000 +0800+++ linux-2.6.28-sitsang/.config 2008-12-26 17:09:59.000000000 +0800@@ -0,0 +1,1204 @@+#+# Automatically generated make config: don't edit+# Linux kernel version: 2.6.28+# Fri Dec 26 17:09:59 2008+#+CONFIG_ARM=y+CONFIG_SYS_SUPPORTS_APM_EMULATION=y+CONFIG_GENERIC_GPIO=y+CONFIG_GENERIC_TIME=y+CONFIG_GENERIC_CLOCKEVENTS=y+CONFIG_MMU=y+# CONFIG_NO_IOPORT is not set+CONFIG_GENERIC_HARDIRQS=y+CONFIG_STACKTRACE_SUPPORT=y+CONFIG_HAVE_LATENCYTOP_SUPPORT=y+CONFIG_LOCKDEP_SUPPORT=y+CONFIG_TRACE_IRQFLAGS_SUPPORT=y+CONFIG_HARDIRQS_SW_RESEND=y+CONFIG_GENERIC_IRQ_PROBE=y+CONFIG_RWSEM_GENERIC_SPINLOCK=y+# CONFIG_ARCH_HAS_ILOG2_U32 is not set+# CONFIG_ARCH_HAS_ILOG2_U64 is not set+CONFIG_GENERIC_HWEIGHT=y+CONFIG_GENERIC_CALIBRATE_DELAY=y+CONFIG_ARCH_MTD_XIP=y+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y+CONFIG_VECTORS_BASE=0xffff0000+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"++#+# General setup+#+CONFIG_EXPERIMENTAL=y+CONFIG_BROKEN_ON_SMP=y+CONFIG_INIT_ENV_ARG_LIMIT=32+CONFIG_LOCALVERSION=""+CONFIG_LOCALVERSION_AUTO=y+CONFIG_SWAP=y+CONFIG_SYSVIPC=y+CONFIG_SYSVIPC_SYSCTL=y+# CONFIG_POSIX_MQUEUE is not set+# CONFIG_BSD_PROCESS_ACCT is not set+# CONFIG_TASKSTATS is not set+# CONFIG_AUDIT is not set+# CONFIG_IKCONFIG is not set+CONFIG_LOG_BUF_SHIFT=17+# CONFIG_CGROUPS is not set+# CONFIG_GROUP_SCHED is not set+CONFIG_SYSFS_DEPRECATED=y+CONFIG_SYSFS_DEPRECATED_V2=y+# CONFIG_RELAY is not set+CONFIG_NAMESPACES=y+# CONFIG_UTS_NS is not set+# CONFIG_IPC_NS is not set+# CONFIG_USER_NS is not set+# CONFIG_PID_NS is not set+# CONFIG_BLK_DEV_INITRD is not set+CONFIG_CC_OPTIMIZE_FOR_SIZE=y+CONFIG_SYSCTL=y+# CONFIG_EMBEDDED is not set+CONFIG_UID16=y+CONFIG_SYSCTL_SYSCALL=y+CONFIG_KALLSYMS=y+# CONFIG_KALLSYMS_ALL is not set+# CONFIG_KALLSYMS_EXTRA_PASS is not set+CONFIG_HOTPLUG=y+CONFIG_PRINTK=y+CONFIG_BUG=y+CONFIG_ELF_CORE=y+CONFIG_COMPAT_BRK=y+CONFIG_BASE_FULL=y+CONFIG_FUTEX=y+CONFIG_ANON_INODES=y+CONFIG_EPOLL=y+CONFIG_SIGNALFD=y+CONFIG_TIMERFD=y+CONFIG_EVENTFD=y+CONFIG_SHMEM=y+CONFIG_AIO=y+CONFIG_VM_EVENT_COUNTERS=y+CONFIG_SLUB_DEBUG=y+# CONFIG_SLAB is not set+CONFIG_SLUB=y+# CONFIG_SLOB is not set+# CONFIG_PROFILING is not set+# CONFIG_MARKERS is not set+CONFIG_HAVE_OPROFILE=y+# CONFIG_KPROBES is not set+CONFIG_HAVE_KPROBES=y+CONFIG_HAVE_KRETPROBES=y+CONFIG_HAVE_CLK=y+CONFIG_HAVE_GENERIC_DMA_COHERENT=y+CONFIG_SLABINFO=y+CONFIG_RT_MUTEXES=y+# CONFIG_TINY_SHMEM is not set+CONFIG_BASE_SMALL=0+CONFIG_MODULES=y+# CONFIG_MODULE_FORCE_LOAD is not set+# CONFIG_MODULE_UNLOAD is not set+# CONFIG_MODVERSIONS is not set+# CONFIG_MODULE_SRCVERSION_ALL is not set+CONFIG_KMOD=y+CONFIG_BLOCK=y+# CONFIG_LBD is not set+# CONFIG_BLK_DEV_IO_TRACE is not set+# CONFIG_LSF is not set+# CONFIG_BLK_DEV_BSG is not set+# CONFIG_BLK_DEV_INTEGRITY is not set++#+# IO Schedulers+#+CONFIG_IOSCHED_NOOP=y+CONFIG_IOSCHED_AS=y+CONFIG_IOSCHED_DEADLINE=y+CONFIG_IOSCHED_CFQ=y+# CONFIG_DEFAULT_AS is not set+# CONFIG_DEFAULT_DEADLINE is not set+CONFIG_DEFAULT_CFQ=y+# CONFIG_DEFAULT_NOOP is not set+CONFIG_DEFAULT_IOSCHED="cfq"+CONFIG_CLASSIC_RCU=y+# CONFIG_FREEZER is not set++#+# System Type+#+# CONFIG_ARCH_AAEC2000 is not set+# CONFIG_ARCH_INTEGRATOR is not set+# CONFIG_ARCH_REALVIEW is not set+# CONFIG_ARCH_VERSATILE is not set+# CONFIG_ARCH_AT91 is not set+# CONFIG_ARCH_CLPS7500 is not set+# CONFIG_ARCH_CLPS711X is not set+# CONFIG_ARCH_EBSA110 is not set+# CONFIG_ARCH_EP93XX is not set+# CONFIG_ARCH_FOOTBRIDGE is not set+# CONFIG_ARCH_NETX is not set+# CONFIG_ARCH_H720X is not set+# CONFIG_ARCH_IMX is not set+# CONFIG_ARCH_IOP13XX is not set+# CONFIG_ARCH_IOP32X is not set+# CONFIG_ARCH_IOP33X is not set+# CONFIG_ARCH_IXP23XX is not set+# CONFIG_ARCH_IXP2000 is not set+# CONFIG_ARCH_IXP4XX is not set+# CONFIG_ARCH_L7200 is not set+# CONFIG_ARCH_KIRKWOOD is not set+# CONFIG_ARCH_KS8695 is not set+# CONFIG_ARCH_NS9XXX is not set+# CONFIG_ARCH_LOKI is not set+# CONFIG_ARCH_MV78XX0 is not set+# CONFIG_ARCH_MXC is not set+# CONFIG_ARCH_ORION5X is not set+# CONFIG_ARCH_PNX4008 is not set+CONFIG_ARCH_PXA=y+# CONFIG_ARCH_RPC is not set+# CONFIG_ARCH_SA1100 is not set+# CONFIG_ARCH_S3C2410 is not set+# CONFIG_ARCH_SHARK is not set+# CONFIG_ARCH_LH7A40X is not set+# CONFIG_ARCH_DAVINCI is not set+# CONFIG_ARCH_OMAP is not set+# CONFIG_ARCH_MSM is not set++#+# Intel PXA2xx/PXA3xx Implementations+#+# CONFIG_ARCH_GUMSTIX is not set
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -