📄 2.6.20-rc1-at91.patch.gz
字号:
diff -urN -x CVS linux-2.6.20-rc1.orig/arch/arm/configs/at91sam9260ek_defconfig linux-2.6/arch/arm/configs/at91sam9260ek_defconfig--- linux-2.6.20-rc1.orig/arch/arm/configs/at91sam9260ek_defconfig Fri Dec 15 08:35:47 2006+++ linux-2.6/arch/arm/configs/at91sam9260ek_defconfig Fri Dec 15 08:57:38 2006@@ -923,7 +923,6 @@ # CONFIG_HEADERS_CHECK is not set # CONFIG_RCU_TORTURE_TEST is not set CONFIG_DEBUG_USER=y-# CONFIG_DEBUG_WAITQ is not set # CONFIG_DEBUG_ERRORS is not set CONFIG_DEBUG_LL=y # CONFIG_DEBUG_ICEDCC is not setdiff -urN -x CVS linux-2.6.20-rc1.orig/arch/arm/configs/at91sam9261ek_defconfig linux-2.6/arch/arm/configs/at91sam9261ek_defconfig--- linux-2.6.20-rc1.orig/arch/arm/configs/at91sam9261ek_defconfig Fri Dec 15 08:35:47 2006+++ linux-2.6/arch/arm/configs/at91sam9261ek_defconfig Fri Dec 15 08:57:49 2006@@ -1079,7 +1079,6 @@ # CONFIG_HEADERS_CHECK is not set # CONFIG_RCU_TORTURE_TEST is not set CONFIG_DEBUG_USER=y-# CONFIG_DEBUG_WAITQ is not set # CONFIG_DEBUG_ERRORS is not set CONFIG_DEBUG_LL=y # CONFIG_DEBUG_ICEDCC is not setdiff -urN -x CVS linux-2.6.20-rc1.orig/arch/arm/mach-at91rm9200/Kconfig linux-2.6/arch/arm/mach-at91rm9200/Kconfig--- linux-2.6.20-rc1.orig/arch/arm/mach-at91rm9200/Kconfig Fri Dec 15 08:35:48 2006+++ linux-2.6/arch/arm/mach-at91rm9200/Kconfig Fri Dec 15 08:59:15 2006@@ -143,6 +143,13 @@ Select this if you need to program one or more of the PCK0..PCK3 programmable clock outputs. +config AT91_SLOW_CLOCK+ bool "Suspend-to-RAM uses slow clock mode (EXPERIMENTAL)"+ depends on PM && EXPERIMENTAL+ help+ Select this if you wish to put the CPU into slow clock mode+ while in the "Suspend to RAM" state, to save more power.+ endmenu endifdiff -urN -x CVS linux-2.6.20-rc1.orig/arch/arm/mach-at91rm9200/Makefile linux-2.6/arch/arm/mach-at91rm9200/Makefile--- linux-2.6.20-rc1.orig/arch/arm/mach-at91rm9200/Makefile Fri Dec 15 08:35:48 2006+++ linux-2.6/arch/arm/mach-at91rm9200/Makefile Thu Nov 16 11:45:54 2006@@ -8,6 +8,7 @@ obj- := obj-$(CONFIG_PM) += pm.o+obj-$(CONFIG_AT91_SLOW_CLOCK) += pm_slowclock.o # CPU-specific support obj-$(CONFIG_ARCH_AT91RM9200) += at91rm9200.o at91rm9200_time.o at91rm9200_devices.o@@ -41,7 +42,7 @@ obj-$(CONFIG_LEDS) += $(led-y) # VGA support-#obj-$(CONFIG_FB_S1D13XXX) += ics1523.o+obj-$(CONFIG_FB_S1D13XXX) += ics1523.o ifeq ($(CONFIG_PM_DEBUG),y)diff -urN -x CVS linux-2.6.20-rc1.orig/arch/arm/mach-at91rm9200/at91rm9200_devices.c linux-2.6/arch/arm/mach-at91rm9200/at91rm9200_devices.c--- linux-2.6.20-rc1.orig/arch/arm/mach-at91rm9200/at91rm9200_devices.c Fri Dec 15 08:35:48 2006+++ linux-2.6/arch/arm/mach-at91rm9200/at91rm9200_devices.c Tue Dec 12 13:01:13 2006@@ -128,7 +128,7 @@ #if defined(CONFIG_ARM_AT91_ETHER) || defined(CONFIG_ARM_AT91_ETHER_MODULE) static u64 eth_dmamask = 0xffffffffUL;-static struct at91_eth_data eth_data;+static struct eth_platform_data eth_data; static struct resource eth_resources[] = { [0] = {@@ -155,7 +155,7 @@ .num_resources = ARRAY_SIZE(eth_resources), }; -void __init at91_add_device_eth(struct at91_eth_data *data)+void __init at91_add_device_eth(struct eth_platform_data *data) { if (!data) return;@@ -192,7 +192,7 @@ platform_device_register(&at91rm9200_eth_device); } #else-void __init at91_add_device_eth(struct at91_eth_data *data) {}+void __init at91_add_device_eth(struct eth_platform_data *data) {} #endif @@ -272,7 +272,7 @@ at91_set_A_periph(AT91_PIN_PC12, 0); /* NCS6/CFCE2 */ /* nWAIT is _not_ a default setting */- at91_set_A_periph(AT91_PIN_PC6, 1); /* nWAIT */+ at91_set_A_periph(AT91_PIN_PC6, 1); /* nWAIT */ cf_data = *data; platform_device_register(&at91rm9200_cf_device);@@ -602,6 +602,32 @@ #endif +#if defined(CONFIG_NEW_LEDS)++static struct platform_device at91_leds = {+ .name = "at91_leds",+ .id = -1,+};++void __init at91_gpio_leds(struct at91_gpio_led *leds, int nr)+{+ if (!nr)+ return;++ at91_leds.dev.platform_data = leds;++ for ( ; nr; nr--, leds++) {+ leds->index = nr; /* first record stores number of leds */+ at91_set_gpio_output(leds->gpio, (leds->flags & 1) == 0);+ }++ platform_device_register(&at91_leds);+}+#else+void __init at91_gpio_leds(struct at91_gpio_led *leds, int nr) {}+#endif++ /* -------------------------------------------------------------------- * UART * -------------------------------------------------------------------- */diff -urN -x CVS linux-2.6.20-rc1.orig/arch/arm/mach-at91rm9200/at91sam9260_devices.c linux-2.6/arch/arm/mach-at91rm9200/at91sam9260_devices.c--- linux-2.6.20-rc1.orig/arch/arm/mach-at91rm9200/at91sam9260_devices.c Fri Dec 15 08:35:48 2006+++ linux-2.6/arch/arm/mach-at91rm9200/at91sam9260_devices.c Tue Dec 12 13:01:54 2006@@ -523,6 +523,32 @@ #endif +#if defined(CONFIG_NEW_LEDS)++static struct platform_device at91_leds = {+ .name = "at91_leds",+ .id = -1,+};++void __init at91_gpio_leds(struct at91_gpio_led *leds, int nr)+{+ if (!nr)+ return;++ at91_leds.dev.platform_data = leds;++ for ( ; nr; nr--, leds++) {+ leds->index = nr; /* first record stores number of leds */+ at91_set_gpio_output(leds->gpio, (leds->flags & 1) == 0);+ }++ platform_device_register(&at91_leds);+}+#else+void __init at91_gpio_leds(struct at91_gpio_led *leds, int nr) {}+#endif++ /* -------------------------------------------------------------------- * UART * -------------------------------------------------------------------- */diff -urN -x CVS linux-2.6.20-rc1.orig/arch/arm/mach-at91rm9200/at91sam9261_devices.c linux-2.6/arch/arm/mach-at91rm9200/at91sam9261_devices.c--- linux-2.6.20-rc1.orig/arch/arm/mach-at91rm9200/at91sam9261_devices.c Fri Dec 15 08:35:48 2006+++ linux-2.6/arch/arm/mach-at91rm9200/at91sam9261_devices.c Sat Nov 25 11:14:00 2006@@ -521,6 +521,32 @@ #endif +#if defined(CONFIG_NEW_LEDS)++static struct platform_device at91_leds = {+ .name = "at91_leds",+ .id = -1,+};++void __init at91_gpio_leds(struct at91_gpio_led *leds, int nr)+{+ if (!nr)+ return;++ at91_leds.dev.platform_data = leds;++ for ( ; nr; nr--, leds++) {+ leds->index = nr; /* first record stores number of leds */+ at91_set_gpio_output(leds->gpio, (leds->flags & 1) == 0);+ }++ platform_device_register(&at91_leds);+}+#else+void __init at91_gpio_leds(struct at91_gpio_led *leds, int nr) {}+#endif++ /* -------------------------------------------------------------------- * UART * -------------------------------------------------------------------- */diff -urN -x CVS linux-2.6.20-rc1.orig/arch/arm/mach-at91rm9200/board-1arm.c linux-2.6/arch/arm/mach-at91rm9200/board-1arm.c--- linux-2.6.20-rc1.orig/arch/arm/mach-at91rm9200/board-1arm.c Fri Dec 15 08:33:10 2006+++ linux-2.6/arch/arm/mach-at91rm9200/board-1arm.c Thu Nov 23 15:50:12 2006@@ -64,7 +64,7 @@ at91rm9200_init_interrupts(NULL); } -static struct at91_eth_data __initdata onearm_eth_data = {+static struct eth_platform_data __initdata onearm_eth_data = { .phy_irq_pin = AT91_PIN_PC4, .is_rmii = 1, };diff -urN -x CVS linux-2.6.20-rc1.orig/arch/arm/mach-at91rm9200/board-carmeva.c linux-2.6/arch/arm/mach-at91rm9200/board-carmeva.c--- linux-2.6.20-rc1.orig/arch/arm/mach-at91rm9200/board-carmeva.c Fri Dec 15 08:35:48 2006+++ linux-2.6/arch/arm/mach-at91rm9200/board-carmeva.c Thu Dec 14 14:51:06 2006@@ -65,7 +65,7 @@ at91rm9200_init_interrupts(NULL); } -static struct at91_eth_data __initdata carmeva_eth_data = {+static struct eth_platform_data __initdata carmeva_eth_data = { .phy_irq_pin = AT91_PIN_PC4, .is_rmii = 1, };diff -urN -x CVS linux-2.6.20-rc1.orig/arch/arm/mach-at91rm9200/board-csb337.c linux-2.6/arch/arm/mach-at91rm9200/board-csb337.c--- linux-2.6.20-rc1.orig/arch/arm/mach-at91rm9200/board-csb337.c Fri Dec 15 08:35:48 2006+++ linux-2.6/arch/arm/mach-at91rm9200/board-csb337.c Thu Nov 23 15:50:12 2006@@ -68,7 +68,7 @@ at91rm9200_init_interrupts(NULL); } -static struct at91_eth_data __initdata csb337_eth_data = {+static struct eth_platform_data __initdata csb337_eth_data = { .phy_irq_pin = AT91_PIN_PC2, .is_rmii = 0, };@@ -112,6 +112,23 @@ }, }; +static struct at91_gpio_led csb337_leds[] = {+ {+ .name = "led0",+ .gpio = AT91_PIN_PB0,+ .trigger = "heartbeat",+ },+ {+ .name = "led1",+ .gpio = AT91_PIN_PB1,+ .trigger = "timer",+ },+ {+ .name = "led2",+ .gpio = AT91_PIN_PB2,+ }+};+ static void __init csb337_board_init(void) { /* Serial */@@ -131,6 +148,8 @@ at91_add_device_spi(csb337_spi_devices, ARRAY_SIZE(csb337_spi_devices)); /* MMC */ at91_add_device_mmc(&csb337_mmc_data);+ /* LEDS */+ at91_gpio_leds(csb337_leds, ARRAY_SIZE(csb337_leds)); } MACHINE_START(CSB337, "Cogent CSB337")diff -urN -x CVS linux-2.6.20-rc1.orig/arch/arm/mach-at91rm9200/board-csb637.c linux-2.6/arch/arm/mach-at91rm9200/board-csb637.c--- linux-2.6.20-rc1.orig/arch/arm/mach-at91rm9200/board-csb637.c Fri Dec 15 08:33:10 2006+++ linux-2.6/arch/arm/mach-at91rm9200/board-csb637.c Thu Nov 23 15:50:12 2006@@ -67,7 +67,7 @@ at91rm9200_init_interrupts(NULL); } -static struct at91_eth_data __initdata csb637_eth_data = {+static struct eth_platform_data __initdata csb637_eth_data = { .phy_irq_pin = AT91_PIN_PC0, .is_rmii = 0, };diff -urN -x CVS linux-2.6.20-rc1.orig/arch/arm/mach-at91rm9200/board-dk.c linux-2.6/arch/arm/mach-at91rm9200/board-dk.c--- linux-2.6.20-rc1.orig/arch/arm/mach-at91rm9200/board-dk.c Fri Dec 15 08:35:48 2006+++ linux-2.6/arch/arm/mach-at91rm9200/board-dk.c Tue Dec 5 09:43:26 2006@@ -73,7 +73,186 @@ at91rm9200_init_interrupts(NULL); } -static struct at91_eth_data __initdata dk_eth_data = {+#if defined(CONFIG_FB_S1D13XXX) || defined(CONFIG_FB_S1D13XXX_MODULE)+#include <video/s1d13xxxfb.h>+#include <asm/arch/ics1523.h>++/* EPSON S1D13806 FB */+#define AT91_FB_REG_BASE 0x30000000L+#define AT91_FB_REG_SIZE 0x200+#define AT91_FB_VMEM_BASE 0x30200000L+#define AT91_FB_VMEM_SIZE 0x140000L++static void __init dk_init_video(void)+{+ /* NWAIT Signal */+ at91_set_A_periph(AT91_PIN_PC6, 0);++ /* Initialization of the Static Memory Controller for Chip Select 2 */+ at91_sys_write(AT91_SMC_CSR(2), AT91_SMC_DBW_16 /* 16 bit */+ | AT91_SMC_WSEN | AT91_SMC_NWS_(4) /* wait states */+ | AT91_SMC_TDF_(1) /* float time */+ );++ AT91F_ICS1523_clockinit();+}++/* CRT: (active) 640x480 60Hz (PCLK=CLKI=25.175MHz)+ Memory: Embedded SDRAM (MCLK=CLKI3=50.000MHz) (BUSCLK=60.000MHz) */+static const struct s1d13xxxfb_regval dk_s1dfb_initregs[] = {+ {S1DREG_MISC, 0x00}, /* Enable Memory/Register select bit */+ {S1DREG_COM_DISP_MODE, 0x00}, /* disable display output */+ {S1DREG_GPIO_CNF0, 0x00},+ {S1DREG_GPIO_CNF1, 0x00},+ {S1DREG_GPIO_CTL0, 0x08},+ {S1DREG_GPIO_CTL1, 0x00},+ {S1DREG_CLK_CNF, 0x01}, /* no divide, MCLK source is CLKI3 0x02*/+ {S1DREG_LCD_CLK_CNF, 0x00},+ {S1DREG_CRT_CLK_CNF, 0x00},+ {S1DREG_MPLUG_CLK_CNF, 0x00},+ {S1DREG_CPU2MEM_WST_SEL, 0x01}, /* 2*period(MCLK) - 4ns > period(BCLK) */+ {S1DREG_SDRAM_REF_RATE, 0x03}, /* 32768 <= MCLK <= 50000 (MHz) */+ {S1DREG_SDRAM_TC0, 0x00}, /* MCLK source freq (MHz): */+ {S1DREG_SDRAM_TC1, 0x01}, /* 42 <= MCLK <= 50 */+ {S1DREG_MEM_CNF, 0x80}, /* SDRAM Initialization - needed before mem access */+ {S1DREG_PANEL_TYPE, 0x25}, /* std TFT 16bit, 8bit SCP format 2, single passive LCD */+ {S1DREG_MOD_RATE, 0x00}, /* toggle every FPFRAME */+ {S1DREG_LCD_DISP_HWIDTH, 0x4F}, /* 680 pix */+ {S1DREG_LCD_NDISP_HPER, 0x12}, /* 152 pix */+ {S1DREG_TFT_FPLINE_START, 0x01}, /* 13 pix */+ {S1DREG_TFT_FPLINE_PWIDTH, 0x0B}, /* 96 pix */+ {S1DREG_LCD_DISP_VHEIGHT0, 0xDF},+ {S1DREG_LCD_DISP_VHEIGHT1, 0x01}, /* 480 lines */+ {S1DREG_LCD_NDISP_VPER, 0x2C}, /* 44 lines */+ {S1DREG_TFT_FPFRAME_START, 0x0A}, /* 10 lines */+ {S1DREG_TFT_FPFRAME_PWIDTH, 0x01}, /* 2 lines */+ {S1DREG_LCD_DISP_MODE, 0x05}, /* 16 bpp */+ {S1DREG_LCD_MISC, 0x00}, /* dithering enabled, dual panel buffer enabled */+ {S1DREG_LCD_DISP_START0, 0x00},+ {S1DREG_LCD_DISP_START1, 0xC8},+ {S1DREG_LCD_DISP_START2, 0x00},+ {S1DREG_LCD_MEM_OFF0, 0x80},+ {S1DREG_LCD_MEM_OFF1, 0x02},+ {S1DREG_LCD_PIX_PAN, 0x00},+ {S1DREG_LCD_DISP_FIFO_HTC, 0x3B},+ {S1DREG_LCD_DISP_FIFO_LTC, 0x3C},+ {S1DREG_CRT_DISP_HWIDTH, 0x4F}, /* 680 pix */+ {S1DREG_CRT_NDISP_HPER, 0x13}, /* 160 pix */+ {S1DREG_CRT_HRTC_START, 0x01}, /* 13 pix */+ {S1DREG_CRT_HRTC_PWIDTH, 0x0B}, /* 96 pix */+ {S1DREG_CRT_DISP_VHEIGHT0, 0xDF},+ {S1DREG_CRT_DISP_VHEIGHT1, 0x01}, /* 480 lines */+ {S1DREG_CRT_NDISP_VPER, 0x2B}, /* 44 lines */+ {S1DREG_CRT_VRTC_START, 0x09}, /* 10 lines */+ {S1DREG_CRT_VRTC_PWIDTH, 0x01}, /* 2 lines */+ {S1DREG_TV_OUT_CTL, 0x10},+ {S1DREG_CRT_DISP_MODE, 0x05}, /* 16 bpp */+ {S1DREG_CRT_DISP_START0, 0x00},+ {S1DREG_CRT_DISP_START1, 0x00},+ {S1DREG_CRT_DISP_START2, 0x00},+ {S1DREG_CRT_MEM_OFF0, 0x80},+ {S1DREG_CRT_MEM_OFF1, 0x02},+ {S1DREG_CRT_PIX_PAN, 0x00},+ {S1DREG_CRT_DISP_FIFO_HTC, 0x3B},+ {S1DREG_CRT_DISP_FIFO_LTC, 0x3C},+ {S1DREG_LCD_CUR_CTL, 0x00}, /* inactive */+ {S1DREG_LCD_CUR_START, 0x01},+ {S1DREG_LCD_CUR_XPOS0, 0x00},+ {S1DREG_LCD_CUR_XPOS1, 0x00},+ {S1DREG_LCD_CUR_YPOS0, 0x00},+ {S1DREG_LCD_CUR_YPOS1, 0x00},+ {S1DREG_LCD_CUR_BCTL0, 0x00},+ {S1DREG_LCD_CUR_GCTL0, 0x00},+ {S1DREG_LCD_CUR_RCTL0, 0x00},+ {S1DREG_LCD_CUR_BCTL1, 0x1F},+ {S1DREG_LCD_CUR_GCTL1, 0x3F},+ {S1DREG_LCD_CUR_RCTL1, 0x1F},+ {S1DREG_LCD_CUR_FIFO_HTC, 0x00},+ {S1DREG_CRT_CUR_CTL, 0x00}, /* inactive */+ {S1DREG_CRT_CUR_START, 0x01},+ {S1DREG_CRT_CUR_XPOS0, 0x00},+ {S1DREG_CRT_CUR_XPOS1, 0x00},+ {S1DREG_CRT_CUR_YPOS0, 0x00},+ {S1DREG_CRT_CUR_YPOS1, 0x00},+ {S1DREG_CRT_CUR_BCTL0, 0x00},+ {S1DREG_CRT_CUR_GCTL0, 0x00},+ {S1DREG_CRT_CUR_RCTL0, 0x00},+ {S1DREG_CRT_CUR_BCTL1, 0x1F},+ {S1DREG_CRT_CUR_GCTL1, 0x3F},+ {S1DREG_CRT_CUR_RCTL1, 0x1F},+ {S1DREG_CRT_CUR_FIFO_HTC, 0x00},+ {S1DREG_BBLT_CTL0, 0x00},+ {S1DREG_BBLT_CTL0, 0x00},+ {S1DREG_BBLT_CC_EXP, 0x00},+ {S1DREG_BBLT_OP, 0x00},+ {S1DREG_BBLT_SRC_START0, 0x00},+ {S1DREG_BBLT_SRC_START1, 0x00},+ {S1DREG_BBLT_SRC_START2, 0x00},+ {S1DREG_BBLT_DST_START0, 0x00},+ {S1DREG_BBLT_DST_START1, 0x00},+ {S1DREG_BBLT_DST_START2, 0x00},+ {S1DREG_BBLT_MEM_OFF0, 0x00},+ {S1DREG_BBLT_MEM_OFF1, 0x00},+ {S1DREG_BBLT_WIDTH0, 0x00},+ {S1DREG_BBLT_WIDTH1, 0x00},+ {S1DREG_BBLT_HEIGHT0, 0x00},+ {S1DREG_BBLT_HEIGHT1, 0x00},+ {S1DREG_BBLT_BGC0, 0x00},+ {S1DREG_BBLT_BGC1, 0x00},+ {S1DREG_BBLT_FGC0, 0x00},+ {S1DREG_BBLT_FGC1, 0x00},+ {S1DREG_LKUP_MODE, 0x00}, /* LCD LUT r | LCD and CRT/TV LUT w */+ {S1DREG_LKUP_ADDR, 0x00},+ {S1DREG_PS_CNF, 0x00}, /* Power Save disable */+ {S1DREG_PS_STATUS, 0x02}, /* LCD Panel down, mem up */+ {S1DREG_CPU2MEM_WDOGT, 0x00},+ {S1DREG_COM_DISP_MODE, 0x02}, /* enable CRT display output */+};++static struct s1d13xxxfb_pdata dk_s1dfb_pdata = {+ .initregs = dk_s1dfb_initregs,+ .initregssize = ARRAY_SIZE(dk_s1dfb_initregs),+ .platform_init_video = dk_init_video,+};++static u64 s1dfb_dmamask = 0xffffffffUL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -