diff -ruN linux-2.6.28.2-orig/arch/sh/boards/board-jcinap7760.c linux-2.6.28.2/arch/sh/boards/board-jcinap7760.c --- linux-2.6.28.2-orig/arch/sh/boards/board-jcinap7760.c 1969-12-31 18:00:00.000000000 -0600 +++ linux-2.6.28.2/arch/sh/boards/board-jcinap7760.c 2009-05-02 09:52:58.000000000 -0500 @@ -0,0 +1,554 @@ +/* + * Johnson Controls NAP7760 (N40) Board Support + * (Based on Renesas Europe EDOSK7760 Board Support) + * + * Copyright (C) 2008 SPES Societa' Progettazione Elettronica e Software Ltd. + * Author: Luca Santini + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +#include +#include +#include +#include +#include +//#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define SMC_IOADDR 0x10000300 +#define SMC_IRQ 2 /* IRL0# on JCI NAP */ + +#define DUART_A_IOADDR 0x18000008 +#define DUART_A_IRQ 5 /* IRL2# on JCI NAP */ + +#define DUART_B_IOADDR 0x18000000 +#define DUART_B_IRQ 8 /* IRL1# on JCI NAP */ + +#define IPSELR 0xFE400034 + +#define PBCR 0xFE400004 +#define PCCR 0xFE400008 +#define PDCR 0xFE40000C +#define PECR 0xFE400010 +#define PFCR 0xFE400014 +#define PGCR 0xFE400018 + +#define PBDR 0xFE400044 +#define PGDR 0xFE400058 + +#define PTB5 0x20 + +#define DMARSRA 0xFE090000 +#define DMARSRB 0xFE090004 +#define DMATCR0 0xFFA00008 +#define DMAOR 0xFFA00040 + +#define BKLIGHT_MASK 0x20 /* Pin assigned to backlight */ +#define BKLIGHT_CTRL_MASK 0x0C00 /* Control bits for backlight pin */ +#define BKLIGHT_CTRL_VALUE 0x0400 /* Set pin to output mode */ +#define IPSELR_LCDC_MASK 0x0203 + +/* NOR flash */ +static struct mtd_partition jcinap7760_nor_flash_partitions[] = { + { + .name = "bootloader", + .offset = 0, + .size = 512 * 1024, + .mask_flags = MTD_WRITEABLE, /* Read-only */ + }, { + .name = "turboboot", + .offset = MTDPART_OFS_APPEND, + .size = 6 * 256 * 1024, /* Six more blocks for linux kernel */ + }, { + .name = "linux", + .offset = MTDPART_OFS_APPEND, + .size = 4 * 1024 * 1024, /* 4 MB for linux kernel */ + }, { + .name = "jffs2", + .offset = MTDPART_OFS_APPEND, + .size = 110 * 1024 * 1024, /* JFFS2 is 110MB for now */ + }, { + .name = "tbparttbl", + .offset = MTDPART_OFS_APPEND, + .size = MTDPART_SIZ_FULL, + .mask_flags = MTD_WRITEABLE, /* Read-only */ + }, +}; + +static struct physmap_flash_data jcinap7760_nor_flash_data = { + .width = 4, + .parts = jcinap7760_nor_flash_partitions, + .nr_parts = ARRAY_SIZE(jcinap7760_nor_flash_partitions), +}; + +static struct resource jcinap7760_nor_flash_resources[] = { + [0] = { + .name = "NAP-NOR-Flash", + .start = 0x00000000, + .end = 0x00000000 + SZ_128M - 1, + .flags = IORESOURCE_MEM, + } +}; + +static struct platform_device jcinap7760_nor_flash_device = { + .name = "physmap-flash", + .resource = jcinap7760_nor_flash_resources, + .num_resources = ARRAY_SIZE(jcinap7760_nor_flash_resources), + .dev = { + .platform_data = &jcinap7760_nor_flash_data, + }, +}; + +/* i2c initialization functions */ +static struct sh7760_i2c_platdata i2c_pd = { + .speed_khz = 400, +}; + +static struct resource sh7760_i2c1_res[] = { + { + .start = SH7760_I2C1_MMIO, + .end = SH7760_I2C1_MMIOEND, + .flags = IORESOURCE_MEM, + },{ + .start = SH7760_I2C1_IRQ, + .end = SH7760_I2C1_IRQ, + .flags = IORESOURCE_IRQ, + }, +}; + +static struct platform_device sh7760_i2c1_dev = { + .dev = { + .platform_data = &i2c_pd, + }, + + .name = SH7760_I2C_DEVNAME, + .id = 1, + .resource = sh7760_i2c1_res, + .num_resources = ARRAY_SIZE(sh7760_i2c1_res), +}; + +static struct resource sh7760_i2c0_res[] = { + { + .start = SH7760_I2C0_MMIO, + .end = SH7760_I2C0_MMIOEND, + .flags = IORESOURCE_MEM, + }, { + .start = SH7760_I2C0_IRQ, + .end = SH7760_I2C0_IRQ, + .flags = IORESOURCE_IRQ, + }, +}; + +static struct platform_device sh7760_i2c0_dev = { + .dev = { + .platform_data = &i2c_pd, + }, + .name = SH7760_I2C_DEVNAME, + .id = 0, + .resource = sh7760_i2c0_res, + .num_resources = ARRAY_SIZE(sh7760_i2c0_res), +}; + +static struct led_info jcinap7760_led_info[] = { + { .name = "peer_com" }, + { .name = "run" }, + { .name = "gen_fault" }, + { .name = "bat_fault" }, + { .name = "eth_10" }, + { .name = "bat_chg_n" }, /* Used as binary (low active) output */ + { .name = "bat_load_n" }, /* Used as binary (low active) output */ + { .name = "bo_on_n" }, /* Used as binary (low active) output */ +}; + +static struct led_platform_data jcinap7760_led_platform_data = { + .num_leds = 8, + .leds = jcinap7760_led_info, +}; + +static struct i2c_board_info __initdata sh7760_i2c0_devices[] = { + { + I2C_BOARD_INFO("pca9551", 0x60), /* Use 7-bit addresses */ + .platform_data = &jcinap7760_led_platform_data, + }, +}; + +static struct pca953x_platform_data jcinap_ccs_gpio_pdata = { + .gpio_base = 0, +}; + +static struct i2c_board_info __initdata sh7760_ccs_i2c0_devices[] = { + { + I2C_BOARD_INFO("pca9539", 0x77), /* Use 7-bit addresses */ + .platform_data = &jcinap_ccs_gpio_pdata, + }, +}; + +static struct i2c_board_info __initdata sh7760_i2c1_devices[] = { + { + I2C_BOARD_INFO("rx8581", 0x51), /* Use 7-bit addresses */ + }, +}; + +/* Ethernet initialization functions */ + +static struct smc91x_platdata smc91x_info = { + .flags = SMC91X_USE_16BIT | SMC91X_IO_SHIFT_0 | IORESOURCE_IRQ_LOWLEVEL, +}; + +static struct resource smc91x_res[] = { + [0] = { + .start = SMC_IOADDR, + .end = SMC_IOADDR + SZ_32 - 1, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = SMC_IRQ, + .end = SMC_IRQ, + .flags = IORESOURCE_IRQ , + } +}; + +static struct platform_device smc91x_dev = { + .name = "smc91x", + .id = -1, + .num_resources = ARRAY_SIZE(smc91x_res), + .resource = smc91x_res, + + .dev = { + .platform_data = &smc91x_info, + }, +}; + +/* DUART */ +static struct plat_serial8250_port serial_platform_data[] = { + { + .mapbase = DUART_A_IOADDR, + .irq = DUART_A_IRQ, + .uartclk = 3686400, + .regshift = 0, + .iotype = UPIO_MEM, + .flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP | UPF_SKIP_TEST, + }, + { + .mapbase = DUART_B_IOADDR, + .irq = DUART_B_IRQ, + .uartclk = 3686400, + .regshift = 0, + .iotype = UPIO_MEM, + .flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP | UPF_SKIP_TEST, + }, + { }, +}; + +static struct platform_device serial_devices = { + .name = "serial8250", + .id = PLAT8250_DEV_PLATFORM, + .dev = { + .platform_data = serial_platform_data, + }, +}; + +/* SH7760 LCDC */ +static struct resource sh7760_fb_resources[] = { + [0] = { + .start = 0xFE300800, + .end = 0xFE300CFF, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = 65, + .end = 65, + .flags = IORESOURCE_IRQ, + }, +}; + +static struct fb_videomode sh7760_fb_videomode = { + .name = "XVGA Monitor", + .xres = 800, + .yres = 480, + .pixclock = 30066, /* pico seconds */ + .left_margin = 288, + .right_margin = 64, + .upper_margin = 33, + .lower_margin = 4, + .hsync_len = 88, + .vsync_len = 6, + .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, + .vmode = FB_VMODE_NONINTERLACED, + .flag = 0, +}; + +static struct sh7760fb_platdata sh7760_fb_def_pdata = { + .def_mode = &sh7760_fb_videomode, + .ldickr = 0x1111, + .ldmtr = 0xC42B, /* was...(LDMTR_TFT_COLOR_16|LDMTR_MCNT),*/ + .lddfr = LDDFR_8BPP, + .ldpmmr = 0x0070, + .ldpspr = 0xF66F, + .ldaclnr = 0x000C, + .rotate = 0, + .novsync = 1, + .blank = NULL, +}; + +static struct platform_device sh7760_fb_device = { + .name = "sh7760-lcdc", + .resource = sh7760_fb_resources, + .num_resources = ARRAY_SIZE(sh7760_fb_resources), + .dev = { + .platform_data = &sh7760_fb_def_pdata, + }, +}; + +/* USB Host Controller */ +static struct resource usb_host_resources[] = { + [0] = { + .start = 0xfe340000, + .end = 0xfe342fff, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = 64, + .end = 64, + .flags = IORESOURCE_IRQ, + }, +}; + +static struct platform_device usb_host_device = { + .name = "sh_ohci", + .id = -1, + .num_resources = ARRAY_SIZE(usb_host_resources), + .resource = usb_host_resources, +}; + +/* SPI devices - Touch Screen (CCS only) */ + +static int ads7843_pendown_state(void) +{ + return (ctrl_inb(PGDR) & 0x40) ? 0 : 1; +} + +static struct ads7846_platform_data ads_info = { + .model = 7843, + .x_min = 150, + .x_max = 3830, + .y_min = 190, + .y_max = 3830, + .vref_delay_usecs = 100, + .keep_vref_on = 1, /* To match CCS WinCE impl. */ + .x_plate_ohms = 576, + .y_plate_ohms = 366, + .pressure_max = 15000, /* Generally nonsense on the 7843 */ + .debounce_max = 1, + .debounce_rep = 0, + .debounce_tol = (~0), + .get_pendown_state = ads7843_pendown_state, +}; + +static struct spi_board_info jcinap_spi_devices[] = { + { + /* Touchscreen controller */ + .modalias = "ads7846", + .chip_select = 0, + .bus_num = 0, + .max_speed_hz = 1000000, /* 1Mhz */ + .platform_data = &ads_info, + .irq = 11 + }, +}; + +/* SPI Interface */ + +static struct resource spi_res[] = { + [0] = { + .start = 0xFE180000, + .end = 0xFE180013, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = 84, + .end = 84, + .flags = IORESOURCE_IRQ , + } +}; + +static struct platform_device spi_dev = { + .name = "spi_hspi", + .id = 0, + .num_resources = ARRAY_SIZE(spi_res), + .resource = spi_res, +}; + +/* Platform init code */ +static struct platform_device *jcinap7760_devices[] __initdata = { + &serial_devices, + &smc91x_dev, + &jcinap7760_nor_flash_device, + &usb_host_device, +}; + +static struct platform_device *jcinap7760_ccs_devices[] __initdata = { + &serial_devices, + &spi_dev, + &smc91x_dev, + &jcinap7760_nor_flash_device, + &usb_host_device, + &sh7760_fb_device, +}; + + +/* NAP's watchdog control option */ +static int jciwatchdog = 1; // On by default +static int __init jciwatchdogoff(char *str) { + jciwatchdog = 0; + return 0; +} + +early_param("jciwatchdogoff", jciwatchdogoff); + +/* Identify NAP CCS variation. */ + +#define NAP_FACTORY_DATA_ADDRESS (0xA0080000 - 1) /* accessing via in P2 region */ + +typedef struct _NAP_FACTORY_DATA { + u8 MinorVer; /* Minor Version */ + u8 MajorVer; /* Major Version */ + + union { + struct { + u16 Day : 5; /* 4:0 Day of Month. */ + u16 Month : 4; /* 8:5 Month of Year */ + u16 Year : 7; /* 15:9 Year */ + }; + u16 wDate; + }; + + u8 MAC[6]; /* MAC Address */ + u8 ProductCode[32]; /* Product Codes */ + u16 wBattDeltaRes; /* Battery Delta Resolution */ + u16 wBattDeltaOff; /* Battery Delta Offset */ + u16 wBattVoltRes; /* Battery Volt Resolution */ + u16 wBattVoltOff; /* Battery Volt Offset */ +} NAP_FACTORY_DATA; + +static int __init is_ccs_nap(void) +{ + NAP_FACTORY_DATA* fdata_ptr; + u8* ptr = (u8*)NAP_FACTORY_DATA_ADDRESS - 1; + + if (memcmp(ptr, "JC", 2) == 0) { + ptr -= 2; + /* Subtract offset from offset's addr to get factory data structure address */ + ptr = ptr - *(u16*)(ptr); + fdata_ptr = (NAP_FACTORY_DATA*)ptr; + return memcmp(fdata_ptr->ProductCode, "YK", 2) == 0 || memcmp(fdata_ptr->ProductCode, "LC", 2) == 0; + } + else + return 0; +} + +/**** Platform device initialization. *****/ + +static int __init init_jcinap7760_devices(void) +{ + int is_ccs = is_ccs_nap(); + + if (is_ccs) { + /* Enable LCDC function pins */ + ctrl_outw(0, PCCR); + ctrl_outw(0, PDCR); + ctrl_outw(0, PECR); + ctrl_outw(ctrl_inw(IPSELR) & ~IPSELR_LCDC_MASK, IPSELR); + + /* Set up DMA for the LCDC */ + ctrl_outl(0x94808080, DMARSRA); + ctrl_outl(0x80808080, DMARSRB); + ctrl_outl(0, DMATCR0); + ctrl_outl(0x0000C001, DMAOR); /* DMABRG | DME */ + + /* Set up and (for now) turn on the LCD backlight. */ + if ((ctrl_inw(PGCR) & BKLIGHT_CTRL_MASK) != BKLIGHT_CTRL_VALUE) { + /* We don't mess with PFC for GPIO G if it has already been initialized properly */ + ctrl_outw((ctrl_inw(PGCR) & ~BKLIGHT_CTRL_MASK) | BKLIGHT_CTRL_VALUE, PGCR); + } + /* Turn on the LCD backlight TODO: Hook into standard Linux backlight control */ + ctrl_outb(ctrl_inb(PGDR) | BKLIGHT_MASK, PGDR); + + /* Enable Pen input GPIO PTG6 */ + ctrl_outw(ctrl_inw(PGCR) | 0x3000, PGCR); + + /* Register the SPI devices */ + spi_register_board_info(jcinap_spi_devices, ARRAY_SIZE(jcinap_spi_devices)); + + /* Now set up the our board's other devices. */ + platform_add_devices(jcinap7760_ccs_devices, ARRAY_SIZE(jcinap7760_ccs_devices)); + } + else { + /* Now set up the our board's other devices. */ + platform_add_devices(jcinap7760_devices, ARRAY_SIZE(jcinap7760_devices)); + } + + /* I2C Based devices are last. */ + if (is_ccs) + i2c_register_board_info(0, sh7760_ccs_i2c0_devices, ARRAY_SIZE(sh7760_ccs_i2c0_devices)); + else + i2c_register_board_info(0, sh7760_i2c0_devices, ARRAY_SIZE(sh7760_i2c0_devices)); + + platform_device_register(&sh7760_i2c0_dev); + + i2c_register_board_info(1, sh7760_i2c1_devices, ARRAY_SIZE(sh7760_i2c1_devices)); + platform_device_register(&sh7760_i2c1_dev); + + return 0; +} +__initcall(init_jcinap7760_devices); + +static void __init init_jcinap7760_irqs(void) +{ + plat_irq_setup_pins(IRQ_MODE_IRQ); + if (jciwatchdog) { + /* Enable PORTB Bit 5 as output and drive high. Timer interrupt toggles bit. */ + ctrl_outb(ctrl_inb(PBDR) | PTB5, PBDR); // First set as high + ctrl_outw((ctrl_inw(PBCR) & 0xF3FF) | 0x0400, PBCR); + } + else { + /* Cobra's watchdog defeat is wired so ensure PORTB bit 5 is an input. */ + ctrl_outw((ctrl_inw(PBCR) & 0xF3FF) | 0x0800, PBCR); + } +} + +/* + * The Machine Vector + */ +struct sh_machine_vector mv_jcinap7760 __initmv = { + .mv_name = "JCINAP7760", + .mv_nr_irqs = 128, + .mv_init_irq = &init_jcinap7760_irqs, +}; diff -ruN linux-2.6.28.2-orig/arch/sh/boards/Kconfig linux-2.6.28.2/arch/sh/boards/Kconfig --- linux-2.6.28.2-orig/arch/sh/boards/Kconfig 2009-01-24 18:42:07.000000000 -0600 +++ linux-2.6.28.2/arch/sh/boards/Kconfig 2009-05-02 09:52:58.000000000 -0500 @@ -194,6 +194,12 @@ Select if configuring for a Renesas EDOSK7760 evaluation board. +config SH_JCINAP7760 + bool "JCINAP7760" + depends on CPU_SUBTYPE_SH7760 + help + Select if configuring for a Johnson Controls NAP (SH7760) N40 Platform. + config SH_SH4202_MICRODEV bool "SH4-202 MicroDev" depends on CPU_SUBTYPE_SH4_202 diff -ruN linux-2.6.28.2-orig/arch/sh/boards/Makefile linux-2.6.28.2/arch/sh/boards/Makefile --- linux-2.6.28.2-orig/arch/sh/boards/Makefile 2009-01-24 18:42:07.000000000 -0600 +++ linux-2.6.28.2/arch/sh/boards/Makefile 2009-05-02 09:52:58.000000000 -0500 @@ -7,3 +7,4 @@ obj-$(CONFIG_SH_SH7785LCR) += board-sh7785lcr.o obj-$(CONFIG_SH_SHMIN) += board-shmin.o obj-$(CONFIG_SH_EDOSK7760) += board-edosk7760.o +obj-$(CONFIG_SH_JCINAP7760) += board-jcinap7760.o diff -ruN linux-2.6.28.2-orig/arch/sh/boot/compressed/head_32.S linux-2.6.28.2/arch/sh/boot/compressed/head_32.S --- linux-2.6.28.2-orig/arch/sh/boot/compressed/head_32.S 2009-01-24 18:42:07.000000000 -0600 +++ linux-2.6.28.2/arch/sh/boot/compressed/head_32.S 2009-05-02 09:52:58.000000000 -0500 @@ -80,6 +80,12 @@ jsr @r0 nop +#ifdef CONFIG_SH_JCINAP7760 + /* Copy the TurboBoot kernel parameters to actual kernel address. */ + mov.l copy_turboboot_kernel_parameters_addr, r0 + jsr @r0 + nop +#endif /* Jump to the start of the decompressed kernel */ mov.l kernel_start_addr, r0 jmp @r0 @@ -98,7 +104,10 @@ .long decompress_kernel kernel_start_addr: .long _text+PAGE_SIZE - +#ifdef CONFIG_SH_JCINAP7760 +copy_turboboot_kernel_parameters_addr: + .long copy_turboboot_kernel_parameters +#endif .align 9 fake_headers_as_bzImage: .word 0 diff -ruN linux-2.6.28.2-orig/arch/sh/boot/compressed/misc_32.c linux-2.6.28.2/arch/sh/boot/compressed/misc_32.c --- linux-2.6.28.2-orig/arch/sh/boot/compressed/misc_32.c 2009-01-24 18:42:07.000000000 -0600 +++ linux-2.6.28.2/arch/sh/boot/compressed/misc_32.c 2009-05-02 09:52:58.000000000 -0500 @@ -95,6 +95,25 @@ #include "../../../../lib/inflate.c" +void* memset(void* s, int c, size_t n) +{ + int i; + char *ss = (char*)s; + + for (i=0;i> 28); + char ch = hexdigit >= 10 ? 'a' + (hexdigit - 10) : '0' + hexdigit; + putDebugChar(ch); + n <<= 4; + } +} + +int puts(const char *s) +{ + int len = strlen(s); + putDebugString(s); + return len; +} + +void copy_turboboot_kernel_parameters(void) +{ + unsigned long linux_param_ptr = PHYSADDR((unsigned long)&_text); + unsigned long tb_param_ptr = 0xAC001000; /* Hard coded address in TurboBoot. */ + memcpy((void*)linux_param_ptr, (void*)tb_param_ptr, 512); +} + +#else +int puts(const char *s) +{ + /* This should be updated to use the sh-sci routines */ + return 0; } +#endif /* =========================================================================== * Fill the input buffer. This is called only when the buffer is empty @@ -151,6 +241,7 @@ inbuf = input_data; insize = input_len; inptr = 1; + return inbuf[0]; } @@ -163,6 +254,11 @@ ulg c = crc; /* temporary variable */ unsigned n; uch *in, *out, ch; + +#ifdef CONFIG_SH_JCINAP7760 + jci_toggle_watchdog(); + putDebugChar('.'); +#endif in = window; out = &output_data[output_ptr]; @@ -191,6 +287,9 @@ void decompress_kernel(void) { +#ifdef CONFIG_SH_JCINAP7760 + jci_init_irqs(); +#endif output_data = NULL; output_ptr = PHYSADDR((unsigned long)&_text+PAGE_SIZE); #ifdef CONFIG_29BIT @@ -200,7 +299,7 @@ free_mem_end_ptr = free_mem_ptr + HEAP_SIZE; makecrc(); - puts("Uncompressing Linux... "); + puts("Decompressing Linux... "); gunzip(); puts("Ok, booting the kernel.\n"); } diff -ruN linux-2.6.28.2-orig/arch/sh/configs/jcinap7760_defconfig linux-2.6.28.2/arch/sh/configs/jcinap7760_defconfig --- linux-2.6.28.2-orig/arch/sh/configs/jcinap7760_defconfig 1969-12-31 18:00:00.000000000 -0600 +++ linux-2.6.28.2/arch/sh/configs/jcinap7760_defconfig 2009-05-02 16:16:35.000000000 -0500 @@ -0,0 +1,1332 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.28.2 +# Sat May 2 16:05:40 2009 +# +CONFIG_SUPERH=y +CONFIG_SUPERH32=y +CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig" +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_FIND_NEXT_BIT=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y +CONFIG_GENERIC_IRQ_PROBE=y +# CONFIG_GENERIC_GPIO is not set +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +# CONFIG_ARCH_HAS_ILOG2_U32 is not set +# CONFIG_ARCH_HAS_ILOG2_U64 is not set +CONFIG_ARCH_NO_VIRT_TO_BUS=y +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" + +# +# General setup +# +# CONFIG_EXPERIMENTAL is not set +CONFIG_BROKEN_ON_SMP=y +CONFIG_LOCK_KERNEL=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_LOCALVERSION="nappylinux" +CONFIG_LOCALVERSION_AUTO=y +# CONFIG_SWAP is not set +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_TASKSTATS is not set +# CONFIG_AUDIT is not set +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=17 +# CONFIG_CGROUPS is not set +CONFIG_SYSFS_DEPRECATED=y +CONFIG_SYSFS_DEPRECATED_V2=y +# CONFIG_RELAY is not set +# CONFIG_NAMESPACES is not set +# CONFIG_BLK_DEV_INITRD is not set +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_SYSCTL=y +CONFIG_EMBEDDED=y +# CONFIG_UID16 is not set +# CONFIG_SYSCTL_SYSCALL is not set +CONFIG_KALLSYMS=y +CONFIG_KALLSYMS_ALL=y +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +# CONFIG_ELF_CORE is not set +# CONFIG_COMPAT_BRK is not set +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 is not set +CONFIG_AIO=y +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_SLUB_DEBUG is not set +# 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_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_RT_MUTEXES=y +CONFIG_TINY_SHMEM=y +CONFIG_BASE_SMALL=0 +# CONFIG_MODULES is not set +CONFIG_BLOCK=y +# CONFIG_LBD is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +# CONFIG_LSF is not set +# CONFIG_BLK_DEV_INTEGRITY is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +# CONFIG_IOSCHED_AS is not set +# CONFIG_IOSCHED_DEADLINE is not set +# CONFIG_IOSCHED_CFQ is not set +# CONFIG_DEFAULT_AS is not set +# CONFIG_DEFAULT_DEADLINE is not set +# CONFIG_DEFAULT_CFQ is not set +CONFIG_DEFAULT_NOOP=y +CONFIG_DEFAULT_IOSCHED="noop" +CONFIG_CLASSIC_RCU=y +# CONFIG_FREEZER is not set + +# +# System type +# +CONFIG_CPU_SH4=y +# CONFIG_CPU_SUBTYPE_SH7619 is not set +# CONFIG_CPU_SUBTYPE_SH7203 is not set +# CONFIG_CPU_SUBTYPE_SH7206 is not set +# CONFIG_CPU_SUBTYPE_SH7263 is not set +# CONFIG_CPU_SUBTYPE_MXG is not set +# CONFIG_CPU_SUBTYPE_SH7705 is not set +# CONFIG_CPU_SUBTYPE_SH7706 is not set +# CONFIG_CPU_SUBTYPE_SH7707 is not set +# CONFIG_CPU_SUBTYPE_SH7708 is not set +# CONFIG_CPU_SUBTYPE_SH7709 is not set +# CONFIG_CPU_SUBTYPE_SH7710 is not set +# CONFIG_CPU_SUBTYPE_SH7712 is not set +# CONFIG_CPU_SUBTYPE_SH7720 is not set +# CONFIG_CPU_SUBTYPE_SH7721 is not set +# CONFIG_CPU_SUBTYPE_SH7750 is not set +# CONFIG_CPU_SUBTYPE_SH7091 is not set +# CONFIG_CPU_SUBTYPE_SH7750R is not set +# CONFIG_CPU_SUBTYPE_SH7750S is not set +# CONFIG_CPU_SUBTYPE_SH7751 is not set +# CONFIG_CPU_SUBTYPE_SH7751R is not set +CONFIG_CPU_SUBTYPE_SH7760=y +# CONFIG_CPU_SUBTYPE_SH4_202 is not set +# CONFIG_CPU_SUBTYPE_SH7723 is not set +# CONFIG_CPU_SUBTYPE_SH7763 is not set +# CONFIG_CPU_SUBTYPE_SH7770 is not set +# CONFIG_CPU_SUBTYPE_SH7780 is not set +# CONFIG_CPU_SUBTYPE_SH7785 is not set +# CONFIG_CPU_SUBTYPE_SHX3 is not set +# CONFIG_CPU_SUBTYPE_SH7343 is not set +# CONFIG_CPU_SUBTYPE_SH7722 is not set +# CONFIG_CPU_SUBTYPE_SH7366 is not set +# CONFIG_CPU_SUBTYPE_SH5_101 is not set +# CONFIG_CPU_SUBTYPE_SH5_103 is not set + +# +# Memory management options +# +CONFIG_QUICKLIST=y +CONFIG_MMU=y +CONFIG_PAGE_OFFSET=0x80000000 +CONFIG_MEMORY_START=0x08000000 +CONFIG_MEMORY_SIZE=0x08000000 +CONFIG_29BIT=y +CONFIG_VSYSCALL=y +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_MAX_ACTIVE_REGIONS=1 +CONFIG_ARCH_POPULATES_NODE_MAP=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_PAGE_SIZE_4KB=y +# CONFIG_PAGE_SIZE_8KB is not set +# CONFIG_PAGE_SIZE_16KB is not set +# CONFIG_PAGE_SIZE_64KB is not set +CONFIG_ENTRY_OFFSET=0x00001000 +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_SPARSEMEM_STATIC=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_RESOURCES_64BIT is not set +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=0 +CONFIG_NR_QUICK=2 +# CONFIG_UNEVICTABLE_LRU is not set + +# +# Cache configuration +# +# CONFIG_SH_DIRECT_MAPPED is not set +CONFIG_CACHE_WRITEBACK=y +# CONFIG_CACHE_WRITETHROUGH is not set +# CONFIG_CACHE_OFF is not set + +# +# Processor features +# +CONFIG_CPU_LITTLE_ENDIAN=y +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_SH_FPU=y +CONFIG_SH_STORE_QUEUES=y +CONFIG_CPU_HAS_INTEVT=y +CONFIG_CPU_HAS_SR_RB=y +CONFIG_CPU_HAS_PTEA=y +CONFIG_CPU_HAS_FPU=y + +# +# Board support +# +# CONFIG_SH_EDOSK7760 is not set +CONFIG_SH_JCINAP7760=y + +# +# Timer and clock configuration +# +CONFIG_SH_TMU=y +CONFIG_SH_TIMER_IRQ=16 +CONFIG_SH_PCLK_FREQ=32000000 +CONFIG_TICK_ONESHOT=y +# CONFIG_NO_HZ is not set +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y + +# +# CPU Frequency scaling +# +# CONFIG_CPU_FREQ is not set + +# +# DMA support +# +CONFIG_SH_DMA_API=y +CONFIG_SH_DMA=y +CONFIG_NR_ONCHIP_DMA_CHANNELS=4 +# CONFIG_NR_DMA_CHANNELS_BOOL is not set +CONFIG_SH_DMABRG=y + +# +# Companion Chips +# + +# +# Additional SuperH Device Drivers +# +# CONFIG_HEARTBEAT is not set +# CONFIG_PUSH_SWITCH is not set + +# +# Kernel features +# +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +CONFIG_SCHED_HRTICK=y +# CONFIG_SECCOMP is not set +# CONFIG_PREEMPT_NONE is not set +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREEMPT=y +# CONFIG_PREEMPT_RCU is not set +CONFIG_GUSA=y +# CONFIG_GUSA_RB is not set + +# +# Boot options +# +CONFIG_ZERO_PAGE_OFFSET=0x00001000 +CONFIG_BOOT_LINK_OFFSET=0x00800000 +# CONFIG_UBC_WAKEUP is not set +# CONFIG_CMDLINE_BOOL is not set + +# +# Bus options +# +# CONFIG_ARCH_SUPPORTS_MSI is not set +# CONFIG_PCCARD is not set + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +# CONFIG_HAVE_AOUT is not set +# CONFIG_BINFMT_MISC is not set +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_NET_KEY is not set +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +CONFIG_INET_TUNNEL=y +CONFIG_INET_XFRM_MODE_TRANSPORT=y +CONFIG_INET_XFRM_MODE_TUNNEL=y +CONFIG_INET_XFRM_MODE_BEET=y +# CONFIG_INET_LRO is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +CONFIG_IPV6=y +# CONFIG_IPV6_PRIVACY is not set +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_INET6_AH is not set +# CONFIG_INET6_ESP is not set +# CONFIG_INET6_IPCOMP is not set +# CONFIG_INET6_XFRM_TUNNEL is not set +# CONFIG_INET6_TUNNEL is not set +CONFIG_INET6_XFRM_MODE_TRANSPORT=y +CONFIG_INET6_XFRM_MODE_TUNNEL=y +CONFIG_INET6_XFRM_MODE_BEET=y +CONFIG_IPV6_SIT=y +CONFIG_IPV6_NDISC_NODETYPE=y +# CONFIG_IPV6_TUNNEL is not set +# CONFIG_NETWORK_SECMARK is not set +# CONFIG_NETFILTER is not set +# CONFIG_ATM is not set +# CONFIG_BRIDGE is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +# CONFIG_IRDA is not set +# CONFIG_BT is not set +# CONFIG_PHONET is not set +# CONFIG_WIRELESS is not set +# CONFIG_RFKILL is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_STANDALONE=y +# CONFIG_PREVENT_FIRMWARE_BUILD is not set +# CONFIG_FW_LOADER is not set +CONFIG_DEBUG_DRIVER=y +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_SYS_HYPERVISOR is not set +# CONFIG_CONNECTOR is not set +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_CONCAT=y +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_GEOMETRY=y +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +CONFIG_MTD_CFI_I4=y +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_OTP is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_CFI_STAA is not set +CONFIG_MTD_CFI_UTIL=y +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_PHYSMAP_START=0x0 +CONFIG_MTD_PHYSMAP_LEN=0x0 +CONFIG_MTD_PHYSMAP_BANKWIDTH=4 +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +# CONFIG_MTD_NAND is not set +# CONFIG_MTD_ONENAND is not set + +# +# UBI - Unsorted block images +# +# CONFIG_MTD_UBI is not set +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_CRYPTOLOOP is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_UB is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=4096 +# CONFIG_BLK_DEV_XIP is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_MISC_DEVICES is not set +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=y +CONFIG_BLK_DEV_SR_VENDOR=y +# CONFIG_CHR_DEV_SG is not set +# CONFIG_CHR_DEV_SCH is not set + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SRP_ATTRS is not set +# CONFIG_SCSI_LOWLEVEL is not set +# CONFIG_SCSI_DH is not set +# CONFIG_ATA is not set +# CONFIG_MD is not set +CONFIG_NETDEVICES=y +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_VETH is not set +CONFIG_PHYLIB=y + +# +# MII PHY device drivers +# +# CONFIG_MARVELL_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_VITESSE_PHY is not set +CONFIG_SMSC_PHY=y +# CONFIG_BROADCOM_PHY is not set +# CONFIG_ICPLUS_PHY is not set +# CONFIG_REALTEK_PHY is not set +# CONFIG_FIXED_PHY is not set +# CONFIG_MDIO_BITBANG is not set +CONFIG_NET_ETHERNET=y +CONFIG_MII=y +# CONFIG_AX88796 is not set +# CONFIG_STNIC is not set +CONFIG_SMC91X=y +# CONFIG_SMC911X is not set +# CONFIG_IBM_NEW_EMAC_ZMII is not set +# CONFIG_IBM_NEW_EMAC_RGMII is not set +# CONFIG_IBM_NEW_EMAC_TAH is not set +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set +# CONFIG_B44 is not set +# CONFIG_NETDEV_1000 is not set +# CONFIG_NETDEV_10000 is not set + +# +# Wireless LAN +# +# CONFIG_WLAN_PRE80211 is not set +# CONFIG_WLAN_80211 is not set +# CONFIG_IWLWIFI_LEDS is not set + +# +# USB Network Adapters +# +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_USBNET is not set +# CONFIG_WAN is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_ISDN is not set +# CONFIG_PHONE is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_POLLDEV is not set + +# +# Userland interfaces +# +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ADS7846=y +# CONFIG_TOUCHSCREEN_FUJITSU is not set +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_INEXIO is not set +# CONFIG_TOUCHSCREEN_MK712 is not set +# CONFIG_TOUCHSCREEN_PENMOUNT is not set +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set +# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set +# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set +# CONFIG_INPUT_MISC is not set + +# +# Hardware I/O ports +# +# CONFIG_SERIO is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +# CONFIG_VT is not set +CONFIG_DEVKMEM=y +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=2 +CONFIG_SERIAL_8250_RUNTIME_UARTS=2 +# CONFIG_SERIAL_8250_EXTENDED is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_SH_SCI is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +# CONFIG_LEGACY_PTYS is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_R3964 is not set +# CONFIG_RAW_DRIVER is not set +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_HELPER_AUTO=y + +# +# I2C Hardware Bus support +# + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +CONFIG_I2C_SH7760=y +# CONFIG_I2C_SH_MOBILE is not set +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_PCA_PLATFORM is not set + +# +# Miscellaneous I2C Chip support +# +# CONFIG_PCF8575 is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y + +# +# SPI Master Controller Drivers +# +CONFIG_SPI_BITBANG=y +CONFIG_SPI_HSPI=y +# CONFIG_SPI_SH_SCI is not set + +# +# SPI Protocol Masters +# +# CONFIG_SPI_AT25 is not set +# CONFIG_SPI_TLE62X0 is not set +# CONFIG_W1 is not set +# CONFIG_POWER_SUPPLY is not set +# CONFIG_HWMON is not set +# CONFIG_THERMAL is not set +CONFIG_THERMAL_HWMON=y +# CONFIG_WATCHDOG is not set +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +# CONFIG_SSB is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_MFD_TMIO is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_REGULATOR is not set + +# +# Multimedia devices +# + +# +# Multimedia core support +# +# CONFIG_VIDEO_DEV is not set +# CONFIG_DVB_CORE is not set +# CONFIG_VIDEO_MEDIA is not set + +# +# Multimedia drivers +# +# CONFIG_DAB is not set + +# +# Graphics support +# +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_OUTPUT_CONTROL is not set +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_SH_MOBILE_LCDC is not set +CONFIG_FB_SH7760=y +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set +CONFIG_BACKLIGHT_LCD_SUPPORT=y +# CONFIG_LCD_CLASS_DEVICE is not set +# CONFIG_BACKLIGHT_CLASS_DEVICE is not set + +# +# Display device support +# +# CONFIG_DISPLAY_SUPPORT is not set +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +CONFIG_LOGO_LINUX_CLUT224=y +# CONFIG_LOGO_SUPERH_MONO is not set +# CONFIG_LOGO_SUPERH_VGA16 is not set +CONFIG_LOGO_SUPERH_CLUT224=y +# CONFIG_SOUND is not set +# CONFIG_HID_SUPPORT is not set +CONFIG_USB_SUPPORT=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +# CONFIG_USB_ARCH_HAS_EHCI is not set +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set +# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DEVICE_CLASS=y +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +CONFIG_USB_MON=y +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +CONFIG_USB_OHCI_HCD=y +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=y +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_WDM is not set +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; +# + +# +# see USB_STORAGE Help for more information +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_LIBUSUAL is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB port drivers +# +CONFIG_USB_SERIAL=y +# CONFIG_USB_SERIAL_CONSOLE is not set +# CONFIG_USB_EZUSB is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_AIRCABLE is not set +# CONFIG_USB_SERIAL_ARK3116 is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_CH341 is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_CP2101 is not set +# CONFIG_USB_SERIAL_CYPRESS_M8 is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_FUNSOFT is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_EDGEPORT_TI is not set +# CONFIG_USB_SERIAL_GARMIN is not set +# CONFIG_USB_SERIAL_IPW is not set +# CONFIG_USB_SERIAL_IUU is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_KOBIL_SCT is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_MOS7720 is not set +# CONFIG_USB_SERIAL_MOS7840 is not set +# CONFIG_USB_SERIAL_MOTOROLA is not set +# CONFIG_USB_SERIAL_NAVMAN is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_OTI6858 is not set +# CONFIG_USB_SERIAL_SPCP8X5 is not set +# CONFIG_USB_SERIAL_HP4X is not set +# CONFIG_USB_SERIAL_SAFE is not set +# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set +# CONFIG_USB_SERIAL_TI is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OPTION is not set +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_SERIAL_DEBUG is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_BERRY_CHARGE is not set +# CONFIG_USB_LED is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_PHIDGET is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_VST is not set +# CONFIG_USB_GADGET is not set +# CONFIG_MMC is not set +# CONFIG_MEMSTICK is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y + +# +# LED drivers +# +CONFIG_LEDS_PCA955X=y + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y +# CONFIG_ACCESSIBILITY is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +CONFIG_RTC_DRV_RX8581=y + +# +# SPI RTC drivers +# +# CONFIG_RTC_DRV_M41T94 is not set +# CONFIG_RTC_DRV_DS1305 is not set +# CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_MAX6902 is not set +# CONFIG_RTC_DRV_R9701 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_DS3234 is not set + +# +# Platform RTC drivers +# +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_BQ4802 is not set +# CONFIG_RTC_DRV_V3020 is not set + +# +# on-CPU RTC drivers +# +# CONFIG_RTC_DRV_SH is not set +CONFIG_DMADEVICES=y + +# +# DMA Devices +# +# CONFIG_UIO is not set +# CONFIG_STAGING is not set + +# +# File systems +# +# CONFIG_EXT2_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_EXT4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +CONFIG_FS_POSIX_ACL=y +# CONFIG_FILE_LOCKING is not set +# CONFIG_XFS_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_DNOTIFY is not set +# CONFIG_INOTIFY is not set +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +CONFIG_AUTOFS4_FS=y +CONFIG_FUSE_FS=y + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=y +CONFIG_UDF_NLS=y + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_HUGETLBFS is not set +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_CONFIGFS_FS is not set + +# +# Miscellaneous filesystems +# +# CONFIG_HFSPLUS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RTIME=y +CONFIG_JFFS2_RUBIN=y +# CONFIG_JFFS2_CMODE_NONE is not set +# CONFIG_JFFS2_CMODE_PRIORITY is not set +# CONFIG_JFFS2_CMODE_SIZE is not set +CONFIG_JFFS2_CMODE_FAVOURLZO=y +# CONFIG_CRAMFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_NFS_V3_ACL=y +CONFIG_ROOT_NFS=y +# CONFIG_NFSD is not set +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_NFS_ACL_SUPPORT=y +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +# CONFIG_SMB_FS is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="cp437" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Kernel hacking +# +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_PRINTK_TIME=y +# CONFIG_ENABLE_WARN_DEPRECATED is not set +# CONFIG_ENABLE_MUST_CHECK is not set +CONFIG_FRAME_WARN=1024 +# CONFIG_MAGIC_SYSRQ is not set +CONFIG_UNUSED_SYMBOLS=y +CONFIG_DEBUG_FS=y +# CONFIG_HEADERS_CHECK is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_DETECT_SOFTLOCKUP is not set +# CONFIG_SCHED_DEBUG is not set +# CONFIG_SCHEDSTATS is not set +# CONFIG_TIMER_STATS is not set +CONFIG_DEBUG_OBJECTS=y +# CONFIG_DEBUG_OBJECTS_SELFTEST is not set +# CONFIG_DEBUG_OBJECTS_FREE is not set +# CONFIG_DEBUG_OBJECTS_TIMERS is not set +CONFIG_DEBUG_PREEMPT=y +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_DEBUG_KOBJECT is not set +CONFIG_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_FRAME_POINTER is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_CPU_STALL_DETECTOR is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_FAULT_INJECTION is not set +# CONFIG_LATENCYTOP is not set +CONFIG_HAVE_FUNCTION_TRACER=y + +# +# Tracers +# +# CONFIG_FUNCTION_TRACER is not set +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_PREEMPT_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_CONTEXT_SWITCH_TRACER is not set +# CONFIG_BOOT_TRACER is not set +# CONFIG_STACK_TRACER is not set +CONFIG_DYNAMIC_PRINTK_DEBUG=y +# CONFIG_SAMPLES is not set +# CONFIG_SH_STANDARD_BIOS is not set +# CONFIG_EARLY_SCIF_CONSOLE is not set +# CONFIG_DEBUG_BOOTMEM is not set +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_4KSTACKS is not set +# CONFIG_IRQSTACKS is not set +# CONFIG_SH_KGDB is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set +# CONFIG_SECURITY_FILE_CAPABILITIES is not set +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +# CONFIG_CRYPTO_FIPS is not set +# CONFIG_CRYPTO_MANAGER is not set +# CONFIG_CRYPTO_MANAGER2 is not set +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_AUTHENC is not set + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_SEQIV is not set + +# +# Block modes +# +# CONFIG_CRYPTO_CBC is not set +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +# CONFIG_CRYPTO_ECB is not set +# CONFIG_CRYPTO_PCBC is not set + +# +# Hash modes +# +# CONFIG_CRYPTO_HMAC is not set + +# +# Digest +# +# CONFIG_CRYPTO_CRC32C is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_RMD256 is not set +# CONFIG_CRYPTO_RMD320 is not set +# CONFIG_CRYPTO_SHA1 is not set +# CONFIG_CRYPTO_SHA256 is not set +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_WP512 is not set + +# +# Ciphers +# +# CONFIG_CRYPTO_AES is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_ARC4 is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_TWOFISH is not set + +# +# Compression +# +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_LZO is not set + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +# CONFIG_CRYPTO_HW is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +# CONFIG_CRC_CCITT is not set +# CONFIG_CRC16 is not set +# CONFIG_CRC_T10DIF is not set +CONFIG_CRC_ITU_T=y +CONFIG_CRC32=y +# CONFIG_CRC7 is not set +CONFIG_LIBCRC32C=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_PLIST=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y diff -ruN linux-2.6.28.2-orig/arch/sh/include/asm/serial.h linux-2.6.28.2/arch/sh/include/asm/serial.h --- linux-2.6.28.2-orig/arch/sh/include/asm/serial.h 2009-01-24 18:42:07.000000000 -0600 +++ linux-2.6.28.2/arch/sh/include/asm/serial.h 2009-05-02 09:52:58.000000000 -0500 @@ -7,6 +7,10 @@ #ifndef _ASM_SERIAL_H #define _ASM_SERIAL_H +#ifdef CONFIG_SH_JCINAP7760 +/* This is the crystal frequency of the Cobra board's DUART */ +#define BASE_BAUD ( 3686400 / 16 ) +#else /* * This assumes you have a 1.8432 MHz clock for your UART. * @@ -15,5 +19,6 @@ * megabits/second; but this requires the faster clock. */ #define BASE_BAUD ( 1843200 / 16 ) +#endif #endif /* _ASM_SERIAL_H */ diff -ruN linux-2.6.28.2-orig/arch/sh/Kconfig linux-2.6.28.2/arch/sh/Kconfig --- linux-2.6.28.2-orig/arch/sh/Kconfig 2009-01-24 18:42:07.000000000 -0600 +++ linux-2.6.28.2/arch/sh/Kconfig 2009-05-02 09:52:58.000000000 -0500 @@ -299,6 +299,7 @@ config CPU_SUBTYPE_SH7760 bool "Support SH7760 processor" select CPU_SH4 +# select ARCH_REQUIRE_GPIOLIB config CPU_SUBTYPE_SH4_202 bool "Support SH4-202 processor" diff -ruN linux-2.6.28.2-orig/arch/sh/kernel/cpu/sh4/softfloat.c linux-2.6.28.2/arch/sh/kernel/cpu/sh4/softfloat.c --- linux-2.6.28.2-orig/arch/sh/kernel/cpu/sh4/softfloat.c 2009-01-24 18:42:07.000000000 -0600 +++ linux-2.6.28.2/arch/sh/kernel/cpu/sh4/softfloat.c 2009-05-02 09:52:58.000000000 -0500 @@ -652,27 +652,6 @@ *z0Ptr = a0 - b0 - (a1 < b1); } -static bits64 estimateDiv128To64(bits64 a0, bits64 a1, bits64 b) -{ - bits64 b0, b1; - bits64 rem0, rem1, term0, term1; - bits64 z; - if (b <= a0) - return LIT64(0xFFFFFFFFFFFFFFFF); - b0 = b >> 32; - z = (b0 << 32 <= a0) ? LIT64(0xFFFFFFFF00000000) : (a0 / b0) << 32; - mul64To128(b, z, &term0, &term1); - sub128(a0, a1, term0, term1, &rem0, &rem1); - while (((sbits64) rem0) < 0) { - z -= LIT64(0x100000000); - b1 = b << 32; - add128(rem0, rem1, b0, b1, &rem0, &rem1); - } - rem0 = (rem0 << 32) | (rem1 >> 32); - z |= (b0 << 32 <= rem0) ? 0xFFFFFFFF : rem0 / b0; - return z; -} - inline void mul64To128(bits64 a, bits64 b, bits64 * z0Ptr, bits64 * z1Ptr) { bits32 aHigh, aLow, bHigh, bLow; @@ -696,6 +675,27 @@ } +static bits64 estimateDiv128To64(bits64 a0, bits64 a1, bits64 b) +{ + bits64 b0, b1; + bits64 rem0, rem1, term0, term1; + bits64 z; + if (b <= a0) + return LIT64(0xFFFFFFFFFFFFFFFF); + b0 = b >> 32; + z = (b0 << 32 <= a0) ? LIT64(0xFFFFFFFF00000000) : (a0 / b0) << 32; + mul64To128(b, z, &term0, &term1); + sub128(a0, a1, term0, term1, &rem0, &rem1); + while (((sbits64) rem0) < 0) { + z -= LIT64(0x100000000); + b1 = b << 32; + add128(rem0, rem1, b0, b1, &rem0, &rem1); + } + rem0 = (rem0 << 32) | (rem1 >> 32); + z |= (b0 << 32 <= rem0) ? 0xFFFFFFFF : rem0 / b0; + return z; +} + static void normalizeFloat32Subnormal(bits32 aSig, int16 * zExpPtr, bits32 * zSigPtr) { diff -ruN linux-2.6.28.2-orig/arch/sh/kernel/Makefile_32 linux-2.6.28.2/arch/sh/kernel/Makefile_32 --- linux-2.6.28.2-orig/arch/sh/kernel/Makefile_32 2009-01-24 18:42:07.000000000 -0600 +++ linux-2.6.28.2/arch/sh/kernel/Makefile_32 2009-05-02 09:52:58.000000000 -0500 @@ -23,6 +23,10 @@ obj-$(CONFIG_STACKTRACE) += stacktrace.o obj-$(CONFIG_IO_TRAPPED) += io_trapped.o obj-$(CONFIG_KPROBES) += kprobes.o + +ifneq ($(CONFIG_SH_JCINAP7760),y) obj-$(CONFIG_GENERIC_GPIO) += gpio.o +endif EXTRA_CFLAGS += -Werror + diff -ruN linux-2.6.28.2-orig/arch/sh/kernel/timers/timer-tmu.c linux-2.6.28.2/arch/sh/kernel/timers/timer-tmu.c --- linux-2.6.28.2-orig/arch/sh/kernel/timers/timer-tmu.c 2009-01-24 18:42:07.000000000 -0600 +++ linux-2.6.28.2/arch/sh/kernel/timers/timer-tmu.c 2009-05-02 09:52:58.000000000 -0500 @@ -146,6 +146,16 @@ _tmu_clear_status(TMU0); _tmu_set_irq(TMU0,tmu0_clockevent.mode != CLOCK_EVT_MODE_ONESHOT); +#ifdef CONFIG_SH_JCINAP7760 +#define PBCR 0xFE400004 +#define PBDR 0xFE400044 +#define PTB5 0x20 + /* Check if the Cobra watchdog bit is set as an output. If not don't toggle the line. */ + if ((ctrl_inw(PBCR) & 0x0C00) == 0x0400) { + ctrl_outb(ctrl_inb(PBDR) ^ PTB5, PBDR); /* Toggle watchdog bit. */ + } +#endif + evt->event_handler(evt); return IRQ_HANDLED; diff -ruN linux-2.6.28.2-orig/arch/sh/tools/mach-types linux-2.6.28.2/arch/sh/tools/mach-types --- linux-2.6.28.2-orig/arch/sh/tools/mach-types 2009-01-24 18:42:07.000000000 -0600 +++ linux-2.6.28.2/arch/sh/tools/mach-types 2009-05-02 09:52:58.000000000 -0500 @@ -30,6 +30,7 @@ SNAPGEAR SH_SECUREEDGE5410 EDOSK7705 SH_EDOSK7705 EDOSK7760 SH_EDOSK7760 +JCINAP7760 SH_JCINAP7760 SH4202_MICRODEV SH_SH4202_MICRODEV SH03 SH_SH03 LANDISK SH_LANDISK diff -ruN linux-2.6.28.2-orig/drivers/input/touchscreen/ads7846.c linux-2.6.28.2/drivers/input/touchscreen/ads7846.c --- linux-2.6.28.2-orig/drivers/input/touchscreen/ads7846.c 2009-01-24 18:42:07.000000000 -0600 +++ linux-2.6.28.2/drivers/input/touchscreen/ads7846.c 2009-05-02 09:52:58.000000000 -0500 @@ -29,7 +29,7 @@ #include #include - +#define VERBOSE 1 /* DLL20090427 */ /* * This code has been heavily tested on a Nokia 770, and lightly * tested on other ads7846 devices (OSK/Mistral, Lubbock). @@ -953,7 +953,7 @@ input_dev->phys = ts->phys; input_dev->dev.parent = &spi->dev; - input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS); + input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS) | BIT_MASK(EV_SYN); input_dev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH); input_set_abs_params(input_dev, ABS_X, pdata->x_min ? : 0, diff -ruN linux-2.6.28.2-orig/drivers/spi/Kconfig linux-2.6.28.2/drivers/spi/Kconfig --- linux-2.6.28.2-orig/drivers/spi/Kconfig 2009-01-24 18:42:07.000000000 -0600 +++ linux-2.6.28.2/drivers/spi/Kconfig 2009-05-02 09:52:58.000000000 -0500 @@ -100,6 +100,14 @@ inexpensive battery powered microcontroller evaluation board. This same cable can be used to flash new firmware. +config SPI_HSPI + tristate "SuperH on-chip HSPI controller" + depends on SPI_MASTER && SUPERH + select SPI_BITBANG + help + Driver for the Hitachi HSPI controller core found on various + SuperH processors. + config SPI_IMX tristate "Freescale iMX SPI controller" depends on ARCH_IMX && EXPERIMENTAL diff -ruN linux-2.6.28.2-orig/drivers/spi/Makefile linux-2.6.28.2/drivers/spi/Makefile --- linux-2.6.28.2-orig/drivers/spi/Makefile 2009-01-24 18:42:07.000000000 -0600 +++ linux-2.6.28.2/drivers/spi/Makefile 2009-05-02 09:52:58.000000000 -0500 @@ -29,6 +29,7 @@ obj-$(CONFIG_SPI_TXX9) += spi_txx9.o obj-$(CONFIG_SPI_XILINX) += xilinx_spi.o obj-$(CONFIG_SPI_SH_SCI) += spi_sh_sci.o +obj-$(CONFIG_SPI_HSPI) += spi_hspi.o # ... add above this line ... # SPI protocol drivers (device/link on bus) diff -ruN linux-2.6.28.2-orig/drivers/spi/spi_hspi.c linux-2.6.28.2/drivers/spi/spi_hspi.c --- linux-2.6.28.2-orig/drivers/spi/spi_hspi.c 1969-12-31 18:00:00.000000000 -0600 +++ linux-2.6.28.2/drivers/spi/spi_hspi.c 2009-05-02 09:52:58.000000000 -0500 @@ -0,0 +1,434 @@ +/* + * SuperH on-chip SPI (HSPI) controller driver. + * + * (c) 2008 Manuel Lauss roarinelk.homelinux.net> + * + * largely based on spi_s3c24xx. + * + * This program is licensed under the terms outlined in the file COPYING + * in the root of this archive. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#define SPCR 0x00 /* control */ +#define SPSR 0x04 /* status */ +#define SPSCR 0x08 /* sys control */ +#define SPTBR 0x0c /* tx fifo port */ +#define SPRBR 0x10 /* rx fifo port */ + +#define SPCR_FBS (1 << 7) /* CPHA */ +#define SPCR_CLKP (1 << 6) /* CPOL */ +#define SPCR_IDIV (1 << 5) /* clock prescaler: 4, 32*/ +#define SPCR_CLKMASK 0x1f + +#define SPSR_TXFU (1 << 10) /* tx fifo full */ +#define SPSR_TXHA (1 << 9) /* tx fifo half */ +#define SPSR_TXEM (1 << 8) /* tx fifo empty */ +#define SPSR_RXFU (1 << 7) /* rx fifo full */ +#define SPSR_RXHA (1 << 6) /* rx fifo half */ +#define SPSR_RXEM (1 << 5) /* rx fifo empty */ +#define SPSR_RXOO (1 << 4) /* rx overrun */ +#define SPSR_RXOW (1 << 3) /* rx overrun warning */ +#define SPSR_RXFL (1 << 2) /* new rx byte */ +#define SPSR_TXFN (1 << 1) /* tx complete */ +#define SPSR_TXFL (1 << 0) /* tx buffer not empty */ + +#define SPSCR_TEIE (1 << 13) /* tx fifo empty */ +#define SPSCR_THIE (1 << 12) /* tx fifo half full */ +#define SPSCR_RNIE (1 << 11) /* rx fifo not-empty */ +#define SPSCR_RHIE (1 << 10) /* rx fifo half full */ +#define SPSCR_RFIE (1 << 9) /* rx fifo full */ +#define SPSCR_FFEN (1 << 8) /* fifo enable */ +#define SPSCR_LMSB (1 << 7) /* MSB/LSB first */ +#define SPSCR_CSV (1 << 6) /* CS pin polarity */ +#define SPSCR_CSA (1 << 5) /* auto CS control enable */ +#define SPSCR_TFIE (1 << 4) /* 1-byte-tx'ed int */ +#define SPSCR_ROIE (1 << 3) /* rx overflow ints */ +#define SPSCR_RXDE (1 << 2) /* rx dma enable */ +#define SPSCR_TXDE (1 << 1) /* tx dma enable */ +#define SPSCR_MASL (1 << 0) /* master(1) / slave(0) select */ + +#define SPSCR_IMASK (SPSCR_TEIE | SPSCR_THIE | SPSCR_RNIE | SPSCR_RHIE | \ + SPSCR_RFIE | SPSCR_TFIE | SPSCR_ROIE) + +#define MODEBITS (SPI_CPOL | SPI_CPHA | SPI_CS_HIGH | SPI_LSB_FIRST) + +#define FIFO_SIZE 8 + +struct hspi_priv { + struct spi_bitbang bitbang; + void __iomem *io; + + /* data buffers */ + const unsigned char *tx; + unsigned char *rx; + int len; + int count; + + unsigned long spcr; + unsigned long spscr; + + struct completion done; + + int irq; + + struct device *dev; + struct resource *ioarea; + struct spi_master *master; + struct hspi_platdata *pd; +}; + +static inline void hspi_platcs(struct hspi_priv *priv, int cs, int pol) +{ + if (priv->pd && priv->pd->set_cs) + priv->pd->set_cs(priv->pd, cs, pol); +} + +static inline struct hspi_priv *to_priv(struct spi_device *sdev) +{ + return spi_master_get_devdata(sdev->master); +} + +static void hspi_chipsel(struct spi_device *spi, int value) +{ + struct hspi_priv *priv = to_priv(spi); + unsigned int cspol = spi->mode & SPI_CS_HIGH ? 1 : 0; + + if (cspol) + priv->spscr |= SPSCR_CSV; + else + priv->spscr &= ~SPSCR_CSV; + + switch (value) { + case BITBANG_CS_INACTIVE: + if (cspol^1) + priv->spscr |= SPSCR_CSV; + else + priv->spscr &= ~SPSCR_CSV; + + hspi_platcs(priv, spi->chip_select, cspol^1); + break; + + case BITBANG_CS_ACTIVE: + if (spi->mode & SPI_CPHA) + priv->spcr |= SPCR_FBS; + else + priv->spcr &= ~SPCR_FBS; + + if (spi->mode & SPI_CPOL) + priv->spcr |= SPCR_CLKP; + else + priv->spcr &= ~SPCR_CLKP; + + if (spi->mode & SPI_LSB_FIRST) + priv->spscr |= SPSCR_LMSB; + else + priv->spscr &= ~SPSCR_LMSB; + + hspi_platcs(priv, spi->chip_select, cspol); + + if (cspol) + priv->spscr |= SPSCR_CSV; + else + priv->spscr &= ~SPSCR_CSV; + + break; + } + priv->spscr |= SPSCR_CSA; /* DLL20090419 */ + iowrite32(priv->spcr, priv->io + SPCR); + iowrite32(priv->spscr, priv->io + SPSCR); +} + +static int hspi_setupxfer(struct spi_device *spi, struct spi_transfer *t) +{ + struct hspi_priv *priv = to_priv(spi); + struct clk *clk; + unsigned int bpw, hz, div; + + bpw = t ? t->bits_per_word : spi->bits_per_word; + hz = t ? t->speed_hz : spi->max_speed_hz; + + if (bpw != 8) { + dev_err(&spi->dev, "invalid bits-per-word (%d)\n", bpw); + return -EINVAL; + } + + clk = clk_get(NULL, "module_clk"); + if (!clk) + return -EINVAL; + + /* HSPI peripheral clock is module_clk divided by 4 or 32; + * SPI bus clock is HSPI clock prescaled by 2..64. + * spiclk = (module_clk / 4) / (2 .. 64) or + * spiclk = (module_clk / 32) / (2 .. 64) + */ + div = (clk->rate / 4) / hz; + priv->spcr &= ~(SPCR_IDIV | SPCR_CLKMASK); + + if (div < 2) + div = 2; + if (div > 512) + div = 512; /* hmm, maybe warn? */ + + if (div >= 64) { + priv->spcr |= SPCR_IDIV; /* pclk/32 instead of 4 */ + div /= 8; + } + + priv->spcr |= ((div >> 1) - 1) & SPCR_CLKMASK; + + dev_dbg(&spi->dev, "mclk %lu hz %d spcr %08lux\n", clk->rate, hz, + priv->spcr); + + clk_put(clk); + + iowrite32(priv->spcr, priv->io + SPCR); + + spin_lock(&priv->bitbang.lock); + if (!priv->bitbang.busy) { + priv->bitbang.chipselect(spi, BITBANG_CS_INACTIVE); + /* need to ndelay for 0.5 clocktick ? */ + } + spin_unlock(&priv->bitbang.lock); + + return 0; +} + +static int hspi_setup(struct spi_device *spi) +{ + if (!spi->bits_per_word) + spi->bits_per_word = 8; + + if (spi->mode & ~MODEBITS) { + dev_dbg(&spi->dev, "setup: unsupported mode bits %x\n", + spi->mode & ~MODEBITS); + return -EINVAL; + } + + return hspi_setupxfer(spi, NULL); +} + +static inline unsigned int priv_txbyte(struct hspi_priv *priv, int count) +{ + return priv->tx ? priv->tx[count] : 0; +} + +static int hspi_txrx(struct spi_device *spi, struct spi_transfer *t) +{ + struct hspi_priv *priv = to_priv(spi); + + priv->tx = t->tx_buf; + priv->rx = t->rx_buf; + priv->len = t->len; + priv->count = 0; + + /* master mode, FIFO enabled + some interesting IRQs */ + priv->spscr |= SPSCR_FFEN | SPSCR_RNIE | SPSCR_ROIE | SPSCR_MASL; + iowrite32(priv->spscr, priv->io + SPSCR); + + /* change the SPCR register contents to trigger a FIFO reset */ + iowrite32(priv->spcr & ~SPCR_CLKMASK, priv->io + SPCR); + iowrite32(priv->spcr, priv->io + SPCR); + + init_completion(&priv->done); + + /* write first byte in TX fifo */ + iowrite32(priv_txbyte(priv, priv->count), priv->io + SPTBR); + + wait_for_completion(&priv->done); + + priv->spscr = SPSCR_FFEN | SPSCR_CSA | SPSCR_MASL; /* Was set to zero - DLL20090419 */ + iowrite32(priv->spscr, priv->io + SPSCR); + + return priv->count; +} + +static irqreturn_t hspi_master_irq(int irq, void *data) +{ + struct hspi_priv *priv = data; + unsigned long spsr = ioread32(priv->io + SPSR); + unsigned int count = priv->count; + unsigned char bucket; + + dev_dbg(priv->dev, "spsr %08lux len %d count %d\n", spsr, + priv->len, priv->count); + + if (spsr & SPSR_RXOO) { + dev_dbg(priv->dev, "RX overrun\n"); + goto out; + } + + if (spsr & SPSR_RXOW) + dev_dbg(priv->dev, "RX overrun warning!!\n"); + + /* then it's RNIE: RX fifo not empty */ + priv->count++; + if (priv->rx) + priv->rx[count] = ioread32(priv->io + SPRBR); + else + bucket = ioread32(priv->io + SPRBR); /* Just eat the value */ + + count++; + if (count < priv->len) + iowrite32(priv_txbyte(priv, count), priv->io + SPTBR); + else { +out: + priv->spscr &= ~SPSCR_IMASK; + iowrite32(priv->spscr, priv->io + SPSCR); + complete(&priv->done); + } + + iowrite32(0, priv->io + SPSR); /* ack RXOs */ + return IRQ_HANDLED; +} + +static int __devinit hspi_probe(struct platform_device *pdev) +{ + struct hspi_priv *priv; + struct resource *r; + struct spi_master *master; + int ret; + + r = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!r) { + dev_err(&pdev->dev, "No MMIO\n"); + ret = -ENODEV; + goto out0; + } + + master = spi_alloc_master(&pdev->dev, sizeof(struct hspi_priv)); + if (!master) { + dev_err(&pdev->dev, "No memory for spi_master\n"); + ret = -ENOMEM; + goto out0; + } + + priv = spi_master_get_devdata(master); + memset(priv, 0, sizeof(struct hspi_priv)); + + priv->master = master; + priv->dev = &pdev->dev; + priv->pd = pdev->dev.platform_data; + + priv->irq = platform_get_irq(pdev, 0); + if (priv->irq < 0) { + dev_err(&pdev->dev, "No IRQ\n"); + ret = -ENODEV; + goto out1; + } + + priv->ioarea = request_mem_region(r->start, r->end - r->start, + pdev->name); + if (!priv->ioarea) { + dev_err(&pdev->dev, "MMIO alread in use\n"); + ret = -EBUSY; + goto out1; + } + + priv->io = ioremap(r->start, r->end - r->start + 1); + if (!priv->io) { + dev_err(&pdev->dev, "cannot ioremap mmio\n"); + ret = -EBUSY; + goto out2; + } + + iowrite32(0, priv->io + SPCR); + iowrite32(SPSCR_CSA, priv->io + SPSCR); /* Was set to zero - DLL20090419 */ + iowrite32(0, priv->io + SPSR); + + ret = request_irq(priv->irq, hspi_master_irq, 0, pdev->name, priv); + if (ret) { + dev_err(&pdev->dev, "cannot grab IRQ\n"); + goto out3; + } + + master->num_chipselect = priv->pd ? priv->pd->num_cs : 1; + master->bus_num = pdev->id; + master->setup = hspi_setup; + + priv->bitbang.master = master; + priv->bitbang.setup_transfer = hspi_setupxfer; + priv->bitbang.chipselect = hspi_chipsel; + priv->bitbang.txrx_bufs = hspi_txrx; + + ret = spi_bitbang_start(&priv->bitbang); + if (ret) { + dev_err(&pdev->dev, "Failed to register SPI master\n"); + goto out4; + } + + platform_set_drvdata(pdev, priv); + + return 0; + +out4: + free_irq(priv->irq, priv); +out3: + iounmap(priv->io); +out2: + release_resource(priv->ioarea); + kfree(priv->ioarea); +out1: + spi_master_put(priv->master); +out0: + return ret; +} + +static int __devexit hspi_remove(struct platform_device *pdev) +{ + struct hspi_priv *priv = platform_get_drvdata(pdev); + + spi_bitbang_stop(&priv->bitbang); + iowrite32(0, priv->io + SPCR); + iowrite32(0, priv->io + SPSCR); + iowrite32(0, priv->io + SPSR); + free_irq(priv->irq, priv); + iounmap(priv->io); + release_resource(priv->ioarea); + kfree(priv->ioarea); + spi_master_put(priv->master); + platform_set_drvdata(pdev, NULL); + + return 0; +} + +static struct platform_driver hspi_driver = { + .driver = { + .name = "spi_hspi", + .owner = THIS_MODULE, + }, + .probe = hspi_probe, + .remove = hspi_remove, +}; + +static int __init hspi_init(void) +{ + return platform_driver_register(&hspi_driver); +} + +static void __exit hspi_exit(void) +{ + platform_driver_unregister(&hspi_driver); +} + +module_init(hspi_init); +module_exit(hspi_exit); + +MODULE_AUTHOR("Manuel Lauss"); +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("SuperH on-chip SPI (HSPI) Controller driver"); +MODULE_ALIAS("platform:spi_hspi"); diff -ruN linux-2.6.28.2-orig/drivers/usb/host/ohci-hcd.c linux-2.6.28.2/drivers/usb/host/ohci-hcd.c --- linux-2.6.28.2-orig/drivers/usb/host/ohci-hcd.c 2009-01-24 18:42:07.000000000 -0600 +++ linux-2.6.28.2/drivers/usb/host/ohci-hcd.c 2009-05-02 09:52:58.000000000 -0500 @@ -1049,6 +1049,7 @@ #if defined(CONFIG_CPU_SUBTYPE_SH7720) || \ defined(CONFIG_CPU_SUBTYPE_SH7721) || \ + defined(CONFIG_CPU_SUBTYPE_SH7760) || \ defined(CONFIG_CPU_SUBTYPE_SH7763) #include "ohci-sh.c" #define PLATFORM_DRIVER ohci_hcd_sh_driver diff -ruN linux-2.6.28.2-orig/drivers/usb/host/ohci-sh.c linux-2.6.28.2/drivers/usb/host/ohci-sh.c --- linux-2.6.28.2-orig/drivers/usb/host/ohci-sh.c 2009-01-24 18:42:07.000000000 -0600 +++ linux-2.6.28.2/drivers/usb/host/ohci-sh.c 2009-05-02 09:52:58.000000000 -0500 @@ -26,6 +26,11 @@ { struct ohci_hcd *ohci = hcd_to_ohci(hcd); +#ifdef CONFIG_CPU_SUBTYPE_SH7760 + dma_declare_coherent_memory(hcd->self.controller, (dma_addr_t)0xfe341000, + (dma_addr_t)0x0, 0x2000, DMA_MEMORY_MAP | DMA_MEMORY_EXCLUSIVE); +#endif + ohci_hcd_init(ohci); ohci_init(ohci); ohci_run(ohci); @@ -42,8 +47,11 @@ * generic hardware linkage */ .irq = ohci_irq, +#ifndef CONFIG_CPU_SUBTYPE_SH7760 .flags = HCD_USB11 | HCD_MEMORY, - +#else + .flags = HCD_USB11 | HCD_MEMORY | HCD_LOCAL_MEM, +#endif /* * basic lifecycle operations */ diff -ruN linux-2.6.28.2-orig/drivers/usb/Kconfig linux-2.6.28.2/drivers/usb/Kconfig --- linux-2.6.28.2-orig/drivers/usb/Kconfig 2009-01-24 18:42:07.000000000 -0600 +++ linux-2.6.28.2/drivers/usb/Kconfig 2009-05-02 09:52:58.000000000 -0500 @@ -46,6 +46,7 @@ # SH: default y if CPU_SUBTYPE_SH7720 default y if CPU_SUBTYPE_SH7721 + default y if CPU_SUBTYPE_SH7760 default y if CPU_SUBTYPE_SH7763 # more: default PCI diff -ruN linux-2.6.28.2-orig/drivers/video/sh7760fb.c linux-2.6.28.2/drivers/video/sh7760fb.c --- linux-2.6.28.2-orig/drivers/video/sh7760fb.c 2009-01-24 18:42:07.000000000 -0600 +++ linux-2.6.28.2/drivers/video/sh7760fb.c 2009-05-02 16:04:11.000000000 -0500 @@ -148,12 +148,16 @@ } while (l && (s < 256)) { +#ifdef CONFIG_SH_JCINAP7760 + /* The JCI NAP platform (used by CCS) has weird wiring at the LCD panel. */ + col = (((*r >> 8) >> 3) & 0x18) | (((*g >> 8) << 5) & 0x1c00) | ((*b >> 8) & 0xe0); +#else col = ((*r) & 0xff) << 16; col |= ((*g) & 0xff) << 8; col |= ((*b) & 0xff); +#endif col &= SH7760FB_PALETTE_MASK; iowrite32(col, par->base + LDPR(s)); - if (s < 16) ((u32 *) (info->pseudo_palette))[s] = s; @@ -487,6 +491,24 @@ return 0; } +#ifdef CONFIG_SH_JCINAP7760 +/* + * This routine takes an 8 bit color channel value and transforms it + * to match the color that will electronically result at the LCCS 1.0 LCD + * panel. In this way the palette's colors will exactly match what you will + * see at the hardware. + */ +inline u16 adjust_for_NAP_palette_wiring(u16 color, int using_3_bits) +{ + u16 adj_color = color; + if (color & 0x80) + adj_color |= (using_3_bits ? 0x0A : 0x2A); + if (color & 0x40) + adj_color |= 0x15; + return adj_color; +} +#endif + static int __devinit sh7760fb_probe(struct platform_device *pdev) { struct fb_info *info; @@ -579,7 +601,32 @@ dev_dbg(info->dev, "Unable to allocate cmap memory\n"); goto out_mem; } - +#ifdef CONFIG_SH_JCINAP7760 + /* We need a special palette tuned to the weird NAP panel wiring. */ + { + int i; + for (i=0; i < info->cmap.len; i++) { + u16 red=0, green=0, blue=0; + /* Isolating 3 bits for Blue */ + blue = i & 0xE0; + /* Isolating 3 bits for green */ + green = i & 0x1C; + green = (green << 3); + /* Isolating 2 bits for red */ + red = i & 0x03; + red = (red << 6); + + blue = adjust_for_NAP_palette_wiring(blue, 1); + green = adjust_for_NAP_palette_wiring(green, 1); + red = adjust_for_NAP_palette_wiring(red, 0); + + /* Final adjustments to Linux's fb palette 16 bit color values. */ + info->cmap.red[i] = red << 8; + info->cmap.green[i] = green << 8; + info->cmap.blue[i] = blue << 8; + } + } +#endif ret = register_framebuffer(info); if (ret < 0) { dev_dbg(info->dev, "cannot register fb!\n"); diff -ruN linux-2.6.28.2-orig/include/asm-sh/spi_hspi.h linux-2.6.28.2/include/asm-sh/spi_hspi.h --- linux-2.6.28.2-orig/include/asm-sh/spi_hspi.h 1969-12-31 18:00:00.000000000 -0600 +++ linux-2.6.28.2/include/asm-sh/spi_hspi.h 2009-05-02 09:52:58.000000000 -0500 @@ -0,0 +1,13 @@ +/* + * platform data for spi_hspi driver. + */ + +#ifndef _SPI_HSPI_H_ +#define _SPI_HSPI_H_ + +struct hspi_platdata { + int num_cs; + void(*set_cs)(struct hspi_platdata *pd, int cs, int pol); +}; + +#endif