From 222e7933e9e439bfac671b2c62efa33825a1f1ab Mon Sep 17 00:00:00 2001 From: Claudio Mignanti Date: Sun, 7 Feb 2010 12:38:25 +0000 Subject: etrax: 2.6.32 support SVN-Revision: 19543 --- .../etrax/patches-2.6.32/100-cris-makefiles.patch | 53 +++++++++++++ .../etrax/patches-2.6.32/200-samsung_flash.patch | 11 +++ .../linux/etrax/patches-2.6.32/201-flashsize.patch | 88 ++++++++++++++++++++++ .../etrax/patches-2.6.32/300-usb_support.patch | 31 ++++++++ .../etrax/patches-2.6.32/400-Kconfig_source.patch | 86 +++++++++++++++++++++ .../linux/etrax/patches-2.6.32/500-i2c_gvc.patch | 54 +++++++++++++ .../patches-2.6.32/600-create-device-serial.patch | 44 +++++++++++ .../610-create-the-gpio-devices.patch | 50 ++++++++++++ .../620-create-the-i2c-devices.patch | 32 ++++++++ 9 files changed, 449 insertions(+) create mode 100644 target/linux/etrax/patches-2.6.32/100-cris-makefiles.patch create mode 100644 target/linux/etrax/patches-2.6.32/200-samsung_flash.patch create mode 100644 target/linux/etrax/patches-2.6.32/201-flashsize.patch create mode 100644 target/linux/etrax/patches-2.6.32/300-usb_support.patch create mode 100644 target/linux/etrax/patches-2.6.32/400-Kconfig_source.patch create mode 100644 target/linux/etrax/patches-2.6.32/500-i2c_gvc.patch create mode 100644 target/linux/etrax/patches-2.6.32/600-create-device-serial.patch create mode 100644 target/linux/etrax/patches-2.6.32/610-create-the-gpio-devices.patch create mode 100644 target/linux/etrax/patches-2.6.32/620-create-the-i2c-devices.patch (limited to 'target/linux/etrax/patches-2.6.32') diff --git a/target/linux/etrax/patches-2.6.32/100-cris-makefiles.patch b/target/linux/etrax/patches-2.6.32/100-cris-makefiles.patch new file mode 100644 index 0000000000..f837ff58fe --- /dev/null +++ b/target/linux/etrax/patches-2.6.32/100-cris-makefiles.patch @@ -0,0 +1,53 @@ +--- a/arch/cris/boot/compressed/Makefile ++++ b/arch/cris/boot/compressed/Makefile +@@ -18,7 +18,7 @@ ldflags-y += -T $(srctree)/$(src)/decomp + OBJECTS-$(CONFIG_ETRAX_ARCH_V32) = $(obj)/head_v32.o + OBJECTS-$(CONFIG_ETRAX_ARCH_V10) = $(obj)/head_v10.o + OBJECTS= $(OBJECTS-y) $(obj)/misc.o +-OBJCOPYFLAGS = -O binary --remove-section=.bss ++#OBJCOPYFLAGS = -O binary --remove-section=.bss + + quiet_cmd_image = BUILD $@ + cmd_image = cat $(obj)/decompress.bin $(obj)/piggy.gz > $@ +--- a/arch/cris/boot/Makefile ++++ b/arch/cris/boot/Makefile +@@ -5,7 +5,7 @@ + objcopyflags-$(CONFIG_ETRAX_ARCH_V10) += -R .note -R .comment + objcopyflags-$(CONFIG_ETRAX_ARCH_V32) += --remove-section=.bss + +-OBJCOPYFLAGS = -O binary $(objcopyflags-y) ++#OBJCOPYFLAGS = -O binary $(objcopyflags-y) + + + subdir- := compressed rescue +@@ -17,7 +17,7 @@ $(obj)/Image: vmlinux FORCE + + $(obj)/compressed/vmlinux: $(obj)/Image FORCE + $(Q)$(MAKE) $(build)=$(obj)/compressed $@ +- $(Q)$(MAKE) $(build)=$(obj)/rescue $(obj)/rescue/rescue.bin ++# $(Q)$(MAKE) $(build)=$(obj)/rescue $(obj)/rescue/rescue.bin + + $(obj)/zImage: $(obj)/compressed/vmlinux + @cp $< $@ +--- a/arch/cris/boot/rescue/Makefile ++++ b/arch/cris/boot/rescue/Makefile +@@ -14,7 +14,7 @@ arch-$(CONFIG_ETRAX_ARCH_V10) = v10 + arch-$(CONFIG_ETRAX_ARCH_V32) = v32 + + ldflags-y += -T $(srctree)/$(src)/rescue_$(arch-y).lds +-OBJCOPYFLAGS = -O binary --remove-section=.bss ++#OBJCOPYFLAGS = -O binary --remove-section=.bss + obj-$(CONFIG_ETRAX_ARCH_V32) = $(obj)/head_v32.o + obj-$(CONFIG_ETRAX_ARCH_V10) = $(obj)/head_v10.o + OBJECTS := $(obj-y) +--- a/arch/cris/Makefile ++++ b/arch/cris/Makefile +@@ -40,7 +40,7 @@ endif + + LD = $(CROSS_COMPILE)ld -mcrislinux + +-OBJCOPYFLAGS := -O binary -R .note -R .comment -S ++OBJCOPYFLAGS := -O binary -R .bss -R .note -R .note.gnu.build-id -R .comment -S + + CPPFLAGS_vmlinux.lds = -DDRAM_VIRTUAL_BASE=0x$(CONFIG_ETRAX_DRAM_VIRTUAL_BASE) + diff --git a/target/linux/etrax/patches-2.6.32/200-samsung_flash.patch b/target/linux/etrax/patches-2.6.32/200-samsung_flash.patch new file mode 100644 index 0000000000..4176ec3950 --- /dev/null +++ b/target/linux/etrax/patches-2.6.32/200-samsung_flash.patch @@ -0,0 +1,11 @@ +--- a/drivers/mtd/chips/cfi_cmdset_0002.c ++++ b/drivers/mtd/chips/cfi_cmdset_0002.c +@@ -385,7 +385,7 @@ struct mtd_info *cfi_cmdset_0002(struct + + cfi_fixup_major_minor(cfi, extp); + +- if (extp->MajorVersion != '1' || ++ if (extp->MajorVersion < '0' || extp->MajorVersion > '3' || + (extp->MinorVersion < '0' || extp->MinorVersion > '4')) { + if (cfi->mfr == MANUFACTURER_SAMSUNG && + (extp->MajorVersion == '3' && extp->MinorVersion == '3')) { diff --git a/target/linux/etrax/patches-2.6.32/201-flashsize.patch b/target/linux/etrax/patches-2.6.32/201-flashsize.patch new file mode 100644 index 0000000000..42a467f749 --- /dev/null +++ b/target/linux/etrax/patches-2.6.32/201-flashsize.patch @@ -0,0 +1,88 @@ +--- a/arch/cris/arch-v10/drivers/axisflashmap.c ++++ b/arch/cris/arch-v10/drivers/axisflashmap.c +@@ -113,7 +113,7 @@ static struct map_info map_cse1 = { + + /* If no partition-table was found, we use this default-set. */ + #define MAX_PARTITIONS 7 +-#define NUM_DEFAULT_PARTITIONS 3 ++#define NUM_DEFAULT_PARTITIONS 2 + + /* + * Default flash size is 2MB. CONFIG_ETRAX_PTABLE_SECTOR is most likely the +@@ -122,19 +122,14 @@ static struct map_info map_cse1 = { + */ + static struct mtd_partition axis_default_partitions[NUM_DEFAULT_PARTITIONS] = { + { +- .name = "boot firmware", +- .size = CONFIG_ETRAX_PTABLE_SECTOR, +- .offset = 0 +- }, +- { + .name = "kernel", +- .size = 0x200000 - (6 * CONFIG_ETRAX_PTABLE_SECTOR), +- .offset = CONFIG_ETRAX_PTABLE_SECTOR ++ .size = 0x00, ++ .offset = 0 + }, + { +- .name = "filesystem", +- .size = 5 * CONFIG_ETRAX_PTABLE_SECTOR, +- .offset = 0x200000 - (5 * CONFIG_ETRAX_PTABLE_SECTOR) ++ .name = "rootfs", ++ .size = 0x200000, ++ .offset = 0x200000 + } + }; + +@@ -281,6 +276,11 @@ static int __init init_axis_flash(void) + struct partitiontable_entry *ptable; + int use_default_ptable = 1; /* Until proven otherwise. */ + const char pmsg[] = " /dev/flash%d at 0x%08x, size 0x%08x\n"; ++ unsigned int kernel_part_size = 0; ++ unsigned char *flash_mem = (unsigned char*)(FLASH_CACHED_ADDR); ++ unsigned int flash_scan_count = 0; ++ const char *part_magic = "ACME_PART_MAGIC"; ++ unsigned int magic_len = strlen(part_magic); + + if (!(mymtd = flash_probe())) { + /* There's no reason to use this module if no flash chip can +@@ -293,6 +293,31 @@ static int __init init_axis_flash(void) + axisflash_mtd = mymtd; + } + ++ /* scan flash to findout where out partition starts */ ++ ++ printk(KERN_INFO "Scanning flash for end of kernel magic\n"); ++ for(flash_scan_count = 0; flash_scan_count < 100000; flash_scan_count++) { ++ if(strncmp(&flash_mem[flash_scan_count], part_magic, magic_len - 1) == 0) { ++ kernel_part_size = flash_mem[flash_scan_count + magic_len ]; ++ kernel_part_size <<= 8; ++ kernel_part_size += flash_mem[flash_scan_count + magic_len + 2]; ++ kernel_part_size <<= 8; ++ kernel_part_size += flash_mem[flash_scan_count + magic_len + 1]; ++ kernel_part_size <<= 8; ++ kernel_part_size += flash_mem[flash_scan_count + magic_len + 3]; ++ printk(KERN_INFO "Kernel ends at 0x%.08X\n", kernel_part_size); ++ flash_scan_count = 1100000; ++ } ++ } ++ ++ ++ if(kernel_part_size){ ++ kernel_part_size = (kernel_part_size & 0xffff0000); ++ axis_default_partitions[0].size = kernel_part_size; ++ axis_default_partitions[1].size = mymtd->size - axis_default_partitions[0].size; ++ axis_default_partitions[1].offset = axis_default_partitions[0].size; ++ } ++ + if (mymtd) { + mymtd->owner = THIS_MODULE; + ptable_head = (struct partitiontable_head *)(FLASH_CACHED_ADDR + +--- a/arch/cris/arch-v10/lib/hw_settings.S ++++ b/arch/cris/arch-v10/lib/hw_settings.S +@@ -60,3 +60,5 @@ + .dword R_PORT_PB_SET + .dword PB_SET_VALUE + .dword 0 ; No more register values ++ .ascii "ACME_PART_MAGIC" ++ .dword 0xdeadc0de diff --git a/target/linux/etrax/patches-2.6.32/300-usb_support.patch b/target/linux/etrax/patches-2.6.32/300-usb_support.patch new file mode 100644 index 0000000000..7b2972656a --- /dev/null +++ b/target/linux/etrax/patches-2.6.32/300-usb_support.patch @@ -0,0 +1,31 @@ +--- a/drivers/usb/host/Makefile ++++ b/drivers/usb/host/Makefile +@@ -25,6 +25,7 @@ obj-$(CONFIG_USB_UHCI_HCD) += uhci-hcd.o + obj-$(CONFIG_USB_FHCI_HCD) += fhci.o + obj-$(CONFIG_USB_SL811_HCD) += sl811-hcd.o + obj-$(CONFIG_USB_SL811_CS) += sl811_cs.o ++obj-$(CONFIG_ETRAX_USB_HOST) += hc-crisv10.o + obj-$(CONFIG_USB_U132_HCD) += u132-hcd.o + obj-$(CONFIG_USB_R8A66597_HCD) += r8a66597-hcd.o + obj-$(CONFIG_USB_ISP1760_HCD) += isp1760.o +--- a/drivers/usb/Makefile ++++ b/drivers/usb/Makefile +@@ -19,6 +19,7 @@ obj-$(CONFIG_USB_U132_HCD) += host/ + obj-$(CONFIG_USB_R8A66597_HCD) += host/ + obj-$(CONFIG_USB_HWA_HCD) += host/ + obj-$(CONFIG_USB_ISP1760_HCD) += host/ ++obj-$(CONFIG_ETRAX_USB_HOST) += host/ + + obj-$(CONFIG_USB_C67X00_HCD) += c67x00/ + +--- a/arch/cris/arch-v10/drivers/Kconfig ++++ b/arch/cris/arch-v10/drivers/Kconfig +@@ -410,7 +410,7 @@ config ETRAX_RS485_DISABLE_RECEIVER + Axis 2400/2401 must disable receiver. + + config ETRAX_USB_HOST +- bool "USB host" ++ tristate "ETRAX USB host" + select USB + help + This option enables the host functionality of the ETRAX 100LX diff --git a/target/linux/etrax/patches-2.6.32/400-Kconfig_source.patch b/target/linux/etrax/patches-2.6.32/400-Kconfig_source.patch new file mode 100644 index 0000000000..16f87e84d5 --- /dev/null +++ b/target/linux/etrax/patches-2.6.32/400-Kconfig_source.patch @@ -0,0 +1,86 @@ +--- a/arch/cris/Kconfig ++++ b/arch/cris/Kconfig +@@ -649,6 +649,8 @@ endchoice + + endmenu + ++menu "Device Drivers" ++ + source "drivers/base/Kconfig" + + # standard linux drivers +@@ -660,13 +662,19 @@ source "drivers/pnp/Kconfig" + + source "drivers/block/Kconfig" + ++# misc before ide - BLK_DEV_SGIIOC4 depends on SGI_IOC4 ++ ++source "drivers/misc/Kconfig" ++ + source "drivers/ide/Kconfig" + +-source "drivers/net/Kconfig" ++source "drivers/scsi/Kconfig" + +-source "drivers/i2c/Kconfig" ++source "drivers/ata/Kconfig" + +-source "drivers/rtc/Kconfig" ++source "drivers/net/Kconfig" ++ ++source "drivers/isdn/Kconfig" + + # + # input before char - char/joystick depends on it. As does USB. +@@ -675,14 +683,50 @@ source "drivers/input/Kconfig" + + source "drivers/char/Kconfig" + +-source "fs/Kconfig" ++source "drivers/i2c/Kconfig" ++ ++#source "drivers/spi/Kconfig" ++ ++source "drivers/gpio/Kconfig" ++ ++source "drivers/w1/Kconfig" ++ ++source "drivers/power/Kconfig" ++ ++source "drivers/hwmon/Kconfig" ++ ++source "drivers/thermal/Kconfig" ++ ++source "drivers/watchdog/Kconfig" ++ ++source "drivers/ssb/Kconfig" ++ ++#source "drivers/l3/Kconfig" ++ ++source "drivers/mfd/Kconfig" ++ ++source "drivers/media/Kconfig" ++ ++source "drivers/video/Kconfig" ++ ++source "sound/Kconfig" ++ ++source "drivers/hid/Kconfig" + + source "drivers/usb/Kconfig" + + source "drivers/uwb/Kconfig" + ++source "drivers/leds/Kconfig" ++ ++source "drivers/rtc/Kconfig" ++ + source "drivers/staging/Kconfig" + ++endmenu ++ ++source "fs/Kconfig" ++ + source "arch/cris/Kconfig.debug" + + source "security/Kconfig" diff --git a/target/linux/etrax/patches-2.6.32/500-i2c_gvc.patch b/target/linux/etrax/patches-2.6.32/500-i2c_gvc.patch new file mode 100644 index 0000000000..16f9b93a02 --- /dev/null +++ b/target/linux/etrax/patches-2.6.32/500-i2c_gvc.patch @@ -0,0 +1,54 @@ +--- a/arch/cris/arch-v10/drivers/Kconfig ++++ b/arch/cris/arch-v10/drivers/Kconfig +@@ -450,11 +450,31 @@ config ETRAX_I2C + i2c_arg = I2C_READARG(STA013_READ_ADDR, reg); + val = ioctl(fd, _IO(ETRAXI2C_IOCTYPE, I2C_READREG), i2c_arg); + ++config ETRAX_I2C_GVC ++ bool "I2C GVC support" ++ depends on ETRAX_ARCH_V10 && !ETRAX_I2C ++ select ETRAX_I2C_USES_PB_NOT_PB_I2C ++ help ++ Enables an I2C driver with Geert Vancompernolle improvement. ++ ++config ETRAX_I2C_SLAVE_DELAY ++ bool "I2C Slave delay support" ++ depends on ETRAX_I2C_GVC && EXPERIMENTAL ++ help ++ Enable this to enhanced master/slave dialog ++ Improvement by Positive Going (www.positivegoing.it) and BK srl (www.b-k.it) ++ ++config ETRAX_I2C_DYN_ALLOC ++ bool "I2C major device dynamic alloc" ++ depends on ETRAX_I2C_GVC && EXPERIMENTAL ++ help ++ Enable this to dynamicaly alloc major i2c device number ++ + # this is true for most products since PB-I2C seems to be somewhat + # flawed.. + config ETRAX_I2C_USES_PB_NOT_PB_I2C + bool "I2C uses PB not PB-I2C" +- depends on ETRAX_I2C ++ depends on ETRAX_I2C || ETRAX_I2C_GVC + help + Select whether to use the special I2C mode in the PB I/O register or + not. This option needs to be selected in order to use some drivers +@@ -478,7 +498,7 @@ config ETRAX_I2C_CLK_PORT + + config ETRAX_I2C_EEPROM + bool "I2C EEPROM (non-volatile RAM) support" +- depends on ETRAX_I2C ++ depends on ETRAX_I2C || ETRAX_I2C_GVC + help + Enables I2C EEPROM (non-volatile RAM) on PB0 and PB1 using the I2C + driver. Select size option: Probed, 2k, 8k, 16k. +--- a/arch/cris/arch-v10/drivers/Makefile ++++ b/arch/cris/arch-v10/drivers/Makefile +@@ -4,6 +4,7 @@ + + obj-$(CONFIG_ETRAX_AXISFLASHMAP) += axisflashmap.o + obj-$(CONFIG_ETRAX_I2C) += i2c.o ++obj-$(CONFIG_ETRAX_I2C_GVC) += i2c_gvc.o + obj-$(CONFIG_ETRAX_I2C_EEPROM) += eeprom.o + obj-$(CONFIG_ETRAX_GPIO) += gpio.o + obj-$(CONFIG_ETRAX_DS1302) += ds1302.o diff --git a/target/linux/etrax/patches-2.6.32/600-create-device-serial.patch b/target/linux/etrax/patches-2.6.32/600-create-device-serial.patch new file mode 100644 index 0000000000..516b98471f --- /dev/null +++ b/target/linux/etrax/patches-2.6.32/600-create-device-serial.patch @@ -0,0 +1,44 @@ +--- a/drivers/serial/crisv10.c ++++ b/drivers/serial/crisv10.c +@@ -31,6 +31,7 @@ static char *serial_version = "$Revision + #include + #include + #include ++#include + + #include + #include +@@ -4414,6 +4415,8 @@ static const struct tty_operations rs_op + #endif + }; + ++static struct class *rs_class; ++ + static int __init rs_init(void) + { + int i; +@@ -4547,6 +4550,24 @@ static int __init rs_init(void) + #endif + #endif /* CONFIG_SVINTO_SIM */ + ++ rs_class = class_create(THIS_MODULE, "rs_tty"); ++#ifdef CONFIG_ETRAX_SERIAL_PORT0 ++ device_create(rs_class, NULL, ++ MKDEV(TTY_MAJOR, 64), NULL, "ttyS0"); ++#endif ++#ifdef CONFIG_ETRAX_SERIAL_PORT1 ++ device_create(rs_class, NULL, ++ MKDEV(TTY_MAJOR, 65), NULL, "ttyS1"); ++#endif ++#ifdef CONFIG_ETRAX_SERIAL_PORT2 ++ device_create(rs_class, NULL, ++ MKDEV(TTY_MAJOR, 66), NULL, "ttyS2"); ++#endif ++#ifdef CONFIG_ETRAX_SERIAL_PORT3 ++ device_create(rs_class, NULL, ++ MKDEV(TTY_MAJOR, 67), NULL, "ttyS3"); ++#endif ++ + return 0; + } + diff --git a/target/linux/etrax/patches-2.6.32/610-create-the-gpio-devices.patch b/target/linux/etrax/patches-2.6.32/610-create-the-gpio-devices.patch new file mode 100644 index 0000000000..27e13c2baf --- /dev/null +++ b/target/linux/etrax/patches-2.6.32/610-create-the-gpio-devices.patch @@ -0,0 +1,50 @@ +--- a/arch/cris/arch-v10/drivers/gpio.c ++++ b/arch/cris/arch-v10/drivers/gpio.c +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -771,6 +772,8 @@ static void ioif_watcher(const unsigned + + /* main driver initialization routine, called from mem.c */ + ++static struct class *gp_class; ++ + static int __init gpio_init(void) + { + int res; +@@ -784,6 +787,8 @@ static int __init gpio_init(void) + return res; + } + ++ gp_class = class_create(THIS_MODULE, "gpio_etrax"); ++ + /* Clear all leds */ + #if defined (CONFIG_ETRAX_CSP0_LEDS) || defined (CONFIG_ETRAX_PA_LEDS) || defined (CONFIG_ETRAX_PB_LEDS) + CRIS_LED_NETWORK_SET(0); +@@ -796,6 +801,8 @@ static int __init gpio_init(void) + CRIS_LED_BIT_SET(i); + #endif + ++ device_create(gp_class, NULL, ++ MKDEV(GPIO_MAJOR, 2), NULL, "leds"); + #endif + /* The I/O interface allocation watcher will be called when + * registering it. */ +@@ -822,6 +829,12 @@ static int __init gpio_init(void) + if (res) + printk(KERN_CRIT "err: PA irq for gpio\n"); + ++ device_create(gp_class, NULL, ++ MKDEV(GPIO_MAJOR, 0), NULL, "gpioa"); ++ device_create(gp_class, NULL, ++ MKDEV(GPIO_MAJOR, 1), NULL, "gpiob"); ++ device_create(gp_class, NULL, ++ MKDEV(GPIO_MAJOR, 3), NULL, "gpiog"); + return res; + } + diff --git a/target/linux/etrax/patches-2.6.32/620-create-the-i2c-devices.patch b/target/linux/etrax/patches-2.6.32/620-create-the-i2c-devices.patch new file mode 100644 index 0000000000..9c2e37ae98 --- /dev/null +++ b/target/linux/etrax/patches-2.6.32/620-create-the-i2c-devices.patch @@ -0,0 +1,32 @@ +--- a/arch/cris/arch-v10/drivers/i2c.c ++++ b/arch/cris/arch-v10/drivers/i2c.c +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + + #include + +@@ -678,6 +679,8 @@ i2c_init(void) + return res; + } + ++static struct class *i2c_class; ++ + static int __init + i2c_register(void) + { +@@ -693,7 +696,11 @@ i2c_register(void) + } + + printk(KERN_INFO "I2C driver v2.2, (c) 1999-2004 Axis Communications AB\n"); +- ++ ++ i2c_class = class_create(THIS_MODULE, "i2c_etrax"); ++ device_create(i2c_class, NULL, ++ MKDEV(I2C_MAJOR, 0), NULL, "i2c"); ++ + return 0; + } + -- cgit v1.2.3