Merge master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6

* master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6: (29 commits)
sh: Fixup SH-2 BUG() trap handling.
sh: Use early_param() for earlyprintk parsing.
sh: Fix .empty_zero_page alignment for PAGE_SIZE > 4096.
sh: Fixup .data.page_aligned.
sh: Hook up SH7722 scif ipr interrupts.
sh: Fixup sh_bios() trap handling.
sh: SH-MobileR SH7722 CPU support.
sh: Fixup dma_cache_sync() callers.
sh: Convert remaining remap_area_pages() users to ioremap_page_range().
sh: Fixup kernel_execve() for syscall cleanups.
sh: Fix get_wchan().
sh: BUG() handling through trapa vector.
rtc: rtc-sh: alarm support.
rtc: rtc-sh: fix rtc for out-by-one for the month.
sh: Kill off unused SE7619 I/O ops.
serial: sh-sci: Shut up various sci_rxd_in() gcc4 warnings.
sh: Split out atomic ops logically.
sh: Fix Solution Engine 7619 build.
sh: Trivial build fixes for SH-2 support.
sh: IPR IRQ updates for SH7619/SH7206.
...

+2038 -557
+1 -13
arch/sh/Kconfig
··· 479 479 int "CPU Mode Pin Setting" 480 480 depends on CPU_SUBTYPE_SH7619 || CPU_SUBTYPE_SH7206 481 481 help 482 - MD2 - MD0 Setting. 482 + MD2 - MD0 pin setting. 483 483 484 484 menu "CPU Frequency scaling" 485 485 ··· 579 579 approximately eight kilobytes to the kernel image. 580 580 581 581 source "kernel/Kconfig.preempt" 582 - 583 - config CPU_HAS_SR_RB 584 - bool "CPU has SR.RB" 585 - depends on CPU_SH3 || CPU_SH4 586 - default y 587 - help 588 - This will enable the use of SR.RB register bank usage. Processors 589 - that are lacking this bit must have another method in place for 590 - accomplishing what is taken care of by the banked registers. 591 - 592 - See <file:Documentation/sh/register-banks.txt> for further 593 - information on SR.RB and register banking in the kernel in general. 594 582 595 583 config NODES_SHIFT 596 584 int
+2 -1
arch/sh/Kconfig.debug
··· 31 31 hex "SCIF port for early console" 32 32 depends on EARLY_SCIF_CONSOLE 33 33 default "0xffe00000" if CPU_SUBTYPE_SH7780 34 - default "0xfffe9800" if CPU_SUBTYPE_SH72060 34 + default "0xfffe9800" if CPU_SUBTYPE_SH7206 35 + default "0xf8420000" if CPU_SUBTYPE_SH7619 35 36 default "0xffe80000" if CPU_SH4 36 37 37 38 config EARLY_PRINTK
+5 -2
arch/sh/Makefile
··· 179 179 180 180 all: zImage 181 181 182 - zImage: vmlinux 182 + zImage uImage uImage.srec vmlinux.srec: vmlinux 183 183 $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ 184 184 185 185 compressed: zImage ··· 190 190 CLEAN_FILES += include/asm-sh/machtypes.h 191 191 192 192 define archhelp 193 - @echo ' zImage - Compressed kernel image (arch/sh/boot/zImage)' 193 + @echo '* zImage - Compressed kernel image' 194 + @echo ' vmlinux.srec - Create an ELF S-record' 195 + @echo ' uImage - Create a bootable image for U-Boot' 196 + @echo ' uImage.srec - Create an S-record for U-Boot' 194 197 endef
+2 -2
arch/sh/boards/landisk/irq.c
··· 16 16 */ 17 17 #include <linux/init.h> 18 18 #include <linux/irq.h> 19 - #include <asm/io.h> 20 - #include <asm/irq.h> 19 + #include <linux/interrupt.h> 20 + #include <linux/io.h> 21 21 #include <asm/landisk/iodata_landisk.h> 22 22 23 23 static void enable_landisk_irq(unsigned int irq);
+12 -4
arch/sh/boards/se/7206/irq.c
··· 10 10 #include <linux/irq.h> 11 11 #include <linux/io.h> 12 12 #include <linux/irq.h> 13 + #include <linux/interrupt.h> 13 14 #include <asm/se7206.h> 14 15 15 16 #define INTSTS0 0x31800000 ··· 18 17 #define INTMSK0 0x31800004 19 18 #define INTMSK1 0x31800006 20 19 #define INTSEL 0x31800008 20 + 21 + #define IRQ0_IRQ 64 22 + #define IRQ1_IRQ 65 23 + #define IRQ3_IRQ 67 24 + 25 + #define INTC_IPR01 0xfffe0818 26 + #define INTC_ICR1 0xfffe0802 21 27 22 28 static void disable_se7206_irq(unsigned int irq) 23 29 { ··· 47 39 case IRQ1_IRQ: 48 40 msk0 |= 0x000f; 49 41 break; 50 - case IRQ2_IRQ: 42 + case IRQ3_IRQ: 51 43 msk0 |= 0x0f00; 52 44 msk1 |= 0x00ff; 53 45 break; ··· 78 70 case IRQ1_IRQ: 79 71 msk0 &= ~0x000f; 80 72 break; 81 - case IRQ2_IRQ: 73 + case IRQ3_IRQ: 82 74 msk0 &= ~0x0f00; 83 75 msk1 &= ~0x00ff; 84 76 break; ··· 104 96 case IRQ1_IRQ: 105 97 sts0 &= ~0x000f; 106 98 break; 107 - case IRQ2_IRQ: 99 + case IRQ3_IRQ: 108 100 sts0 &= ~0x0f00; 109 101 sts1 &= ~0x00ff; 110 102 break; ··· 114 106 } 115 107 116 108 static struct irq_chip se7206_irq_chip __read_mostly = { 117 - .name = "SE7206-FPGA-IRQ", 109 + .name = "SE7206-FPGA", 118 110 .mask = disable_se7206_irq, 119 111 .unmask = enable_se7206_irq, 120 112 .mask_ack = disable_se7206_irq,
+1 -1
arch/sh/boards/se/7619/Makefile
··· 2 2 # Makefile for the 7619 SolutionEngine specific parts of the kernel 3 3 # 4 4 5 - obj-y := setup.o io.o 5 + obj-y := setup.o
-102
arch/sh/boards/se/7619/io.c
··· 1 - /* 2 - * 3 - * linux/arch/sh/boards/se/7619/io.c 4 - * 5 - * Copyright (C) 2006 Yoshinori Sato 6 - * 7 - * I/O routine for Hitachi 7619 SolutionEngine. 8 - * 9 - */ 10 - 11 - #include <linux/kernel.h> 12 - #include <linux/types.h> 13 - #include <asm/io.h> 14 - #include <asm/se7619.h> 15 - #include <asm/irq.h> 16 - 17 - /* FIXME: M3A-ZAB7 Compact Flash Slot support */ 18 - 19 - static inline void delay(void) 20 - { 21 - ctrl_inw(0xa0000000); /* Uncached ROM area (P2) */ 22 - } 23 - 24 - #define badio(name,port) \ 25 - printk("bad I/O operation (%s) for port 0x%lx at 0x%08x\n", \ 26 - #name, (port), (__u32) __builtin_return_address(0)) 27 - 28 - unsigned char se7619___inb(unsigned long port) 29 - { 30 - badio(inb, port); 31 - return 0; 32 - } 33 - 34 - unsigned char se7619___inb_p(unsigned long port) 35 - { 36 - badio(inb_p, port); 37 - delay(); 38 - return 0; 39 - } 40 - 41 - unsigned short se7619___inw(unsigned long port) 42 - { 43 - badio(inw, port); 44 - return 0; 45 - } 46 - 47 - unsigned int se7619___inl(unsigned long port) 48 - { 49 - badio(inl, port); 50 - return 0; 51 - } 52 - 53 - void se7619___outb(unsigned char value, unsigned long port) 54 - { 55 - badio(outb, port); 56 - } 57 - 58 - void se7619___outb_p(unsigned char value, unsigned long port) 59 - { 60 - badio(outb_p, port); 61 - delay(); 62 - } 63 - 64 - void se7619___outw(unsigned short value, unsigned long port) 65 - { 66 - badio(outw, port); 67 - } 68 - 69 - void se7619___outl(unsigned int value, unsigned long port) 70 - { 71 - badio(outl, port); 72 - } 73 - 74 - void se7619___insb(unsigned long port, void *addr, unsigned long count) 75 - { 76 - badio(inw, port); 77 - } 78 - 79 - void se7619___insw(unsigned long port, void *addr, unsigned long count) 80 - { 81 - badio(inw, port); 82 - } 83 - 84 - void se7619___insl(unsigned long port, void *addr, unsigned long count) 85 - { 86 - badio(insl, port); 87 - } 88 - 89 - void se7619___outsb(unsigned long port, const void *addr, unsigned long count) 90 - { 91 - badio(insl, port); 92 - } 93 - 94 - void se7619___outsw(unsigned long port, const void *addr, unsigned long count) 95 - { 96 - badio(insl, port); 97 - } 98 - 99 - void se7619___outsl(unsigned long port, const void *addr, unsigned long count) 100 - { 101 - badio(outsw, port); 102 - }
-21
arch/sh/boards/se/7619/setup.c
··· 9 9 #include <linux/init.h> 10 10 #include <linux/platform_device.h> 11 11 #include <asm/io.h> 12 - #include <asm/se7619.h> 13 12 #include <asm/machvec.h> 14 13 15 14 /* ··· 18 19 struct sh_machine_vector mv_se __initmv = { 19 20 .mv_name = "SolutionEngine", 20 21 .mv_nr_irqs = 108, 21 - .mv_inb = se7619___inb, 22 - .mv_inw = se7619___inw, 23 - .mv_inl = se7619___inl, 24 - .mv_outb = se7619___outb, 25 - .mv_outw = se7619___outw, 26 - .mv_outl = se7619___outl, 27 - 28 - .mv_inb_p = se7619___inb_p, 29 - .mv_inw_p = se7619___inw, 30 - .mv_inl_p = se7619___inl, 31 - .mv_outb_p = se7619___outb_p, 32 - .mv_outw_p = se7619___outw, 33 - .mv_outl_p = se7619___outl, 34 - 35 - .mv_insb = se7619___insb, 36 - .mv_insw = se7619___insw, 37 - .mv_insl = se7619___insl, 38 - .mv_outsb = se7619___outsb, 39 - .mv_outsw = se7619___outsw, 40 - .mv_outsl = se7619___outsl, 41 22 }; 42 23 ALIAS_MV(se)
+38 -2
arch/sh/boot/Makefile
··· 8 8 # Copyright (C) 1999 Stuart Menefy 9 9 # 10 10 11 - targets := zImage 11 + MKIMAGE := $(srctree)/scripts/mkuboot.sh 12 + 13 + # 14 + # Assign safe dummy values if these variables are not defined, 15 + # in order to suppress error message. 16 + # 17 + CONFIG_PAGE_OFFSET ?= 0x80000000 18 + CONFIG_MEMORY_START ?= 0x0c000000 19 + CONFIG_BOOT_LINK_OFFSET ?= 0x00800000 20 + CONFIG_ZERO_PAGE_OFFSET ?= 0x00001000 21 + 22 + export CONFIG_PAGE_OFFSET CONFIG_MEMORY_START CONFIG_BOOT_LINK_OFFSET \ 23 + CONFIG_ZERO_PAGE_OFFSET 24 + 25 + targets := zImage vmlinux.srec uImage uImage.srec 12 26 subdir- := compressed 13 27 14 28 $(obj)/zImage: $(obj)/compressed/vmlinux FORCE 15 29 $(call if_changed,objcopy) 16 - @echo 'Kernel: $@ is ready' 30 + @echo ' Kernel: $@ is ready' 17 31 18 32 $(obj)/compressed/vmlinux: FORCE 19 33 $(Q)$(MAKE) $(build)=$(obj)/compressed $@ 20 34 35 + KERNEL_LOAD := $(shell printf "0x%8x" $$[$(CONFIG_PAGE_OFFSET) + \ 36 + $(CONFIG_MEMORY_START) + \ 37 + $(CONFIG_ZERO_PAGE_OFFSET)+0x1000]) 38 + 39 + quiet_cmd_uimage = UIMAGE $@ 40 + cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A sh -O linux -T kernel \ 41 + -C gzip -a $(KERNEL_LOAD) -e $(KERNEL_LOAD) \ 42 + -n 'Linux-$(KERNELRELEASE)' -d $< $@ 43 + 44 + $(obj)/uImage: $(obj)/zImage FORCE 45 + $(call if_changed,uimage) 46 + @echo ' Image $@ is ready' 47 + 48 + OBJCOPYFLAGS_vmlinux.srec := -I binary -O srec 49 + $(obj)/vmlinux.srec: $(obj)/compressed/vmlinux 50 + $(call if_changed,objcopy) 51 + 52 + OBJCOPYFLAGS_uImage.srec := -I binary -O srec 53 + $(obj)/uImage.srec: $(obj)/uImage 54 + $(call if_changed,objcopy) 55 + 56 + clean-files += uImage uImage.srec vmlinux.srec
-6
arch/sh/boot/compressed/Makefile
··· 15 15 16 16 # 17 17 # IMAGE_OFFSET is the load offset of the compression loader 18 - # Assign dummy values if these 2 variables are not defined, 19 - # in order to suppress error message. 20 18 # 21 - CONFIG_PAGE_OFFSET ?= 0x80000000 22 - CONFIG_MEMORY_START ?= 0x0c000000 23 - CONFIG_BOOT_LINK_OFFSET ?= 0x00800000 24 - 25 19 IMAGE_OFFSET := $(shell printf "0x%08x" $$[$(CONFIG_PAGE_OFFSET) + \ 26 20 $(CONFIG_MEMORY_START) + \ 27 21 $(CONFIG_BOOT_LINK_OFFSET)])
+2 -1
arch/sh/boot/compressed/head.S
··· 8 8 .text 9 9 10 10 #include <linux/linkage.h> 11 + #include <asm/page.h> 11 12 12 13 .global startup 13 14 startup: ··· 98 97 decompress_kernel_addr: 99 98 .long decompress_kernel 100 99 kernel_start_addr: 101 - .long _text+0x1000 100 + .long _text+PAGE_SIZE 102 101 103 102 .align 9 104 103 fake_headers_as_bzImage:
+2 -1
arch/sh/boot/compressed/misc.c
··· 13 13 14 14 #include <asm/uaccess.h> 15 15 #include <asm/addrspace.h> 16 + #include <asm/page.h> 16 17 #ifdef CONFIG_SH_STANDARD_BIOS 17 18 #include <asm/sh_bios.h> 18 19 #endif ··· 230 229 void decompress_kernel(void) 231 230 { 232 231 output_data = 0; 233 - output_ptr = P2SEGADDR((unsigned long)&_text+0x1000); 232 + output_ptr = P2SEGADDR((unsigned long)&_text+PAGE_SIZE); 234 233 free_mem_ptr = (unsigned long)&_end; 235 234 free_mem_end_ptr = free_mem_ptr + HEAP_SIZE; 236 235
+54 -31
arch/sh/configs/landisk_defconfig
··· 1 1 # 2 2 # Automatically generated make config: don't edit 3 - # Linux kernel version: 2.6.18 4 - # Tue Oct 3 11:14:13 2006 3 + # Linux kernel version: 2.6.19 4 + # Thu Dec 7 17:13:04 2006 5 5 # 6 6 CONFIG_SUPERH=y 7 7 CONFIG_RWSEM_GENERIC_SPINLOCK=y ··· 10 10 CONFIG_GENERIC_HARDIRQS=y 11 11 CONFIG_GENERIC_IRQ_PROBE=y 12 12 CONFIG_GENERIC_CALIBRATE_DELAY=y 13 + # CONFIG_GENERIC_TIME is not set 14 + CONFIG_STACKTRACE_SUPPORT=y 15 + CONFIG_LOCKDEP_SUPPORT=y 13 16 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 14 17 15 18 # ··· 36 33 # CONFIG_UTS_NS is not set 37 34 # CONFIG_AUDIT is not set 38 35 # CONFIG_IKCONFIG is not set 36 + CONFIG_SYSFS_DEPRECATED=y 39 37 # CONFIG_RELAY is not set 40 38 CONFIG_INITRAMFS_SOURCE="" 41 39 CONFIG_CC_OPTIMIZE_FOR_SIZE=y ··· 118 114 CONFIG_SH_LANDISK=y 119 115 # CONFIG_SH_TITAN is not set 120 116 # CONFIG_SH_SHMIN is not set 117 + # CONFIG_SH_7206_SOLUTION_ENGINE is not set 118 + # CONFIG_SH_7619_SOLUTION_ENGINE is not set 121 119 # CONFIG_SH_UNKNOWN is not set 122 120 123 121 # ··· 131 125 # SH-2 Processor Support 132 126 # 133 127 # CONFIG_CPU_SUBTYPE_SH7604 is not set 128 + # CONFIG_CPU_SUBTYPE_SH7619 is not set 129 + 130 + # 131 + # SH-2A Processor Support 132 + # 133 + # CONFIG_CPU_SUBTYPE_SH7206 is not set 134 134 135 135 # 136 136 # SH-3 Processor Support ··· 172 160 # 173 161 # CONFIG_CPU_SUBTYPE_SH7770 is not set 174 162 # CONFIG_CPU_SUBTYPE_SH7780 is not set 163 + # CONFIG_CPU_SUBTYPE_SH7785 is not set 175 164 176 165 # 177 166 # SH4AL-DSP Processor Support ··· 188 175 CONFIG_MEMORY_START=0x0c000000 189 176 CONFIG_MEMORY_SIZE=0x04000000 190 177 CONFIG_VSYSCALL=y 178 + CONFIG_PAGE_SIZE_4KB=y 179 + # CONFIG_PAGE_SIZE_8KB is not set 180 + # CONFIG_PAGE_SIZE_64KB is not set 191 181 CONFIG_SELECT_MEMORY_MODEL=y 192 182 CONFIG_FLATMEM_MANUAL=y 193 183 # CONFIG_DISCONTIGMEM_MANUAL is not set ··· 212 196 # Processor features 213 197 # 214 198 CONFIG_CPU_LITTLE_ENDIAN=y 199 + # CONFIG_CPU_BIG_ENDIAN is not set 215 200 CONFIG_SH_FPU=y 216 201 # CONFIG_SH_DSP is not set 217 202 # CONFIG_SH_STORE_QUEUES is not set 218 203 CONFIG_CPU_HAS_INTEVT=y 204 + CONFIG_CPU_HAS_IPR_IRQ=y 219 205 CONFIG_CPU_HAS_SR_RB=y 206 + CONFIG_CPU_HAS_PTEA=y 220 207 221 208 # 222 209 # Timer support 223 210 # 224 211 CONFIG_SH_TMU=y 212 + CONFIG_SH_TIMER_IRQ=16 213 + # CONFIG_NO_IDLE_HZ is not set 225 214 CONFIG_SH_PCLK_FREQ=33333333 226 215 227 216 # ··· 237 216 # 238 217 # DMA support 239 218 # 240 - CONFIG_SH_DMA=y 241 - CONFIG_NR_ONCHIP_DMA_CHANNELS=4 242 - # CONFIG_NR_DMA_CHANNELS_BOOL is not set 219 + # CONFIG_SH_DMA is not set 243 220 244 221 # 245 222 # Companion Chips 246 223 # 247 224 # CONFIG_HD6446X_SERIES is not set 248 225 CONFIG_HEARTBEAT=y 226 + 227 + # 228 + # Additional SuperH Device Drivers 229 + # 230 + # CONFIG_PUSH_SWITCH is not set 249 231 250 232 # 251 233 # Kernel features ··· 364 340 # CONFIG_INET_TUNNEL is not set 365 341 CONFIG_INET_XFRM_MODE_TRANSPORT=y 366 342 CONFIG_INET_XFRM_MODE_TUNNEL=y 343 + CONFIG_INET_XFRM_MODE_BEET=y 367 344 CONFIG_INET_DIAG=y 368 345 CONFIG_INET_TCP_DIAG=y 369 346 # CONFIG_TCP_CONG_ADVANCED is not set 370 347 CONFIG_TCP_CONG_CUBIC=y 371 348 CONFIG_DEFAULT_TCP_CONG="cubic" 349 + # CONFIG_TCP_MD5SIG is not set 372 350 373 351 # 374 352 # IP: Virtual Server Configuration ··· 387 361 # Core Netfilter Configuration 388 362 # 389 363 # CONFIG_NETFILTER_NETLINK is not set 364 + # CONFIG_NF_CONNTRACK_ENABLED is not set 390 365 # CONFIG_NETFILTER_XTABLES is not set 391 366 392 367 # 393 368 # IP: Netfilter Configuration 394 369 # 395 - CONFIG_IP_NF_CONNTRACK=m 396 - CONFIG_IP_NF_CT_ACCT=y 397 - CONFIG_IP_NF_CONNTRACK_MARK=y 398 - # CONFIG_IP_NF_CONNTRACK_EVENTS is not set 399 - # CONFIG_IP_NF_CT_PROTO_SCTP is not set 400 - CONFIG_IP_NF_FTP=m 401 - CONFIG_IP_NF_IRC=m 402 - # CONFIG_IP_NF_NETBIOS_NS is not set 403 - CONFIG_IP_NF_TFTP=m 404 - CONFIG_IP_NF_AMANDA=m 405 - # CONFIG_IP_NF_PPTP is not set 406 - # CONFIG_IP_NF_H323 is not set 407 - # CONFIG_IP_NF_SIP is not set 408 370 CONFIG_IP_NF_QUEUE=m 409 371 410 372 # ··· 491 477 # CONFIG_ATA_OVER_ETH is not set 492 478 493 479 # 480 + # Misc devices 481 + # 482 + # CONFIG_SGI_IOC4 is not set 483 + # CONFIG_TIFM_CORE is not set 484 + 485 + # 494 486 # ATA/ATAPI/MFM/RLL support 495 487 # 496 488 CONFIG_IDE=y ··· 539 519 # CONFIG_BLK_DEV_CS5530 is not set 540 520 # CONFIG_BLK_DEV_HPT34X is not set 541 521 # CONFIG_BLK_DEV_HPT366 is not set 522 + # CONFIG_BLK_DEV_JMICRON is not set 542 523 # CONFIG_BLK_DEV_SC1200 is not set 543 524 # CONFIG_BLK_DEV_PIIX is not set 544 525 # CONFIG_BLK_DEV_IT821X is not set ··· 563 542 # 564 543 # CONFIG_RAID_ATTRS is not set 565 544 CONFIG_SCSI=y 545 + # CONFIG_SCSI_TGT is not set 566 546 # CONFIG_SCSI_NETLINK is not set 567 547 CONFIG_SCSI_PROC_FS=y 568 548 ··· 583 561 CONFIG_SCSI_MULTI_LUN=y 584 562 # CONFIG_SCSI_CONSTANTS is not set 585 563 # CONFIG_SCSI_LOGGING is not set 564 + # CONFIG_SCSI_SCAN_ASYNC is not set 586 565 587 566 # 588 567 # SCSI Transports ··· 625 602 # CONFIG_SCSI_NCR53C406A is not set 626 603 # CONFIG_SCSI_STEX is not set 627 604 # CONFIG_SCSI_SYM53C8XX_2 is not set 628 - # CONFIG_SCSI_IPR is not set 629 605 # CONFIG_SCSI_PAS16 is not set 630 606 # CONFIG_SCSI_PSI240I is not set 631 607 # CONFIG_SCSI_QLOGIC_FAS is not set 632 608 # CONFIG_SCSI_QLOGIC_1280 is not set 633 609 # CONFIG_SCSI_QLA_FC is not set 610 + # CONFIG_SCSI_QLA_ISCSI is not set 634 611 # CONFIG_SCSI_LPFC is not set 635 612 # CONFIG_SCSI_SYM53C416 is not set 636 613 # CONFIG_SCSI_DC395x is not set ··· 638 615 # CONFIG_SCSI_T128 is not set 639 616 # CONFIG_SCSI_NSP32 is not set 640 617 # CONFIG_SCSI_DEBUG is not set 618 + # CONFIG_SCSI_SRP is not set 641 619 642 620 # 643 621 # PCMCIA SCSI adapter support ··· 781 757 # CONFIG_IXGB is not set 782 758 # CONFIG_S2IO is not set 783 759 # CONFIG_MYRI10GE is not set 760 + # CONFIG_NETXEN_NIC is not set 784 761 785 762 # 786 763 # Token Ring devices ··· 896 871 # CONFIG_DTLK is not set 897 872 # CONFIG_R3964 is not set 898 873 # CONFIG_APPLICOM is not set 899 - 900 - # 901 - # Ftape, the floppy tape device driver 902 - # 903 874 # CONFIG_DRM is not set 904 875 905 876 # ··· 910 889 # TPM devices 911 890 # 912 891 # CONFIG_TCG_TPM is not set 913 - # CONFIG_TELCLOCK is not set 914 892 915 893 # 916 894 # I2C support ··· 925 905 # 926 906 # Dallas's 1-wire bus 927 907 # 908 + # CONFIG_W1 is not set 928 909 929 910 # 930 911 # Hardware Monitoring support ··· 936 915 # CONFIG_SENSORS_F71805F is not set 937 916 # CONFIG_SENSORS_VT1211 is not set 938 917 # CONFIG_HWMON_DEBUG_CHIP is not set 939 - 940 - # 941 - # Misc devices 942 - # 943 918 944 919 # 945 920 # Multimedia devices ··· 1054 1037 CONFIG_USB_DEVICEFS=y 1055 1038 # CONFIG_USB_BANDWIDTH is not set 1056 1039 # CONFIG_USB_DYNAMIC_MINORS is not set 1040 + # CONFIG_USB_MULTITHREAD_PROBE is not set 1057 1041 # CONFIG_USB_OTG is not set 1058 1042 1059 1043 # ··· 1124 1106 # CONFIG_USB_ATI_REMOTE2 is not set 1125 1107 # CONFIG_USB_KEYSPAN_REMOTE is not set 1126 1108 # CONFIG_USB_APPLETOUCH is not set 1127 - # CONFIG_USB_TRANCEVIBRATOR is not set 1128 1109 1129 1110 # 1130 1111 # USB Imaging devices ··· 1138 1121 # CONFIG_USB_KAWETH is not set 1139 1122 CONFIG_USB_PEGASUS=m 1140 1123 CONFIG_USB_RTL8150=m 1124 + # CONFIG_USB_USBNET_MII is not set 1141 1125 # CONFIG_USB_USBNET is not set 1142 1126 CONFIG_USB_MON=y 1143 1127 ··· 1174 1156 # CONFIG_USB_SERIAL_KLSI is not set 1175 1157 # CONFIG_USB_SERIAL_KOBIL_SCT is not set 1176 1158 # CONFIG_USB_SERIAL_MCT_U232 is not set 1159 + # CONFIG_USB_SERIAL_MOS7720 is not set 1177 1160 # CONFIG_USB_SERIAL_MOS7840 is not set 1178 1161 # CONFIG_USB_SERIAL_NAVMAN is not set 1179 1162 CONFIG_USB_SERIAL_PL2303=m ··· 1186 1167 # CONFIG_USB_SERIAL_XIRCOM is not set 1187 1168 # CONFIG_USB_SERIAL_OPTION is not set 1188 1169 # CONFIG_USB_SERIAL_OMNINET is not set 1170 + # CONFIG_USB_SERIAL_DEBUG is not set 1189 1171 1190 1172 # 1191 1173 # USB Miscellaneous drivers ··· 1208 1188 CONFIG_USB_SISUSBVGA=m 1209 1189 CONFIG_USB_SISUSBVGA_CON=y 1210 1190 # CONFIG_USB_LD is not set 1191 + # CONFIG_USB_TRANCEVIBRATOR is not set 1211 1192 # CONFIG_USB_TEST is not set 1212 1193 1213 1194 # ··· 1275 1254 CONFIG_EXT3_FS_XATTR=y 1276 1255 # CONFIG_EXT3_FS_POSIX_ACL is not set 1277 1256 # CONFIG_EXT3_FS_SECURITY is not set 1257 + # CONFIG_EXT4DEV_FS is not set 1278 1258 CONFIG_JBD=y 1279 1259 # CONFIG_JBD_DEBUG is not set 1280 1260 CONFIG_FS_MBCACHE=y ··· 1286 1264 # CONFIG_JFS_FS is not set 1287 1265 # CONFIG_FS_POSIX_ACL is not set 1288 1266 # CONFIG_XFS_FS is not set 1267 + # CONFIG_GFS2_FS is not set 1289 1268 # CONFIG_OCFS2_FS is not set 1290 1269 # CONFIG_MINIX_FS is not set 1291 1270 CONFIG_ROMFS_FS=y ··· 1437 1414 # 1438 1415 # Kernel hacking 1439 1416 # 1417 + CONFIG_TRACE_IRQFLAGS_SUPPORT=y 1440 1418 # CONFIG_PRINTK_TIME is not set 1441 1419 CONFIG_ENABLE_MUST_CHECK=y 1442 1420 # CONFIG_MAGIC_SYSRQ is not set ··· 1446 1422 CONFIG_LOG_BUF_SHIFT=14 1447 1423 # CONFIG_DEBUG_BUGVERBOSE is not set 1448 1424 # CONFIG_DEBUG_FS is not set 1425 + # CONFIG_HEADERS_CHECK is not set 1449 1426 CONFIG_SH_STANDARD_BIOS=y 1450 1427 # CONFIG_EARLY_SCIF_CONSOLE is not set 1451 1428 # CONFIG_EARLY_PRINTK is not set ··· 1470 1445 # CONFIG_CRC16 is not set 1471 1446 CONFIG_CRC32=y 1472 1447 # CONFIG_LIBCRC32C is not set 1473 - CONFIG_TEXTSEARCH=y 1474 - CONFIG_TEXTSEARCH_KMP=m 1475 1448 CONFIG_PLIST=y
+103 -39
arch/sh/configs/se7206_defconfig
··· 1 1 # 2 2 # Automatically generated make config: don't edit 3 - # Linux kernel version: 2.6.19-rc4 4 - # Sun Nov 5 16:20:10 2006 3 + # Linux kernel version: 2.6.19 4 + # Wed Dec 6 14:40:15 2006 5 5 # 6 6 CONFIG_SUPERH=y 7 7 CONFIG_RWSEM_GENERIC_SPINLOCK=y ··· 11 11 CONFIG_GENERIC_IRQ_PROBE=y 12 12 CONFIG_GENERIC_CALIBRATE_DELAY=y 13 13 # CONFIG_GENERIC_TIME is not set 14 + CONFIG_STACKTRACE_SUPPORT=y 15 + CONFIG_LOCKDEP_SUPPORT=y 14 16 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 15 17 16 18 # ··· 36 34 # CONFIG_IKCONFIG is not set 37 35 # CONFIG_RELAY is not set 38 36 CONFIG_INITRAMFS_SOURCE="" 39 - # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 37 + CONFIG_CC_OPTIMIZE_FOR_SIZE=y 40 38 CONFIG_SYSCTL=y 41 39 CONFIG_EMBEDDED=y 42 - CONFIG_UID16=y 40 + # CONFIG_UID16 is not set 43 41 # CONFIG_SYSCTL_SYSCALL is not set 44 - CONFIG_KALLSYMS=y 45 - # CONFIG_KALLSYMS_EXTRA_PASS is not set 42 + # CONFIG_KALLSYMS is not set 46 43 # CONFIG_HOTPLUG is not set 47 44 CONFIG_PRINTK=y 48 45 CONFIG_BUG=y 49 - CONFIG_ELF_CORE=y 50 - CONFIG_BASE_FULL=y 46 + # CONFIG_ELF_CORE is not set 47 + # CONFIG_BASE_FULL is not set 51 48 # CONFIG_FUTEX is not set 52 49 # CONFIG_EPOLL is not set 53 50 CONFIG_SLAB=y 54 - CONFIG_VM_EVENT_COUNTERS=y 51 + # CONFIG_VM_EVENT_COUNTERS is not set 55 52 CONFIG_TINY_SHMEM=y 56 - CONFIG_BASE_SMALL=0 53 + CONFIG_BASE_SMALL=1 57 54 # CONFIG_SLOB is not set 58 55 59 56 # ··· 161 160 # 162 161 # CONFIG_CPU_SUBTYPE_SH7770 is not set 163 162 # CONFIG_CPU_SUBTYPE_SH7780 is not set 163 + # CONFIG_CPU_SUBTYPE_SH7785 is not set 164 164 165 165 # 166 166 # SH4AL-DSP Processor Support ··· 174 172 # 175 173 CONFIG_PAGE_OFFSET=0x00000000 176 174 CONFIG_MEMORY_START=0x0c000000 177 - CONFIG_MEMORY_SIZE=0x02000000 175 + CONFIG_MEMORY_SIZE=0x04000000 176 + CONFIG_PAGE_SIZE_4KB=y 177 + # CONFIG_PAGE_SIZE_8KB is not set 178 + # CONFIG_PAGE_SIZE_64KB is not set 178 179 CONFIG_SELECT_MEMORY_MODEL=y 179 180 CONFIG_FLATMEM_MANUAL=y 180 181 # CONFIG_DISCONTIGMEM_MANUAL is not set ··· 199 194 # Processor features 200 195 # 201 196 # CONFIG_CPU_LITTLE_ENDIAN is not set 197 + CONFIG_CPU_BIG_ENDIAN=y 202 198 # CONFIG_SH_FPU is not set 203 199 # CONFIG_SH_FPU_EMU is not set 204 200 # CONFIG_SH_DSP is not set ··· 209 203 # 210 204 CONFIG_SH_CMT=y 211 205 # CONFIG_SH_MTU2 is not set 206 + CONFIG_SH_TIMER_IRQ=140 207 + # CONFIG_NO_IDLE_HZ is not set 212 208 CONFIG_SH_PCLK_FREQ=33333333 213 209 CONFIG_SH_CLK_MD=6 214 210 ··· 228 220 # Companion Chips 229 221 # 230 222 # CONFIG_HD6446X_SERIES is not set 223 + 224 + # 225 + # Additional SuperH Device Drivers 226 + # 227 + # CONFIG_PUSH_SWITCH is not set 231 228 232 229 # 233 230 # Kernel features ··· 292 279 # CONFIG_NETDEBUG is not set 293 280 # CONFIG_PACKET is not set 294 281 # CONFIG_UNIX is not set 295 - CONFIG_XFRM=y 296 - # CONFIG_XFRM_USER is not set 297 - # CONFIG_XFRM_SUB_POLICY is not set 298 282 # CONFIG_NET_KEY is not set 299 283 CONFIG_INET=y 300 284 # CONFIG_IP_MULTICAST is not set ··· 307 297 # CONFIG_INET_IPCOMP is not set 308 298 # CONFIG_INET_XFRM_TUNNEL is not set 309 299 # CONFIG_INET_TUNNEL is not set 310 - CONFIG_INET_XFRM_MODE_TRANSPORT=y 311 - CONFIG_INET_XFRM_MODE_TUNNEL=y 312 - CONFIG_INET_XFRM_MODE_BEET=y 300 + # CONFIG_INET_XFRM_MODE_TRANSPORT is not set 301 + # CONFIG_INET_XFRM_MODE_TUNNEL is not set 302 + # CONFIG_INET_XFRM_MODE_BEET is not set 313 303 # CONFIG_INET_DIAG is not set 314 304 # CONFIG_TCP_CONG_ADVANCED is not set 315 305 CONFIG_TCP_CONG_CUBIC=y ··· 381 371 # 382 372 CONFIG_MTD=y 383 373 # CONFIG_MTD_DEBUG is not set 384 - # CONFIG_MTD_CONCAT is not set 374 + CONFIG_MTD_CONCAT=y 385 375 CONFIG_MTD_PARTITIONS=y 386 376 CONFIG_MTD_REDBOOT_PARTS=y 387 377 CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 ··· 432 422 # CONFIG_MTD_COMPLEX_MAPPINGS is not set 433 423 CONFIG_MTD_PHYSMAP=y 434 424 CONFIG_MTD_PHYSMAP_START=0x20000000 435 - CONFIG_MTD_PHYSMAP_LEN=0x1000000 425 + CONFIG_MTD_PHYSMAP_LEN=0x01000000 436 426 CONFIG_MTD_PHYSMAP_BANKWIDTH=4 437 427 # CONFIG_MTD_SOLUTIONENGINE is not set 438 428 # CONFIG_MTD_UCLINUX is not set ··· 478 468 # CONFIG_BLK_DEV_COW_COMMON is not set 479 469 # CONFIG_BLK_DEV_LOOP is not set 480 470 # CONFIG_BLK_DEV_NBD is not set 481 - CONFIG_BLK_DEV_RAM=y 482 - CONFIG_BLK_DEV_RAM_COUNT=16 483 - CONFIG_BLK_DEV_RAM_SIZE=4096 484 - CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 471 + # CONFIG_BLK_DEV_RAM is not set 485 472 # CONFIG_BLK_DEV_INITRD is not set 486 473 # CONFIG_CDROM_PKTCDVD is not set 487 474 # CONFIG_ATA_OVER_ETH is not set ··· 526 519 # 527 520 # Network device support 528 521 # 529 - # CONFIG_NETDEVICES is not set 522 + CONFIG_NETDEVICES=y 523 + # CONFIG_DUMMY is not set 524 + # CONFIG_BONDING is not set 525 + # CONFIG_EQUALIZER is not set 526 + # CONFIG_TUN is not set 527 + 528 + # 529 + # PHY device support 530 + # 531 + # CONFIG_PHYLIB is not set 532 + 533 + # 534 + # Ethernet (10 or 100Mbit) 535 + # 536 + CONFIG_NET_ETHERNET=y 537 + CONFIG_MII=y 538 + # CONFIG_STNIC is not set 539 + CONFIG_SMC91X=y 540 + 541 + # 542 + # Ethernet (1000 Mbit) 543 + # 544 + 545 + # 546 + # Ethernet (10000 Mbit) 547 + # 548 + 549 + # 550 + # Token Ring devices 551 + # 552 + 553 + # 554 + # Wireless LAN (non-hamradio) 555 + # 556 + # CONFIG_NET_RADIO is not set 557 + 558 + # 559 + # Wan interfaces 560 + # 561 + # CONFIG_WAN is not set 562 + # CONFIG_PPP is not set 563 + # CONFIG_SLIP is not set 564 + # CONFIG_SHAPER is not set 565 + # CONFIG_NETCONSOLE is not set 530 566 # CONFIG_NETPOLL is not set 531 567 # CONFIG_NET_POLL_CONTROLLER is not set 532 568 ··· 586 536 # 587 537 # Input device support 588 538 # 589 - # CONFIG_INPUT is not set 539 + CONFIG_INPUT=y 540 + # CONFIG_INPUT_FF_MEMLESS is not set 541 + 542 + # 543 + # Userland interfaces 544 + # 545 + # CONFIG_INPUT_MOUSEDEV is not set 546 + # CONFIG_INPUT_JOYDEV is not set 547 + # CONFIG_INPUT_TSDEV is not set 548 + # CONFIG_INPUT_EVDEV is not set 549 + # CONFIG_INPUT_EVBUG is not set 550 + 551 + # 552 + # Input Device Drivers 553 + # 554 + # CONFIG_INPUT_KEYBOARD is not set 555 + # CONFIG_INPUT_MOUSE is not set 556 + # CONFIG_INPUT_JOYSTICK is not set 557 + # CONFIG_INPUT_TOUCHSCREEN is not set 558 + # CONFIG_INPUT_MISC is not set 590 559 591 560 # 592 561 # Hardware I/O ports ··· 633 564 CONFIG_SERIAL_CORE=y 634 565 CONFIG_SERIAL_CORE_CONSOLE=y 635 566 # CONFIG_UNIX98_PTYS is not set 636 - CONFIG_LEGACY_PTYS=y 637 - CONFIG_LEGACY_PTY_COUNT=256 567 + # CONFIG_LEGACY_PTYS is not set 638 568 639 569 # 640 570 # IPMI ··· 644 576 # Watchdog Cards 645 577 # 646 578 # CONFIG_WATCHDOG is not set 647 - CONFIG_HW_RANDOM=y 579 + # CONFIG_HW_RANDOM is not set 648 580 # CONFIG_GEN_RTC is not set 649 581 # CONFIG_DTLK is not set 650 582 # CONFIG_R3964 is not set ··· 678 610 # 679 611 # Hardware Monitoring support 680 612 # 681 - CONFIG_HWMON=y 613 + # CONFIG_HWMON is not set 682 614 # CONFIG_HWMON_VID is not set 683 - # CONFIG_SENSORS_ABITUGURU is not set 684 - # CONFIG_SENSORS_F71805F is not set 685 - # CONFIG_SENSORS_VT1211 is not set 686 - # CONFIG_HWMON_DEBUG_CHIP is not set 687 615 688 616 # 689 617 # Multimedia devices ··· 694 630 # 695 631 # Graphics support 696 632 # 697 - CONFIG_FIRMWARE_EDID=y 633 + # CONFIG_FIRMWARE_EDID is not set 698 634 # CONFIG_FB is not set 699 635 700 636 # ··· 765 701 # 766 702 # File systems 767 703 # 768 - CONFIG_EXT2_FS=y 769 - # CONFIG_EXT2_FS_XATTR is not set 704 + # CONFIG_EXT2_FS is not set 770 705 # CONFIG_EXT3_FS is not set 771 706 # CONFIG_EXT4DEV_FS is not set 772 707 # CONFIG_REISERFS_FS is not set ··· 818 755 # CONFIG_EFS_FS is not set 819 756 # CONFIG_JFFS_FS is not set 820 757 # CONFIG_JFFS2_FS is not set 821 - CONFIG_CRAMFS=y 758 + # CONFIG_CRAMFS is not set 822 759 # CONFIG_VXFS_FS is not set 823 760 # CONFIG_HPFS_FS is not set 824 761 # CONFIG_QNX4FS_FS is not set ··· 856 793 # 857 794 # Kernel hacking 858 795 # 796 + CONFIG_TRACE_IRQFLAGS_SUPPORT=y 859 797 # CONFIG_PRINTK_TIME is not set 860 - CONFIG_ENABLE_MUST_CHECK=y 798 + # CONFIG_ENABLE_MUST_CHECK is not set 861 799 # CONFIG_MAGIC_SYSRQ is not set 862 800 # CONFIG_UNUSED_SYMBOLS is not set 863 801 # CONFIG_DEBUG_KERNEL is not set ··· 883 819 # 884 820 # Library routines 885 821 # 886 - CONFIG_CRC_CCITT=y 822 + # CONFIG_CRC_CCITT is not set 887 823 # CONFIG_CRC16 is not set 888 824 CONFIG_CRC32=y 889 825 # CONFIG_LIBCRC32C is not set
+744
arch/sh/configs/se7619_defconfig
··· 1 + # 2 + # Automatically generated make config: don't edit 3 + # Linux kernel version: 2.6.19 4 + # Wed Dec 6 16:35:36 2006 5 + # 6 + CONFIG_SUPERH=y 7 + CONFIG_RWSEM_GENERIC_SPINLOCK=y 8 + CONFIG_GENERIC_FIND_NEXT_BIT=y 9 + CONFIG_GENERIC_HWEIGHT=y 10 + CONFIG_GENERIC_HARDIRQS=y 11 + CONFIG_GENERIC_IRQ_PROBE=y 12 + CONFIG_GENERIC_CALIBRATE_DELAY=y 13 + # CONFIG_GENERIC_TIME is not set 14 + CONFIG_STACKTRACE_SUPPORT=y 15 + CONFIG_LOCKDEP_SUPPORT=y 16 + CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 17 + 18 + # 19 + # Code maturity level options 20 + # 21 + CONFIG_EXPERIMENTAL=y 22 + CONFIG_BROKEN_ON_SMP=y 23 + CONFIG_INIT_ENV_ARG_LIMIT=32 24 + 25 + # 26 + # General setup 27 + # 28 + CONFIG_LOCALVERSION="" 29 + # CONFIG_LOCALVERSION_AUTO is not set 30 + # CONFIG_SYSVIPC is not set 31 + # CONFIG_BSD_PROCESS_ACCT is not set 32 + # CONFIG_UTS_NS is not set 33 + # CONFIG_IKCONFIG is not set 34 + # CONFIG_RELAY is not set 35 + CONFIG_INITRAMFS_SOURCE="" 36 + CONFIG_CC_OPTIMIZE_FOR_SIZE=y 37 + CONFIG_SYSCTL=y 38 + CONFIG_EMBEDDED=y 39 + # CONFIG_UID16 is not set 40 + # CONFIG_SYSCTL_SYSCALL is not set 41 + # CONFIG_KALLSYMS is not set 42 + # CONFIG_HOTPLUG is not set 43 + CONFIG_PRINTK=y 44 + CONFIG_BUG=y 45 + # CONFIG_ELF_CORE is not set 46 + # CONFIG_BASE_FULL is not set 47 + # CONFIG_FUTEX is not set 48 + # CONFIG_EPOLL is not set 49 + CONFIG_SLAB=y 50 + # CONFIG_VM_EVENT_COUNTERS is not set 51 + CONFIG_TINY_SHMEM=y 52 + CONFIG_BASE_SMALL=1 53 + # CONFIG_SLOB is not set 54 + 55 + # 56 + # Loadable module support 57 + # 58 + # CONFIG_MODULES is not set 59 + 60 + # 61 + # Block layer 62 + # 63 + CONFIG_BLOCK=y 64 + # CONFIG_LBD is not set 65 + # CONFIG_LSF is not set 66 + 67 + # 68 + # IO Schedulers 69 + # 70 + CONFIG_IOSCHED_NOOP=y 71 + # CONFIG_IOSCHED_AS is not set 72 + # CONFIG_IOSCHED_DEADLINE is not set 73 + # CONFIG_IOSCHED_CFQ is not set 74 + # CONFIG_DEFAULT_AS is not set 75 + # CONFIG_DEFAULT_DEADLINE is not set 76 + # CONFIG_DEFAULT_CFQ is not set 77 + CONFIG_DEFAULT_NOOP=y 78 + CONFIG_DEFAULT_IOSCHED="noop" 79 + 80 + # 81 + # System type 82 + # 83 + # CONFIG_SH_SOLUTION_ENGINE is not set 84 + # CONFIG_SH_7751_SOLUTION_ENGINE is not set 85 + # CONFIG_SH_7300_SOLUTION_ENGINE is not set 86 + # CONFIG_SH_7343_SOLUTION_ENGINE is not set 87 + # CONFIG_SH_73180_SOLUTION_ENGINE is not set 88 + # CONFIG_SH_7751_SYSTEMH is not set 89 + # CONFIG_SH_HP6XX is not set 90 + # CONFIG_SH_EC3104 is not set 91 + # CONFIG_SH_SATURN is not set 92 + # CONFIG_SH_DREAMCAST is not set 93 + # CONFIG_SH_BIGSUR is not set 94 + # CONFIG_SH_MPC1211 is not set 95 + # CONFIG_SH_SH03 is not set 96 + # CONFIG_SH_SECUREEDGE5410 is not set 97 + # CONFIG_SH_HS7751RVOIP is not set 98 + # CONFIG_SH_7710VOIPGW is not set 99 + # CONFIG_SH_RTS7751R2D is not set 100 + # CONFIG_SH_R7780RP is not set 101 + # CONFIG_SH_EDOSK7705 is not set 102 + # CONFIG_SH_SH4202_MICRODEV is not set 103 + # CONFIG_SH_LANDISK is not set 104 + # CONFIG_SH_TITAN is not set 105 + # CONFIG_SH_SHMIN is not set 106 + # CONFIG_SH_7206_SOLUTION_ENGINE is not set 107 + CONFIG_SH_7619_SOLUTION_ENGINE=y 108 + # CONFIG_SH_UNKNOWN is not set 109 + 110 + # 111 + # Processor selection 112 + # 113 + CONFIG_CPU_SH2=y 114 + 115 + # 116 + # SH-2 Processor Support 117 + # 118 + # CONFIG_CPU_SUBTYPE_SH7604 is not set 119 + CONFIG_CPU_SUBTYPE_SH7619=y 120 + 121 + # 122 + # SH-2A Processor Support 123 + # 124 + # CONFIG_CPU_SUBTYPE_SH7206 is not set 125 + 126 + # 127 + # SH-3 Processor Support 128 + # 129 + # CONFIG_CPU_SUBTYPE_SH7300 is not set 130 + # CONFIG_CPU_SUBTYPE_SH7705 is not set 131 + # CONFIG_CPU_SUBTYPE_SH7706 is not set 132 + # CONFIG_CPU_SUBTYPE_SH7707 is not set 133 + # CONFIG_CPU_SUBTYPE_SH7708 is not set 134 + # CONFIG_CPU_SUBTYPE_SH7709 is not set 135 + # CONFIG_CPU_SUBTYPE_SH7710 is not set 136 + 137 + # 138 + # SH-4 Processor Support 139 + # 140 + # CONFIG_CPU_SUBTYPE_SH7750 is not set 141 + # CONFIG_CPU_SUBTYPE_SH7091 is not set 142 + # CONFIG_CPU_SUBTYPE_SH7750R is not set 143 + # CONFIG_CPU_SUBTYPE_SH7750S is not set 144 + # CONFIG_CPU_SUBTYPE_SH7751 is not set 145 + # CONFIG_CPU_SUBTYPE_SH7751R is not set 146 + # CONFIG_CPU_SUBTYPE_SH7760 is not set 147 + # CONFIG_CPU_SUBTYPE_SH4_202 is not set 148 + 149 + # 150 + # ST40 Processor Support 151 + # 152 + # CONFIG_CPU_SUBTYPE_ST40STB1 is not set 153 + # CONFIG_CPU_SUBTYPE_ST40GX1 is not set 154 + 155 + # 156 + # SH-4A Processor Support 157 + # 158 + # CONFIG_CPU_SUBTYPE_SH7770 is not set 159 + # CONFIG_CPU_SUBTYPE_SH7780 is not set 160 + # CONFIG_CPU_SUBTYPE_SH7785 is not set 161 + 162 + # 163 + # SH4AL-DSP Processor Support 164 + # 165 + # CONFIG_CPU_SUBTYPE_SH73180 is not set 166 + # CONFIG_CPU_SUBTYPE_SH7343 is not set 167 + 168 + # 169 + # Memory management options 170 + # 171 + CONFIG_PAGE_OFFSET=0x00000000 172 + CONFIG_MEMORY_START=0x0c000000 173 + CONFIG_MEMORY_SIZE=0x04000000 174 + CONFIG_PAGE_SIZE_4KB=y 175 + # CONFIG_PAGE_SIZE_8KB is not set 176 + # CONFIG_PAGE_SIZE_64KB is not set 177 + CONFIG_SELECT_MEMORY_MODEL=y 178 + CONFIG_FLATMEM_MANUAL=y 179 + # CONFIG_DISCONTIGMEM_MANUAL is not set 180 + # CONFIG_SPARSEMEM_MANUAL is not set 181 + CONFIG_FLATMEM=y 182 + CONFIG_FLAT_NODE_MEM_MAP=y 183 + # CONFIG_SPARSEMEM_STATIC is not set 184 + CONFIG_SPLIT_PTLOCK_CPUS=4 185 + # CONFIG_RESOURCES_64BIT is not set 186 + 187 + # 188 + # Cache configuration 189 + # 190 + # CONFIG_SH_DIRECT_MAPPED is not set 191 + CONFIG_SH_WRITETHROUGH=y 192 + # CONFIG_SH_OCRAM is not set 193 + 194 + # 195 + # Processor features 196 + # 197 + # CONFIG_CPU_LITTLE_ENDIAN is not set 198 + CONFIG_CPU_BIG_ENDIAN=y 199 + # CONFIG_SH_FPU is not set 200 + # CONFIG_SH_FPU_EMU is not set 201 + # CONFIG_SH_DSP is not set 202 + 203 + # 204 + # Timer support 205 + # 206 + CONFIG_SH_CMT=y 207 + CONFIG_SH_TIMER_IRQ=86 208 + # CONFIG_NO_IDLE_HZ is not set 209 + CONFIG_SH_PCLK_FREQ=31250000 210 + CONFIG_SH_CLK_MD=5 211 + 212 + # 213 + # CPU Frequency scaling 214 + # 215 + # CONFIG_CPU_FREQ is not set 216 + 217 + # 218 + # DMA support 219 + # 220 + # CONFIG_SH_DMA is not set 221 + 222 + # 223 + # Companion Chips 224 + # 225 + # CONFIG_HD6446X_SERIES is not set 226 + 227 + # 228 + # Additional SuperH Device Drivers 229 + # 230 + # CONFIG_PUSH_SWITCH is not set 231 + 232 + # 233 + # Kernel features 234 + # 235 + CONFIG_HZ_100=y 236 + # CONFIG_HZ_250 is not set 237 + # CONFIG_HZ_1000 is not set 238 + CONFIG_HZ=100 239 + # CONFIG_KEXEC is not set 240 + # CONFIG_SMP is not set 241 + CONFIG_PREEMPT_NONE=y 242 + # CONFIG_PREEMPT_VOLUNTARY is not set 243 + # CONFIG_PREEMPT is not set 244 + 245 + # 246 + # Boot options 247 + # 248 + CONFIG_ZERO_PAGE_OFFSET=0x00001000 249 + CONFIG_BOOT_LINK_OFFSET=0x00800000 250 + # CONFIG_UBC_WAKEUP is not set 251 + # CONFIG_CMDLINE_BOOL is not set 252 + 253 + # 254 + # Bus options 255 + # 256 + # CONFIG_PCI is not set 257 + 258 + # 259 + # PCCARD (PCMCIA/CardBus) support 260 + # 261 + 262 + # 263 + # PCI Hotplug Support 264 + # 265 + 266 + # 267 + # Executable file formats 268 + # 269 + CONFIG_BINFMT_FLAT=y 270 + CONFIG_BINFMT_ZFLAT=y 271 + # CONFIG_BINFMT_SHARED_FLAT is not set 272 + # CONFIG_BINFMT_MISC is not set 273 + 274 + # 275 + # Power management options (EXPERIMENTAL) 276 + # 277 + # CONFIG_PM is not set 278 + 279 + # 280 + # Networking 281 + # 282 + # CONFIG_NET is not set 283 + 284 + # 285 + # Device Drivers 286 + # 287 + 288 + # 289 + # Generic Driver Options 290 + # 291 + # CONFIG_STANDALONE is not set 292 + # CONFIG_PREVENT_FIRMWARE_BUILD is not set 293 + # CONFIG_SYS_HYPERVISOR is not set 294 + 295 + # 296 + # Connector - unified userspace <-> kernelspace linker 297 + # 298 + 299 + # 300 + # Memory Technology Devices (MTD) 301 + # 302 + CONFIG_MTD=y 303 + # CONFIG_MTD_DEBUG is not set 304 + CONFIG_MTD_CONCAT=y 305 + CONFIG_MTD_PARTITIONS=y 306 + CONFIG_MTD_REDBOOT_PARTS=y 307 + CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 308 + # CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set 309 + # CONFIG_MTD_REDBOOT_PARTS_READONLY is not set 310 + # CONFIG_MTD_CMDLINE_PARTS is not set 311 + 312 + # 313 + # User Modules And Translation Layers 314 + # 315 + CONFIG_MTD_CHAR=y 316 + CONFIG_MTD_BLOCK=y 317 + # CONFIG_FTL is not set 318 + # CONFIG_NFTL is not set 319 + # CONFIG_INFTL is not set 320 + # CONFIG_RFD_FTL is not set 321 + # CONFIG_SSFDC is not set 322 + 323 + # 324 + # RAM/ROM/Flash chip drivers 325 + # 326 + CONFIG_MTD_CFI=y 327 + # CONFIG_MTD_JEDECPROBE is not set 328 + CONFIG_MTD_GEN_PROBE=y 329 + # CONFIG_MTD_CFI_ADV_OPTIONS is not set 330 + CONFIG_MTD_MAP_BANK_WIDTH_1=y 331 + CONFIG_MTD_MAP_BANK_WIDTH_2=y 332 + CONFIG_MTD_MAP_BANK_WIDTH_4=y 333 + # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set 334 + # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set 335 + # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set 336 + CONFIG_MTD_CFI_I1=y 337 + CONFIG_MTD_CFI_I2=y 338 + # CONFIG_MTD_CFI_I4 is not set 339 + # CONFIG_MTD_CFI_I8 is not set 340 + # CONFIG_MTD_CFI_INTELEXT is not set 341 + CONFIG_MTD_CFI_AMDSTD=y 342 + # CONFIG_MTD_CFI_STAA is not set 343 + CONFIG_MTD_CFI_UTIL=y 344 + # CONFIG_MTD_RAM is not set 345 + # CONFIG_MTD_ROM is not set 346 + # CONFIG_MTD_ABSENT is not set 347 + # CONFIG_MTD_OBSOLETE_CHIPS is not set 348 + 349 + # 350 + # Mapping drivers for chip access 351 + # 352 + # CONFIG_MTD_COMPLEX_MAPPINGS is not set 353 + CONFIG_MTD_PHYSMAP=y 354 + CONFIG_MTD_PHYSMAP_START=0xa0000000 355 + CONFIG_MTD_PHYSMAP_LEN=0x01000000 356 + CONFIG_MTD_PHYSMAP_BANKWIDTH=2 357 + # CONFIG_MTD_SOLUTIONENGINE is not set 358 + # CONFIG_MTD_UCLINUX is not set 359 + # CONFIG_MTD_PLATRAM is not set 360 + 361 + # 362 + # Self-contained MTD device drivers 363 + # 364 + # CONFIG_MTD_SLRAM is not set 365 + # CONFIG_MTD_PHRAM is not set 366 + # CONFIG_MTD_MTDRAM is not set 367 + # CONFIG_MTD_BLOCK2MTD is not set 368 + 369 + # 370 + # Disk-On-Chip Device Drivers 371 + # 372 + # CONFIG_MTD_DOC2000 is not set 373 + # CONFIG_MTD_DOC2001 is not set 374 + # CONFIG_MTD_DOC2001PLUS is not set 375 + 376 + # 377 + # NAND Flash Device Drivers 378 + # 379 + # CONFIG_MTD_NAND is not set 380 + 381 + # 382 + # OneNAND Flash Device Drivers 383 + # 384 + # CONFIG_MTD_ONENAND is not set 385 + 386 + # 387 + # Parallel port support 388 + # 389 + # CONFIG_PARPORT is not set 390 + 391 + # 392 + # Plug and Play support 393 + # 394 + 395 + # 396 + # Block devices 397 + # 398 + # CONFIG_BLK_DEV_COW_COMMON is not set 399 + # CONFIG_BLK_DEV_LOOP is not set 400 + # CONFIG_BLK_DEV_RAM is not set 401 + # CONFIG_BLK_DEV_INITRD is not set 402 + # CONFIG_CDROM_PKTCDVD is not set 403 + 404 + # 405 + # Misc devices 406 + # 407 + # CONFIG_TIFM_CORE is not set 408 + 409 + # 410 + # ATA/ATAPI/MFM/RLL support 411 + # 412 + # CONFIG_IDE is not set 413 + 414 + # 415 + # SCSI device support 416 + # 417 + # CONFIG_RAID_ATTRS is not set 418 + # CONFIG_SCSI is not set 419 + # CONFIG_SCSI_NETLINK is not set 420 + 421 + # 422 + # Serial ATA (prod) and Parallel ATA (experimental) drivers 423 + # 424 + # CONFIG_ATA is not set 425 + 426 + # 427 + # Multi-device support (RAID and LVM) 428 + # 429 + # CONFIG_MD is not set 430 + 431 + # 432 + # Fusion MPT device support 433 + # 434 + # CONFIG_FUSION is not set 435 + 436 + # 437 + # IEEE 1394 (FireWire) support 438 + # 439 + 440 + # 441 + # I2O device support 442 + # 443 + 444 + # 445 + # ISDN subsystem 446 + # 447 + 448 + # 449 + # Telephony Support 450 + # 451 + # CONFIG_PHONE is not set 452 + 453 + # 454 + # Input device support 455 + # 456 + CONFIG_INPUT=y 457 + # CONFIG_INPUT_FF_MEMLESS is not set 458 + 459 + # 460 + # Userland interfaces 461 + # 462 + # CONFIG_INPUT_MOUSEDEV is not set 463 + # CONFIG_INPUT_JOYDEV is not set 464 + # CONFIG_INPUT_TSDEV is not set 465 + # CONFIG_INPUT_EVDEV is not set 466 + # CONFIG_INPUT_EVBUG is not set 467 + 468 + # 469 + # Input Device Drivers 470 + # 471 + # CONFIG_INPUT_KEYBOARD is not set 472 + # CONFIG_INPUT_MOUSE is not set 473 + # CONFIG_INPUT_JOYSTICK is not set 474 + # CONFIG_INPUT_TOUCHSCREEN is not set 475 + # CONFIG_INPUT_MISC is not set 476 + 477 + # 478 + # Hardware I/O ports 479 + # 480 + # CONFIG_SERIO is not set 481 + # CONFIG_GAMEPORT is not set 482 + 483 + # 484 + # Character devices 485 + # 486 + # CONFIG_VT is not set 487 + # CONFIG_SERIAL_NONSTANDARD is not set 488 + 489 + # 490 + # Serial drivers 491 + # 492 + # CONFIG_SERIAL_8250 is not set 493 + 494 + # 495 + # Non-8250 serial port support 496 + # 497 + CONFIG_SERIAL_SH_SCI=y 498 + CONFIG_SERIAL_SH_SCI_NR_UARTS=3 499 + CONFIG_SERIAL_SH_SCI_CONSOLE=y 500 + CONFIG_SERIAL_CORE=y 501 + CONFIG_SERIAL_CORE_CONSOLE=y 502 + # CONFIG_UNIX98_PTYS is not set 503 + # CONFIG_LEGACY_PTYS is not set 504 + 505 + # 506 + # IPMI 507 + # 508 + # CONFIG_IPMI_HANDLER is not set 509 + 510 + # 511 + # Watchdog Cards 512 + # 513 + # CONFIG_WATCHDOG is not set 514 + # CONFIG_HW_RANDOM is not set 515 + # CONFIG_GEN_RTC is not set 516 + # CONFIG_DTLK is not set 517 + # CONFIG_R3964 is not set 518 + 519 + # 520 + # Ftape, the floppy tape device driver 521 + # 522 + # CONFIG_RAW_DRIVER is not set 523 + 524 + # 525 + # TPM devices 526 + # 527 + # CONFIG_TCG_TPM is not set 528 + 529 + # 530 + # I2C support 531 + # 532 + # CONFIG_I2C is not set 533 + 534 + # 535 + # SPI support 536 + # 537 + # CONFIG_SPI is not set 538 + # CONFIG_SPI_MASTER is not set 539 + 540 + # 541 + # Dallas's 1-wire bus 542 + # 543 + # CONFIG_W1 is not set 544 + 545 + # 546 + # Hardware Monitoring support 547 + # 548 + # CONFIG_HWMON is not set 549 + # CONFIG_HWMON_VID is not set 550 + 551 + # 552 + # Multimedia devices 553 + # 554 + # CONFIG_VIDEO_DEV is not set 555 + 556 + # 557 + # Digital Video Broadcasting Devices 558 + # 559 + 560 + # 561 + # Graphics support 562 + # 563 + # CONFIG_FIRMWARE_EDID is not set 564 + # CONFIG_FB is not set 565 + 566 + # 567 + # Sound 568 + # 569 + # CONFIG_SOUND is not set 570 + 571 + # 572 + # USB support 573 + # 574 + # CONFIG_USB_ARCH_HAS_HCD is not set 575 + # CONFIG_USB_ARCH_HAS_OHCI is not set 576 + # CONFIG_USB_ARCH_HAS_EHCI is not set 577 + 578 + # 579 + # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 580 + # 581 + 582 + # 583 + # USB Gadget Support 584 + # 585 + # CONFIG_USB_GADGET is not set 586 + 587 + # 588 + # MMC/SD Card support 589 + # 590 + # CONFIG_MMC is not set 591 + 592 + # 593 + # LED devices 594 + # 595 + # CONFIG_NEW_LEDS is not set 596 + 597 + # 598 + # LED drivers 599 + # 600 + 601 + # 602 + # LED Triggers 603 + # 604 + 605 + # 606 + # InfiniBand support 607 + # 608 + 609 + # 610 + # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) 611 + # 612 + 613 + # 614 + # Real Time Clock 615 + # 616 + # CONFIG_RTC_CLASS is not set 617 + 618 + # 619 + # DMA Engine support 620 + # 621 + # CONFIG_DMA_ENGINE is not set 622 + 623 + # 624 + # DMA Clients 625 + # 626 + 627 + # 628 + # DMA Devices 629 + # 630 + 631 + # 632 + # File systems 633 + # 634 + # CONFIG_EXT2_FS is not set 635 + # CONFIG_EXT3_FS is not set 636 + # CONFIG_EXT4DEV_FS is not set 637 + # CONFIG_REISERFS_FS is not set 638 + # CONFIG_JFS_FS is not set 639 + # CONFIG_FS_POSIX_ACL is not set 640 + # CONFIG_XFS_FS is not set 641 + # CONFIG_GFS2_FS is not set 642 + # CONFIG_MINIX_FS is not set 643 + CONFIG_ROMFS_FS=y 644 + # CONFIG_INOTIFY is not set 645 + # CONFIG_QUOTA is not set 646 + # CONFIG_DNOTIFY is not set 647 + # CONFIG_AUTOFS_FS is not set 648 + # CONFIG_AUTOFS4_FS is not set 649 + # CONFIG_FUSE_FS is not set 650 + 651 + # 652 + # CD-ROM/DVD Filesystems 653 + # 654 + # CONFIG_ISO9660_FS is not set 655 + # CONFIG_UDF_FS is not set 656 + 657 + # 658 + # DOS/FAT/NT Filesystems 659 + # 660 + # CONFIG_MSDOS_FS is not set 661 + # CONFIG_VFAT_FS is not set 662 + # CONFIG_NTFS_FS is not set 663 + 664 + # 665 + # Pseudo filesystems 666 + # 667 + CONFIG_PROC_FS=y 668 + CONFIG_PROC_SYSCTL=y 669 + # CONFIG_SYSFS is not set 670 + # CONFIG_TMPFS is not set 671 + # CONFIG_HUGETLBFS is not set 672 + # CONFIG_HUGETLB_PAGE is not set 673 + CONFIG_RAMFS=y 674 + 675 + # 676 + # Miscellaneous filesystems 677 + # 678 + # CONFIG_ADFS_FS is not set 679 + # CONFIG_AFFS_FS is not set 680 + # CONFIG_HFS_FS is not set 681 + # CONFIG_HFSPLUS_FS is not set 682 + # CONFIG_BEFS_FS is not set 683 + # CONFIG_BFS_FS is not set 684 + # CONFIG_EFS_FS is not set 685 + # CONFIG_JFFS_FS is not set 686 + # CONFIG_JFFS2_FS is not set 687 + # CONFIG_CRAMFS is not set 688 + # CONFIG_VXFS_FS is not set 689 + # CONFIG_HPFS_FS is not set 690 + # CONFIG_QNX4FS_FS is not set 691 + # CONFIG_SYSV_FS is not set 692 + # CONFIG_UFS_FS is not set 693 + 694 + # 695 + # Partition Types 696 + # 697 + # CONFIG_PARTITION_ADVANCED is not set 698 + CONFIG_MSDOS_PARTITION=y 699 + 700 + # 701 + # Native Language Support 702 + # 703 + # CONFIG_NLS is not set 704 + 705 + # 706 + # Profiling support 707 + # 708 + # CONFIG_PROFILING is not set 709 + 710 + # 711 + # Kernel hacking 712 + # 713 + CONFIG_TRACE_IRQFLAGS_SUPPORT=y 714 + # CONFIG_PRINTK_TIME is not set 715 + # CONFIG_ENABLE_MUST_CHECK is not set 716 + # CONFIG_MAGIC_SYSRQ is not set 717 + # CONFIG_UNUSED_SYMBOLS is not set 718 + # CONFIG_DEBUG_KERNEL is not set 719 + CONFIG_LOG_BUF_SHIFT=14 720 + # CONFIG_DEBUG_BUGVERBOSE is not set 721 + # CONFIG_UNWIND_INFO is not set 722 + # CONFIG_HEADERS_CHECK is not set 723 + # CONFIG_SH_STANDARD_BIOS is not set 724 + # CONFIG_EARLY_SCIF_CONSOLE is not set 725 + # CONFIG_KGDB is not set 726 + 727 + # 728 + # Security options 729 + # 730 + # CONFIG_KEYS is not set 731 + 732 + # 733 + # Cryptographic options 734 + # 735 + # CONFIG_CRYPTO is not set 736 + 737 + # 738 + # Library routines 739 + # 740 + # CONFIG_CRC_CCITT is not set 741 + # CONFIG_CRC16 is not set 742 + CONFIG_CRC32=y 743 + # CONFIG_LIBCRC32C is not set 744 + CONFIG_ZLIB_INFLATE=y
+8 -5
arch/sh/drivers/push-switch.c
··· 14 14 #include <asm/push-switch.h> 15 15 16 16 #define DRV_NAME "push-switch" 17 - #define DRV_VERSION "0.1.0" 17 + #define DRV_VERSION "0.1.1" 18 18 19 19 static ssize_t switch_show(struct device *dev, 20 20 struct device_attribute *attr, ··· 32 32 schedule_work(&psw->work); 33 33 } 34 34 35 - static void switch_work_handler(void *data) 35 + static void switch_work_handler(struct work_struct *work) 36 36 { 37 - struct platform_device *pdev = data; 38 - struct push_switch *psw = platform_get_drvdata(pdev); 37 + struct push_switch *psw = container_of(work, struct push_switch, work); 38 + struct platform_device *pdev = psw->pdev; 39 39 40 40 psw->state = 0; 41 41 ··· 76 76 } 77 77 } 78 78 79 - INIT_WORK(&psw->work, switch_work_handler, pdev); 79 + INIT_WORK(&psw->work, switch_work_handler); 80 80 init_timer(&psw->debounce); 81 81 82 82 psw->debounce.function = switch_timer; 83 83 psw->debounce.data = (unsigned long)psw; 84 + 85 + /* Workqueue API brain-damage */ 86 + psw->pdev = pdev; 84 87 85 88 platform_set_drvdata(pdev, psw); 86 89
+1
arch/sh/kernel/cpu/Makefile
··· 6 6 obj-$(CONFIG_CPU_SH2A) = sh2a/ 7 7 obj-$(CONFIG_CPU_SH3) = sh3/ 8 8 obj-$(CONFIG_CPU_SH4) = sh4/ 9 + obj-$(CONFIG_CPU_SH4A) += sh4a/ 9 10 10 11 obj-$(CONFIG_UBC_WAKEUP) += ubc.o 11 12 obj-$(CONFIG_SH_ADC) += adc.o
+14 -18
arch/sh/kernel/cpu/sh2/entry.S
··· 177 177 7: .long do_IRQ 178 178 8: .long do_exception_error 179 179 180 - trap_entry: 181 - add #-0x10,r9 180 + trap_entry: 181 + /* verbose BUG trapa entry check */ 182 + mov #0x3e,r8 183 + cmp/ge r8,r9 184 + bf/s 1f 185 + add #-0x10,r9 186 + add #0x10,r9 187 + 1: 182 188 shll2 r9 ! TRA 183 189 mov #OFF_TRA,r8 184 190 add r15,r8 185 191 mov.l r9,@r8 186 192 mov r9,r8 187 193 #ifdef CONFIG_TRACE_IRQFLAGS 188 - mov.l 5f, r9 194 + mov.l 2f, r9 189 195 jsr @r9 190 196 nop 191 197 #endif ··· 200 194 nop 201 195 202 196 .align 2 203 - 1: .long syscall_exit 204 - 2: .long break_point_trap_software 205 - 3: .long NR_syscalls 206 - 4: .long sys_call_table 207 197 #ifdef CONFIG_TRACE_IRQFLAGS 208 - 5: .long trace_hardirqs_on 198 + 2: .long trace_hardirqs_on 209 199 #endif 210 200 211 201 #if defined(CONFIG_SH_STANDARD_BIOS) ··· 266 264 restore_all: 267 265 cli 268 266 #ifdef CONFIG_TRACE_IRQFLAGS 269 - mov.l 3f, r0 267 + mov.l 1f, r0 270 268 jsr @r0 271 269 nop 272 270 #endif ··· 311 309 mov.l @r15,r15 312 310 rte 313 311 nop 314 - 2: 315 - mov.l 1f,r8 316 - mov.l 2f,r9 317 - jmp @r9 318 - lds r8,pr 319 312 320 - .align 2 313 + #ifdef CONFIG_TRACE_IRQFLAGS 314 + 1: .long trace_hardirqs_off 315 + #endif 321 316 $current_thread_info: 322 317 .long __current_thread_info 323 318 $cpu_mode: 324 319 .long __cpu_mode 325 - #ifdef CONFIG_TRACE_IRQFLAGS 326 - 3: .long trace_hardirqs_off 327 - #endif 328 320 329 321 ! common exception handler 330 322 #include "../../entry-common.S"
+41
arch/sh/kernel/cpu/sh2/setup-sh7619.c
··· 51 51 ARRAY_SIZE(sh7619_devices)); 52 52 } 53 53 __initcall(sh7619_devices_setup); 54 + 55 + #define INTC_IPRC 0xf8080000UL 56 + #define INTC_IPRD 0xf8080002UL 57 + 58 + #define CMI0_IRQ 86 59 + 60 + #define SCIF0_ERI_IRQ 88 61 + #define SCIF0_RXI_IRQ 89 62 + #define SCIF0_BRI_IRQ 90 63 + #define SCIF0_TXI_IRQ 91 64 + 65 + #define SCIF1_ERI_IRQ 92 66 + #define SCIF1_RXI_IRQ 93 67 + #define SCIF1_BRI_IRQ 94 68 + #define SCIF1_TXI_IRQ 95 69 + 70 + #define SCIF2_BRI_IRQ 96 71 + #define SCIF2_ERI_IRQ 97 72 + #define SCIF2_RXI_IRQ 98 73 + #define SCIF2_TXI_IRQ 99 74 + 75 + static struct ipr_data sh7619_ipr_map[] = { 76 + { CMI0_IRQ, INTC_IPRC, 1, 2 }, 77 + { SCIF0_ERI_IRQ, INTC_IPRD, 3, 3 }, 78 + { SCIF0_RXI_IRQ, INTC_IPRD, 3, 3 }, 79 + { SCIF0_BRI_IRQ, INTC_IPRD, 3, 3 }, 80 + { SCIF0_TXI_IRQ, INTC_IPRD, 3, 3 }, 81 + { SCIF1_ERI_IRQ, INTC_IPRD, 2, 3 }, 82 + { SCIF1_RXI_IRQ, INTC_IPRD, 2, 3 }, 83 + { SCIF1_BRI_IRQ, INTC_IPRD, 2, 3 }, 84 + { SCIF1_TXI_IRQ, INTC_IPRD, 2, 3 }, 85 + { SCIF2_ERI_IRQ, INTC_IPRD, 1, 3 }, 86 + { SCIF2_RXI_IRQ, INTC_IPRD, 1, 3 }, 87 + { SCIF2_BRI_IRQ, INTC_IPRD, 1, 3 }, 88 + { SCIF2_TXI_IRQ, INTC_IPRD, 1, 3 }, 89 + }; 90 + 91 + void __init init_IRQ_ipr(void) 92 + { 93 + make_ipr_irq(sh7619_ipr_map, ARRAY_SIZE(sh7619_ipr_map)); 94 + }
+58 -4
arch/sh/kernel/cpu/sh2a/setup-sh7206.c
··· 17 17 .mapbase = 0xfffe8000, 18 18 .flags = UPF_BOOT_AUTOCONF, 19 19 .type = PORT_SCIF, 20 - .irqs = { 240, 241, 242, 243}, 20 + .irqs = { 241, 242, 243, 240}, 21 21 }, { 22 22 .mapbase = 0xfffe8800, 23 23 .flags = UPF_BOOT_AUTOCONF, 24 24 .type = PORT_SCIF, 25 - .irqs = { 244, 245, 246, 247}, 25 + .irqs = { 247, 244, 245, 246}, 26 26 }, { 27 27 .mapbase = 0xfffe9000, 28 28 .flags = UPF_BOOT_AUTOCONF, 29 29 .type = PORT_SCIF, 30 - .irqs = { 248, 249, 250, 251}, 30 + .irqs = { 249, 250, 251, 248}, 31 31 }, { 32 32 .mapbase = 0xfffe9800, 33 33 .flags = UPF_BOOT_AUTOCONF, 34 34 .type = PORT_SCIF, 35 - .irqs = { 252, 253, 254, 255}, 35 + .irqs = { 253, 254, 255, 252}, 36 36 }, { 37 37 .flags = 0, 38 38 } ··· 56 56 ARRAY_SIZE(sh7206_devices)); 57 57 } 58 58 __initcall(sh7206_devices_setup); 59 + 60 + #define INTC_IPR08 0xfffe0c04UL 61 + #define INTC_IPR09 0xfffe0c06UL 62 + #define INTC_IPR14 0xfffe0c10UL 63 + 64 + #define CMI0_IRQ 140 65 + 66 + #define MTU1_TGI1A 164 67 + 68 + #define SCIF0_BRI_IRQ 240 69 + #define SCIF0_ERI_IRQ 241 70 + #define SCIF0_RXI_IRQ 242 71 + #define SCIF0_TXI_IRQ 243 72 + 73 + #define SCIF1_BRI_IRQ 244 74 + #define SCIF1_ERI_IRQ 245 75 + #define SCIF1_RXI_IRQ 246 76 + #define SCIF1_TXI_IRQ 247 77 + 78 + #define SCIF2_BRI_IRQ 248 79 + #define SCIF2_ERI_IRQ 249 80 + #define SCIF2_RXI_IRQ 250 81 + #define SCIF2_TXI_IRQ 251 82 + 83 + #define SCIF3_BRI_IRQ 252 84 + #define SCIF3_ERI_IRQ 253 85 + #define SCIF3_RXI_IRQ 254 86 + #define SCIF3_TXI_IRQ 255 87 + 88 + static struct ipr_data sh7206_ipr_map[] = { 89 + { CMI0_IRQ, INTC_IPR08, 3, 2 }, 90 + { MTU2_TGI1A, INTC_IPR09, 1, 2 }, 91 + { SCIF0_ERI_IRQ, INTC_IPR14, 3, 3 }, 92 + { SCIF0_RXI_IRQ, INTC_IPR14, 3, 3 }, 93 + { SCIF0_BRI_IRQ, INTC_IPR14, 3, 3 }, 94 + { SCIF0_TXI_IRQ, INTC_IPR14, 3, 3 }, 95 + { SCIF1_ERI_IRQ, INTC_IPR14, 2, 3 }, 96 + { SCIF1_RXI_IRQ, INTC_IPR14, 2, 3 }, 97 + { SCIF1_BRI_IRQ, INTC_IPR14, 2, 3 }, 98 + { SCIF1_TXI_IRQ, INTC_IPR14, 2, 3 }, 99 + { SCIF2_ERI_IRQ, INTC_IPR14, 1, 3 }, 100 + { SCIF2_RXI_IRQ, INTC_IPR14, 1, 3 }, 101 + { SCIF2_BRI_IRQ, INTC_IPR14, 1, 3 }, 102 + { SCIF2_TXI_IRQ, INTC_IPR14, 1, 3 }, 103 + { SCIF3_ERI_IRQ, INTC_IPR14, 0, 3 }, 104 + { SCIF3_RXI_IRQ, INTC_IPR14, 0, 3 }, 105 + { SCIF3_BRI_IRQ, INTC_IPR14, 0, 3 }, 106 + { SCIF3_TXI_IRQ, INTC_IPR14, 0, 3 }, 107 + }; 108 + 109 + void __init init_IRQ_ipr(void) 110 + { 111 + make_ipr_irq(sh7206_ipr_map, ARRAY_SIZE(sh7206_ipr_map)); 112 + }
+2 -7
arch/sh/kernel/cpu/sh4/Makefile
··· 12 12 obj-$(CONFIG_CPU_SUBTYPE_SH7750) += setup-sh7750.o 13 13 obj-$(CONFIG_CPU_SUBTYPE_SH7751) += setup-sh7750.o 14 14 obj-$(CONFIG_CPU_SUBTYPE_SH7760) += setup-sh7760.o 15 - obj-$(CONFIG_CPU_SUBTYPE_SH7770) += setup-sh7770.o 16 - obj-$(CONFIG_CPU_SUBTYPE_SH7780) += setup-sh7780.o 17 - obj-$(CONFIG_CPU_SUBTYPE_SH73180) += setup-sh73180.o 18 - obj-$(CONFIG_CPU_SUBTYPE_SH7343) += setup-sh7343.o 19 15 obj-$(CONFIG_CPU_SUBTYPE_SH4_202) += setup-sh4-202.o 20 16 21 17 # Primary on-chip clocks (common) 18 + ifndef CONFIG_CPU_SH4A 22 19 clock-$(CONFIG_CPU_SH4) := clock-sh4.o 23 - clock-$(CONFIG_CPU_SUBTYPE_SH73180) := clock-sh73180.o 24 - clock-$(CONFIG_CPU_SUBTYPE_SH7770) := clock-sh7770.o 25 - clock-$(CONFIG_CPU_SUBTYPE_SH7780) := clock-sh7780.o 20 + endif 26 21 27 22 # Additional clocks by subtype 28 23 clock-$(CONFIG_CPU_SUBTYPE_SH4_202) += clock-sh4-202.o
arch/sh/kernel/cpu/sh4/clock-sh73180.c arch/sh/kernel/cpu/sh4a/clock-sh73180.c
arch/sh/kernel/cpu/sh4/clock-sh7770.c arch/sh/kernel/cpu/sh4a/clock-sh7770.c
arch/sh/kernel/cpu/sh4/clock-sh7780.c arch/sh/kernel/cpu/sh4a/clock-sh7780.c
+9
arch/sh/kernel/cpu/sh4/probe.c
··· 119 119 break; 120 120 case 0x3000: 121 121 case 0x3003: 122 + case 0x3009: 122 123 cpu_data->type = CPU_SH7343; 123 124 cpu_data->icache.ways = 4; 124 125 cpu_data->dcache.ways = 4; 125 126 cpu_data->flags |= CPU_HAS_LLSC; 127 + break; 128 + case 0x3008: 129 + if (prr == 0xa0) { 130 + cpu_data->type = CPU_SH7722; 131 + cpu_data->icache.ways = 4; 132 + cpu_data->dcache.ways = 4; 133 + cpu_data->flags |= CPU_HAS_LLSC; 134 + } 126 135 break; 127 136 case 0x8000: 128 137 cpu_data->type = CPU_ST40RA;
arch/sh/kernel/cpu/sh4/setup-sh73180.c arch/sh/kernel/cpu/sh4a/setup-sh73180.c
arch/sh/kernel/cpu/sh4/setup-sh7343.c arch/sh/kernel/cpu/sh4a/setup-sh7343.c
+31
arch/sh/kernel/cpu/sh4/setup-sh7750.c
··· 14 14 #include <linux/io.h> 15 15 #include <asm/sci.h> 16 16 17 + static struct resource rtc_resources[] = { 18 + [0] = { 19 + .start = 0xffc80000, 20 + .end = 0xffc80000 + 0x58 - 1, 21 + .flags = IORESOURCE_IO, 22 + }, 23 + [1] = { 24 + /* Period IRQ */ 25 + .start = 21, 26 + .flags = IORESOURCE_IRQ, 27 + }, 28 + [2] = { 29 + /* Carry IRQ */ 30 + .start = 22, 31 + .flags = IORESOURCE_IRQ, 32 + }, 33 + [3] = { 34 + /* Alarm IRQ */ 35 + .start = 20, 36 + .flags = IORESOURCE_IRQ, 37 + }, 38 + }; 39 + 40 + static struct platform_device rtc_device = { 41 + .name = "sh-rtc", 42 + .id = -1, 43 + .num_resources = ARRAY_SIZE(rtc_resources), 44 + .resource = rtc_resources, 45 + }; 46 + 17 47 static struct plat_sci_port sci_platform_data[] = { 18 48 { 19 49 .mapbase = 0xffe00000, ··· 69 39 }; 70 40 71 41 static struct platform_device *sh7750_devices[] __initdata = { 42 + &rtc_device, 72 43 &sci_device, 73 44 }; 74 45
arch/sh/kernel/cpu/sh4/setup-sh7770.c arch/sh/kernel/cpu/sh4a/setup-sh7770.c
arch/sh/kernel/cpu/sh4/setup-sh7780.c arch/sh/kernel/cpu/sh4a/setup-sh7780.c
+4 -3
arch/sh/kernel/cpu/sh4/sq.c
··· 111 111 112 112 vma->phys_addr = map->addr; 113 113 114 - if (remap_area_pages((unsigned long)vma->addr, vma->phys_addr, 115 - map->size, flags)) { 114 + if (ioremap_page_range((unsigned long)vma->addr, 115 + (unsigned long)vma->addr + map->size, 116 + vma->phys_addr, __pgprot(flags))) { 116 117 vunmap(vma->addr); 117 118 return -EAGAIN; 118 119 } ··· 177 176 178 177 map->sq_addr = P4SEG_STORE_QUE + (page << PAGE_SHIFT); 179 178 180 - ret = __sq_remap(map, flags); 179 + ret = __sq_remap(map, pgprot_val(PAGE_KERNEL_NOCACHE) | flags); 181 180 if (unlikely(ret != 0)) 182 181 goto out; 183 182
+19
arch/sh/kernel/cpu/sh4a/Makefile
··· 1 + # 2 + # Makefile for the Linux/SuperH SH-4 backends. 3 + # 4 + 5 + # CPU subtype setup 6 + obj-$(CONFIG_CPU_SUBTYPE_SH7770) += setup-sh7770.o 7 + obj-$(CONFIG_CPU_SUBTYPE_SH7780) += setup-sh7780.o 8 + obj-$(CONFIG_CPU_SUBTYPE_SH73180) += setup-sh73180.o 9 + obj-$(CONFIG_CPU_SUBTYPE_SH7343) += setup-sh7343.o 10 + obj-$(CONFIG_CPU_SUBTYPE_SH7722) += setup-sh7722.o 11 + 12 + # Primary on-chip clocks (common) 13 + clock-$(CONFIG_CPU_SUBTYPE_SH73180) := clock-sh73180.o 14 + clock-$(CONFIG_CPU_SUBTYPE_SH7770) := clock-sh7770.o 15 + clock-$(CONFIG_CPU_SUBTYPE_SH7780) := clock-sh7780.o 16 + clock-$(CONFIG_CPU_SUBTYPE_SH7343) := clock-sh7343.o 17 + clock-$(CONFIG_CPU_SUBTYPE_SH7722) := clock-sh7343.o 18 + 19 + obj-y += $(clock-y)
+99
arch/sh/kernel/cpu/sh4a/clock-sh7343.c
··· 1 + /* 2 + * arch/sh/kernel/cpu/sh4/clock-sh7343.c 3 + * 4 + * SH7343/SH7722 support for the clock framework 5 + * 6 + * Copyright (C) 2006 Paul Mundt 7 + * 8 + * This file is subject to the terms and conditions of the GNU General Public 9 + * License. See the file "COPYING" in the main directory of this archive 10 + * for more details. 11 + */ 12 + #include <linux/init.h> 13 + #include <linux/kernel.h> 14 + #include <linux/io.h> 15 + #include <asm/clock.h> 16 + #include <asm/freq.h> 17 + 18 + /* 19 + * SH7343/SH7722 uses a common set of multipliers and divisors, so this 20 + * is quite simple.. 21 + */ 22 + static int multipliers[] = { 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; 23 + static int divisors[] = { 1, 3, 2, 5, 3, 4, 5, 6, 8, 10, 12, 16, 20 }; 24 + 25 + #define pll_calc() (((ctrl_inl(FRQCR) >> 24) & 0x1f) + 1) 26 + 27 + static void master_clk_init(struct clk *clk) 28 + { 29 + clk->parent = clk_get(NULL, "cpu_clk"); 30 + } 31 + 32 + static void master_clk_recalc(struct clk *clk) 33 + { 34 + int idx = (ctrl_inl(FRQCR) & 0x000f); 35 + clk->rate *= clk->parent->rate * multipliers[idx] / divisors[idx]; 36 + } 37 + 38 + static struct clk_ops sh7343_master_clk_ops = { 39 + .init = master_clk_init, 40 + .recalc = master_clk_recalc, 41 + }; 42 + 43 + static void module_clk_init(struct clk *clk) 44 + { 45 + clk->parent = NULL; 46 + clk->rate = CONFIG_SH_PCLK_FREQ; 47 + } 48 + 49 + static struct clk_ops sh7343_module_clk_ops = { 50 + .init = module_clk_init, 51 + }; 52 + 53 + static void bus_clk_init(struct clk *clk) 54 + { 55 + clk->parent = clk_get(NULL, "cpu_clk"); 56 + } 57 + 58 + static void bus_clk_recalc(struct clk *clk) 59 + { 60 + int idx = (ctrl_inl(FRQCR) >> 8) & 0x000f; 61 + clk->rate = clk->parent->rate * multipliers[idx] / divisors[idx]; 62 + } 63 + 64 + static struct clk_ops sh7343_bus_clk_ops = { 65 + .init = bus_clk_init, 66 + .recalc = bus_clk_recalc, 67 + }; 68 + 69 + static void cpu_clk_init(struct clk *clk) 70 + { 71 + clk->parent = clk_get(NULL, "module_clk"); 72 + clk->flags |= CLK_RATE_PROPAGATES; 73 + clk_set_rate(clk, clk_get_rate(clk)); 74 + } 75 + 76 + static void cpu_clk_recalc(struct clk *clk) 77 + { 78 + int idx = (ctrl_inl(FRQCR) >> 20) & 0x000f; 79 + clk->rate = clk->parent->rate * pll_calc() * 80 + multipliers[idx] / divisors[idx]; 81 + } 82 + 83 + static struct clk_ops sh7343_cpu_clk_ops = { 84 + .init = cpu_clk_init, 85 + .recalc = cpu_clk_recalc, 86 + }; 87 + 88 + static struct clk_ops *sh7343_clk_ops[] = { 89 + &sh7343_master_clk_ops, 90 + &sh7343_module_clk_ops, 91 + &sh7343_bus_clk_ops, 92 + &sh7343_cpu_clk_ops, 93 + }; 94 + 95 + void __init arch_init_clk_ops(struct clk_ops **ops, int idx) 96 + { 97 + if (idx < ARRAY_SIZE(sh7343_clk_ops)) 98 + *ops = sh7343_clk_ops[idx]; 99 + }
+80
arch/sh/kernel/cpu/sh4a/setup-sh7722.c
··· 1 + /* 2 + * SH7722 Setup 3 + * 4 + * Copyright (C) 2006 Paul Mundt 5 + * 6 + * This file is subject to the terms and conditions of the GNU General Public 7 + * License. See the file "COPYING" in the main directory of this archive 8 + * for more details. 9 + */ 10 + #include <linux/platform_device.h> 11 + #include <linux/init.h> 12 + #include <linux/serial.h> 13 + #include <asm/sci.h> 14 + 15 + static struct plat_sci_port sci_platform_data[] = { 16 + { 17 + .mapbase = 0xffe00000, 18 + .flags = UPF_BOOT_AUTOCONF, 19 + .type = PORT_SCIF, 20 + .irqs = { 80, 81, 83, 82 }, 21 + }, { 22 + .flags = 0, 23 + } 24 + }; 25 + 26 + static struct platform_device sci_device = { 27 + .name = "sh-sci", 28 + .id = -1, 29 + .dev = { 30 + .platform_data = sci_platform_data, 31 + }, 32 + }; 33 + 34 + static struct platform_device *sh7722_devices[] __initdata = { 35 + &sci_device, 36 + }; 37 + 38 + static int __init sh7722_devices_setup(void) 39 + { 40 + return platform_add_devices(sh7722_devices, 41 + ARRAY_SIZE(sh7722_devices)); 42 + } 43 + __initcall(sh7722_devices_setup); 44 + 45 + static struct ipr_data sh7722_ipr_map[] = { 46 + /* IRQ, IPR-idx, shift, prio */ 47 + { 16, 0, 12, 2 }, /* TMU0 */ 48 + { 17, 0, 8, 2 }, /* TMU1 */ 49 + { 80, 6, 12, 3 }, /* SCIF ERI */ 50 + { 81, 6, 12, 3 }, /* SCIF RXI */ 51 + { 82, 6, 12, 3 }, /* SCIF BRI */ 52 + { 83, 6, 12, 3 }, /* SCIF TXI */ 53 + }; 54 + 55 + static unsigned long ipr_offsets[] = { 56 + 0xa4080000, /* 0: IPRA */ 57 + 0xa4080004, /* 1: IPRB */ 58 + 0xa4080008, /* 2: IPRC */ 59 + 0xa408000c, /* 3: IPRD */ 60 + 0xa4080010, /* 4: IPRE */ 61 + 0xa4080014, /* 5: IPRF */ 62 + 0xa4080018, /* 6: IPRG */ 63 + 0xa408001c, /* 7: IPRH */ 64 + 0xa4080020, /* 8: IPRI */ 65 + 0xa4080024, /* 9: IPRJ */ 66 + 0xa4080028, /* 10: IPRK */ 67 + 0xa408002c, /* 11: IPRL */ 68 + }; 69 + 70 + unsigned int map_ipridx_to_addr(int idx) 71 + { 72 + if (unlikely(idx >= ARRAY_SIZE(ipr_offsets))) 73 + return 0; 74 + return ipr_offsets[idx]; 75 + } 76 + 77 + void __init init_IRQ_ipr(void) 78 + { 79 + make_ipr_irq(sh7722_ipr_map, ARRAY_SIZE(sh7722_ipr_map)); 80 + }
+11 -9
arch/sh/kernel/early_printk.c
··· 144 144 ; 145 145 146 146 static int __initdata keep_early; 147 + static int early_console_initialized; 147 148 148 - int __init setup_early_printk(char *opt) 149 + int __init setup_early_printk(char *buf) 149 150 { 150 - char *space; 151 - char buf[256]; 151 + if (!buf) 152 + return 0; 152 153 153 - strlcpy(buf, opt, sizeof(buf)); 154 - space = strchr(buf, ' '); 155 - if (space) 156 - *space = 0; 154 + if (early_console_initialized) 155 + return 0; 156 + early_console_initialized = 1; 157 157 158 158 if (strstr(buf, "keep")) 159 159 keep_early = 1; ··· 175 175 if (likely(early_console)) 176 176 register_console(early_console); 177 177 178 - return 1; 178 + return 0; 179 179 } 180 - __setup("earlyprintk=", setup_early_printk); 180 + early_param("earlyprintk", setup_early_printk); 181 181 182 182 void __init disable_early_printk(void) 183 183 { 184 + if (!early_console_initialized || !early_console) 185 + return; 184 186 if (!keep_early) { 185 187 printk("disabling early console\n"); 186 188 unregister_console(early_console);
+13 -2
arch/sh/kernel/entry-common.S
··· 79 79 .align 2 80 80 3: .long kgdb_handle_exception 81 81 #endif /* CONFIG_SH_KGDB */ 82 - 82 + #ifdef CONFIG_SH_STANDARD_BIOS 83 + bra debug_kernel_fw 84 + nop 85 + #endif 83 86 #endif /* CONFIG_SH_STANDARD_BIOS || CONFIG_SH_KGDB */ 84 - 85 87 86 88 .align 2 87 89 debug_trap: 88 90 #if defined(CONFIG_SH_STANDARD_BIOS) || defined(CONFIG_SH_KGDB) 91 + mov r8, r0 92 + shlr2 r0 93 + cmp/eq #0x3f, r0 ! sh_bios() trap 94 + bf 1f 95 + #ifdef CONFIG_SH_KGDB 96 + cmp/eq #0xff, r0 ! XXX: KGDB trap, fix for SH-2. 97 + bf 1f 98 + #endif 89 99 mov #OFF_SR, r0 90 100 mov.l @(r0,r15), r0 ! get status register 91 101 shll r0 92 102 shll r0 ! kernel space? 93 103 bt/s debug_kernel 104 + 1: 94 105 #endif 95 106 mov.l @r15, r0 ! Restore R0 value 96 107 mov.l 1f, r8
+2 -1
arch/sh/kernel/head.S
··· 33 33 .long 0x00360000 /* INITRD_START */ 34 34 .long 0x000a0000 /* INITRD_SIZE */ 35 35 .long 0 36 - .balign PAGE_SIZE,0,PAGE_SIZE 36 + 1: 37 + .skip PAGE_SIZE - empty_zero_page - 1b 37 38 38 39 .text 39 40 /*
+13 -2
arch/sh/kernel/process.c
··· 470 470 */ 471 471 pc = thread_saved_pc(p); 472 472 if (in_sched_functions(pc)) { 473 - schedule_frame = ((unsigned long *)(long)p->thread.sp)[1]; 474 - return (unsigned long)((unsigned long *)schedule_frame)[1]; 473 + schedule_frame = (unsigned long)p->thread.sp; 474 + return ((unsigned long *)schedule_frame)[21]; 475 475 } 476 + 476 477 return pc; 477 478 } 478 479 ··· 499 498 { 500 499 struct pt_regs *regs = RELOC_HIDE(&__regs, 0); 501 500 501 + /* Rewind */ 502 502 regs->pc -= 2; 503 + 504 + #ifdef CONFIG_BUG 505 + if (__kernel_text_address(instruction_pointer(regs))) { 506 + u16 insn = *(u16 *)instruction_pointer(regs); 507 + if (insn == TRAPA_BUG_OPCODE) 508 + handle_BUG(regs); 509 + } 510 + #endif 511 + 503 512 force_sig(SIGTRAP, current); 504 513 }
+14 -27
arch/sh/kernel/setup.c
··· 84 84 85 85 static inline void parse_cmdline (char ** cmdline_p, char mv_name[MV_NAME_SIZE], 86 86 struct sh_machine_vector** mvp, 87 - unsigned long *mv_io_base, 88 - int *mv_mmio_enable) 87 + unsigned long *mv_io_base) 89 88 { 90 89 char c = ' ', *to = command_line, *from = COMMAND_LINE; 91 90 int len = 0; ··· 111 112 } 112 113 } 113 114 114 - #ifdef CONFIG_EARLY_PRINTK 115 - if (c == ' ' && !memcmp(from, "earlyprintk=", 12)) { 116 - char *ep_end; 117 - 118 - if (to != command_line) 119 - to--; 120 - 121 - from += 12; 122 - ep_end = strchr(from, ' '); 123 - 124 - setup_early_printk(from); 125 - printk("early console enabled\n"); 126 - 127 - from = ep_end; 128 - } 129 - #endif 130 - 131 115 if (c == ' ' && !memcmp(from, "sh_mv=", 6)) { 132 116 char* mv_end; 133 117 char* mv_comma; ··· 127 145 int ints[3]; 128 146 get_options(mv_comma+1, ARRAY_SIZE(ints), ints); 129 147 *mv_io_base = ints[1]; 130 - *mv_mmio_enable = ints[2]; 131 148 mv_len = mv_comma - from; 132 149 } else { 133 150 mv_len = mv_end - from; ··· 139 158 140 159 *mvp = get_mv_byname(mv_name); 141 160 } 161 + 142 162 c = *(from++); 143 163 if (!c) 144 164 break; ··· 159 177 struct sh_machine_vector *mv = NULL; 160 178 char mv_name[MV_NAME_SIZE] = ""; 161 179 unsigned long mv_io_base = 0; 162 - int mv_mmio_enable = 0; 163 180 164 - parse_cmdline(cmdline_p, mv_name, &mv, &mv_io_base, &mv_mmio_enable); 181 + parse_cmdline(cmdline_p, mv_name, &mv, &mv_io_base); 165 182 166 183 #ifdef CONFIG_SH_UNKNOWN 167 184 if (mv == NULL) { ··· 239 258 240 259 sh_mv_setup(cmdline_p); 241 260 261 + 242 262 /* 243 263 * Find the highest page frame number we have available 244 264 */ ··· 287 305 PFN_PHYS(pages)); 288 306 } 289 307 308 + 290 309 /* 291 310 * Reserve the kernel text and 292 311 * Reserve the bootmem bitmap. We do this in two steps (first step ··· 308 325 ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0); 309 326 if (&__rd_start != &__rd_end) { 310 327 LOADER_TYPE = 1; 311 - INITRD_START = PHYSADDR((unsigned long)&__rd_start) - __MEMORY_START; 312 - INITRD_SIZE = (unsigned long)&__rd_end - (unsigned long)&__rd_start; 328 + INITRD_START = PHYSADDR((unsigned long)&__rd_start) - 329 + __MEMORY_START; 330 + INITRD_SIZE = (unsigned long)&__rd_end - 331 + (unsigned long)&__rd_start; 313 332 } 314 333 315 334 if (LOADER_TYPE && INITRD_START) { 316 335 if (INITRD_START + INITRD_SIZE <= (max_low_pfn << PAGE_SHIFT)) { 317 - reserve_bootmem_node(NODE_DATA(0), INITRD_START+__MEMORY_START, INITRD_SIZE); 318 - initrd_start = INITRD_START + PAGE_OFFSET + __MEMORY_START; 336 + reserve_bootmem_node(NODE_DATA(0), INITRD_START + 337 + __MEMORY_START, INITRD_SIZE); 338 + initrd_start = INITRD_START + PAGE_OFFSET + 339 + __MEMORY_START; 319 340 initrd_end = initrd_start + INITRD_SIZE; 320 341 } else { 321 342 printk("initrd extends beyond end of memory " ··· 391 404 [CPU_SH4_202] = "SH4-202", [CPU_SH4_501] = "SH4-501", 392 405 [CPU_SH7770] = "SH7770", [CPU_SH7780] = "SH7780", 393 406 [CPU_SH7781] = "SH7781", [CPU_SH7343] = "SH7343", 394 - [CPU_SH7785] = "SH7785", 407 + [CPU_SH7785] = "SH7785", [CPU_SH7722] = "SH7722", 395 408 [CPU_SH_NONE] = "Unknown" 396 409 }; 397 410
+14 -1
arch/sh/kernel/sh_ksyms.c
··· 70 70 DECLARE_EXPORT(__ashrdi3); 71 71 DECLARE_EXPORT(__ashldi3); 72 72 DECLARE_EXPORT(__lshrdi3); 73 - DECLARE_EXPORT(__movstr); 74 73 DECLARE_EXPORT(__movstrSI16); 74 + #if __GNUC__ == 4 75 + DECLARE_EXPORT(__movmem); 76 + #else 77 + DECLARE_EXPORT(__movstr); 78 + #endif 75 79 76 80 #ifdef CONFIG_CPU_SH4 81 + #if __GNUC__ == 4 82 + DECLARE_EXPORT(__movmem_i4_even); 83 + DECLARE_EXPORT(__movmem_i4_odd); 84 + DECLARE_EXPORT(__movmemSI12_i4); 85 + DECLARE_EXPORT(__sdivsi3_i4i); 86 + DECLARE_EXPORT(__udiv_qrnnd_16); 87 + DECLARE_EXPORT(__udivsi3_i4i); 88 + #else /* GCC 3.x */ 77 89 DECLARE_EXPORT(__movstr_i4_even); 78 90 DECLARE_EXPORT(__movstr_i4_odd); 79 91 DECLARE_EXPORT(__movstrSI12_i4); 92 + #endif /* __GNUC__ == 4 */ 80 93 #endif 81 94 82 95 #if defined(CONFIG_CPU_SH4) || defined(CONFIG_SH7705_CACHE_32KB)
+1 -1
arch/sh/kernel/signal.c
··· 101 101 */ 102 102 103 103 #define MOVW(n) (0x9300|((n)-2)) /* Move mem word at PC+n to R3 */ 104 - #if defined(CONFIG_CPU_SH2) || defined(CONFIG_CPU_SH2A) 104 + #if defined(CONFIG_CPU_SH2) 105 105 #define TRAP_NOARG 0xc320 /* Syscall w/no args (NR in R3) */ 106 106 #else 107 107 #define TRAP_NOARG 0xc310 /* Syscall w/no args (NR in R3) */
+7 -1
arch/sh/kernel/sys_sh.c
··· 314 314 #endif 315 315 } 316 316 317 + #if defined(CONFIG_CPU_SH2) || defined(CONFIG_CPU_SH2A) 318 + #define SYSCALL_ARG3 "trapa #0x23" 319 + #else 320 + #define SYSCALL_ARG3 "trapa #0x13" 321 + #endif 322 + 317 323 /* 318 324 * Do a system call from kernel instead of calling sys_execve so we 319 325 * end up with proper pt_regs. ··· 330 324 register long __sc4 __asm__ ("r4") = (long) filename; 331 325 register long __sc5 __asm__ ("r5") = (long) argv; 332 326 register long __sc6 __asm__ ("r6") = (long) envp; 333 - __asm__ __volatile__ ("trapa #0x13" : "=z" (__sc0) 327 + __asm__ __volatile__ (SYSCALL_ARG3 : "=z" (__sc0) 334 328 : "0" (__sc0), "r" (__sc4), "r" (__sc5), "r" (__sc6) 335 329 : "memory"); 336 330 return __sc0;
+35
arch/sh/kernel/traps.c
··· 19 19 #include <linux/kallsyms.h> 20 20 #include <linux/io.h> 21 21 #include <linux/debug_locks.h> 22 + #include <linux/limits.h> 22 23 #include <asm/system.h> 23 24 #include <asm/uaccess.h> 24 25 ··· 128 127 die(str, regs, err); 129 128 } 130 129 return -EFAULT; 130 + } 131 + 132 + #ifdef CONFIG_BUG 133 + #ifdef CONFIG_DEBUG_BUGVERBOSE 134 + static inline void do_bug_verbose(struct pt_regs *regs) 135 + { 136 + struct bug_frame f; 137 + long len; 138 + 139 + if (__copy_from_user(&f, (const void __user *)regs->pc, 140 + sizeof(struct bug_frame))) 141 + return; 142 + 143 + len = __strnlen_user(f.file, PATH_MAX) - 1; 144 + if (unlikely(len < 0 || len >= PATH_MAX)) 145 + f.file = "<bad filename>"; 146 + len = __strnlen_user(f.func, PATH_MAX) - 1; 147 + if (unlikely(len < 0 || len >= PATH_MAX)) 148 + f.func = "<bad function>"; 149 + 150 + printk(KERN_ALERT "kernel BUG in %s() at %s:%d!\n", 151 + f.func, f.file, f.line); 152 + } 153 + #else 154 + static inline void do_bug_verbose(struct pt_regs *regs) 155 + { 156 + } 157 + #endif /* CONFIG_DEBUG_BUGVERBOSE */ 158 + #endif /* CONFIG_BUG */ 159 + 160 + void handle_BUG(struct pt_regs *regs) 161 + { 162 + do_bug_verbose(regs); 163 + die("Kernel BUG", regs, TRAPA_BUG_OPCODE & 0xff); 131 164 } 132 165 133 166 /*
+1 -1
arch/sh/kernel/vmlinux.lds.S
··· 51 51 } 52 52 53 53 . = ALIGN(PAGE_SIZE); 54 - .data.page_aligned : { *(.data.idt) } 54 + .data.page_aligned : { *(.data.page_aligned) } 55 55 56 56 . = ALIGN(32); 57 57 __per_cpu_start = .;
+11 -1
arch/sh/mm/Kconfig
··· 35 35 select CPU_SH4 36 36 select CPU_HAS_INTC2_IRQ 37 37 38 + config CPU_SHX2 39 + bool 40 + 38 41 # 39 42 # Processor subtypes 40 43 # ··· 183 180 config CPU_SUBTYPE_SH7785 184 181 bool "Support SH7785 processor" 185 182 select CPU_SH4A 183 + select CPU_SHX2 186 184 select CPU_HAS_INTC2_IRQ 187 185 188 186 comment "SH4AL-DSP Processor Support" ··· 195 191 config CPU_SUBTYPE_SH7343 196 192 bool "Support SH7343 processor" 197 193 select CPU_SH4AL_DSP 194 + 195 + config CPU_SUBTYPE_SH7722 196 + bool "Support SH7722 processor" 197 + select CPU_SH4AL_DSP 198 + select CPU_SHX2 199 + select CPU_HAS_IPR_IRQ 198 200 199 201 endmenu 200 202 ··· 260 250 261 251 config X2TLB 262 252 bool "Enable extended TLB mode" 263 - depends on CPU_SUBTYPE_SH7785 && MMU && EXPERIMENTAL 253 + depends on CPU_SHX2 && MMU && EXPERIMENTAL 264 254 help 265 255 Selecting this option will enable the extended mode of the SH-X2 266 256 TLB. For legacy SH-X behaviour and interoperability, say N. For
+1 -1
arch/sh/mm/cache-sh4.c
··· 107 107 108 108 emit_cache_params(); 109 109 110 - if (remap_area_pages(P3SEG, 0, PAGE_SIZE * 4, _PAGE_CACHABLE)) 110 + if (ioremap_page_range(P3SEG, P3SEG + (PAGE_SIZE * 4), 0, PAGE_KERNEL)) 111 111 panic("%s failed.", __FUNCTION__); 112 112 113 113 for (i = 0; i < cpu_data->dcache.n_aliases; i++)
+2
arch/sh/mm/init.c
··· 77 77 printk("%d pages swap cached\n",cached); 78 78 } 79 79 80 + #ifdef CONFIG_MMU 80 81 static void set_pte_phys(unsigned long addr, unsigned long phys, pgprot_t prot) 81 82 { 82 83 pgd_t *pgd; ··· 140 139 141 140 set_pte_phys(address, phys, prot); 142 141 } 142 + #endif /* CONFIG_MMU */ 143 143 144 144 /* References to section boundaries */ 145 145
+211 -34
drivers/rtc/rtc-sh.c
··· 2 2 * SuperH On-Chip RTC Support 3 3 * 4 4 * Copyright (C) 2006 Paul Mundt 5 + * Copyright (C) 2006 Jamie Lenehan 5 6 * 6 7 * Based on the old arch/sh/kernel/cpu/rtc.c by: 7 8 * ··· 22 21 #include <linux/seq_file.h> 23 22 #include <linux/interrupt.h> 24 23 #include <linux/spinlock.h> 25 - #include <asm/io.h> 24 + #include <linux/io.h> 25 + 26 + #define DRV_NAME "sh-rtc" 27 + #define DRV_VERSION "0.1.2" 26 28 27 29 #ifdef CONFIG_CPU_SH3 28 30 #define rtc_reg_size sizeof(u16) ··· 37 33 38 34 #define RTC_REG(r) ((r) * rtc_reg_size) 39 35 40 - #define R64CNT RTC_REG(0) 41 - #define RSECCNT RTC_REG(1) 42 - #define RMINCNT RTC_REG(2) 43 - #define RHRCNT RTC_REG(3) 44 - #define RWKCNT RTC_REG(4) 45 - #define RDAYCNT RTC_REG(5) 46 - #define RMONCNT RTC_REG(6) 47 - #define RYRCNT RTC_REG(7) 48 - #define RSECAR RTC_REG(8) 49 - #define RMINAR RTC_REG(9) 50 - #define RHRAR RTC_REG(10) 51 - #define RWKAR RTC_REG(11) 52 - #define RDAYAR RTC_REG(12) 53 - #define RMONAR RTC_REG(13) 54 - #define RCR1 RTC_REG(14) 55 - #define RCR2 RTC_REG(15) 36 + #define R64CNT RTC_REG(0) 37 + 38 + #define RSECCNT RTC_REG(1) /* RTC sec */ 39 + #define RMINCNT RTC_REG(2) /* RTC min */ 40 + #define RHRCNT RTC_REG(3) /* RTC hour */ 41 + #define RWKCNT RTC_REG(4) /* RTC week */ 42 + #define RDAYCNT RTC_REG(5) /* RTC day */ 43 + #define RMONCNT RTC_REG(6) /* RTC month */ 44 + #define RYRCNT RTC_REG(7) /* RTC year */ 45 + #define RSECAR RTC_REG(8) /* ALARM sec */ 46 + #define RMINAR RTC_REG(9) /* ALARM min */ 47 + #define RHRAR RTC_REG(10) /* ALARM hour */ 48 + #define RWKAR RTC_REG(11) /* ALARM week */ 49 + #define RDAYAR RTC_REG(12) /* ALARM day */ 50 + #define RMONAR RTC_REG(13) /* ALARM month */ 51 + #define RCR1 RTC_REG(14) /* Control */ 52 + #define RCR2 RTC_REG(15) /* Control */ 53 + 54 + /* ALARM Bits - or with BCD encoded value */ 55 + #define AR_ENB 0x80 /* Enable for alarm cmp */ 56 56 57 57 /* RCR1 Bits */ 58 58 #define RCR1_CF 0x80 /* Carry Flag */ ··· 79 71 unsigned int alarm_irq, periodic_irq, carry_irq; 80 72 struct rtc_device *rtc_dev; 81 73 spinlock_t lock; 74 + int rearm_aie; 82 75 }; 83 76 84 - static irqreturn_t sh_rtc_interrupt(int irq, void *id) 77 + static irqreturn_t sh_rtc_interrupt(int irq, void *dev_id) 85 78 { 86 - struct platform_device *pdev = id; 79 + struct platform_device *pdev = to_platform_device(dev_id); 87 80 struct sh_rtc *rtc = platform_get_drvdata(pdev); 88 81 unsigned int tmp, events = 0; 89 82 90 83 spin_lock(&rtc->lock); 91 84 92 85 tmp = readb(rtc->regbase + RCR1); 86 + tmp &= ~RCR1_CF; 93 87 94 - if (tmp & RCR1_AF) 95 - events |= RTC_AF | RTC_IRQF; 96 - 97 - tmp &= ~(RCR1_CF | RCR1_AF); 88 + if (rtc->rearm_aie) { 89 + if (tmp & RCR1_AF) 90 + tmp &= ~RCR1_AF; /* try to clear AF again */ 91 + else { 92 + tmp |= RCR1_AIE; /* AF has cleared, rearm IRQ */ 93 + rtc->rearm_aie = 0; 94 + } 95 + } 98 96 99 97 writeb(tmp, rtc->regbase + RCR1); 100 98 ··· 111 97 return IRQ_HANDLED; 112 98 } 113 99 114 - static irqreturn_t sh_rtc_periodic(int irq, void *id) 100 + static irqreturn_t sh_rtc_alarm(int irq, void *dev_id) 115 101 { 116 - struct sh_rtc *rtc = dev_get_drvdata(id); 102 + struct platform_device *pdev = to_platform_device(dev_id); 103 + struct sh_rtc *rtc = platform_get_drvdata(pdev); 104 + unsigned int tmp, events = 0; 105 + 106 + spin_lock(&rtc->lock); 107 + 108 + tmp = readb(rtc->regbase + RCR1); 109 + 110 + /* 111 + * If AF is set then the alarm has triggered. If we clear AF while 112 + * the alarm time still matches the RTC time then AF will 113 + * immediately be set again, and if AIE is enabled then the alarm 114 + * interrupt will immediately be retrigger. So we clear AIE here 115 + * and use rtc->rearm_aie so that the carry interrupt will keep 116 + * trying to clear AF and once it stays cleared it'll re-enable 117 + * AIE. 118 + */ 119 + if (tmp & RCR1_AF) { 120 + events |= RTC_AF | RTC_IRQF; 121 + 122 + tmp &= ~(RCR1_AF|RCR1_AIE); 123 + 124 + writeb(tmp, rtc->regbase + RCR1); 125 + 126 + rtc->rearm_aie = 1; 127 + 128 + rtc_update_irq(&rtc->rtc_dev->class_dev, 1, events); 129 + } 130 + 131 + spin_unlock(&rtc->lock); 132 + return IRQ_HANDLED; 133 + } 134 + 135 + static irqreturn_t sh_rtc_periodic(int irq, void *dev_id) 136 + { 137 + struct platform_device *pdev = to_platform_device(dev_id); 138 + struct sh_rtc *rtc = platform_get_drvdata(pdev); 117 139 118 140 spin_lock(&rtc->lock); 119 141 ··· 189 139 190 140 tmp = readb(rtc->regbase + RCR1); 191 141 192 - if (enable) 193 - tmp |= RCR1_AIE; 194 - else 142 + if (!enable) { 195 143 tmp &= ~RCR1_AIE; 144 + rtc->rearm_aie = 0; 145 + } else if (rtc->rearm_aie == 0) 146 + tmp |= RCR1_AIE; 196 147 197 148 writeb(tmp, rtc->regbase + RCR1); 198 149 ··· 228 177 goto err_bad_carry; 229 178 } 230 179 231 - ret = request_irq(rtc->alarm_irq, sh_rtc_interrupt, IRQF_DISABLED, 180 + ret = request_irq(rtc->alarm_irq, sh_rtc_alarm, IRQF_DISABLED, 232 181 "sh-rtc alarm", dev); 233 182 if (unlikely(ret)) { 234 183 dev_err(dev, "request alarm IRQ failed with %d, IRQ %d\n", ··· 251 200 struct sh_rtc *rtc = dev_get_drvdata(dev); 252 201 253 202 sh_rtc_setpie(dev, 0); 203 + sh_rtc_setaie(dev, 0); 254 204 255 205 free_irq(rtc->periodic_irq, dev); 256 206 free_irq(rtc->carry_irq, dev); ··· 319 267 tm->tm_hour = BCD2BIN(readb(rtc->regbase + RHRCNT)); 320 268 tm->tm_wday = BCD2BIN(readb(rtc->regbase + RWKCNT)); 321 269 tm->tm_mday = BCD2BIN(readb(rtc->regbase + RDAYCNT)); 322 - tm->tm_mon = BCD2BIN(readb(rtc->regbase + RMONCNT)); 270 + tm->tm_mon = BCD2BIN(readb(rtc->regbase + RMONCNT)) - 1; 323 271 324 272 #if defined(CONFIG_CPU_SH4) 325 273 yr = readw(rtc->regbase + RYRCNT); ··· 347 295 "mday=%d, mon=%d, year=%d, wday=%d\n", 348 296 __FUNCTION__, 349 297 tm->tm_sec, tm->tm_min, tm->tm_hour, 350 - tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday); 298 + tm->tm_mday, tm->tm_mon + 1, tm->tm_year, tm->tm_wday); 351 299 352 300 if (rtc_valid_tm(tm) < 0) 353 301 dev_err(dev, "invalid date\n"); ··· 374 322 writeb(BIN2BCD(tm->tm_hour), rtc->regbase + RHRCNT); 375 323 writeb(BIN2BCD(tm->tm_wday), rtc->regbase + RWKCNT); 376 324 writeb(BIN2BCD(tm->tm_mday), rtc->regbase + RDAYCNT); 377 - writeb(BIN2BCD(tm->tm_mon), rtc->regbase + RMONCNT); 325 + writeb(BIN2BCD(tm->tm_mon + 1), rtc->regbase + RMONCNT); 378 326 379 327 #ifdef CONFIG_CPU_SH3 380 328 year = tm->tm_year % 100; ··· 396 344 return 0; 397 345 } 398 346 347 + static inline int sh_rtc_read_alarm_value(struct sh_rtc *rtc, int reg_off) 348 + { 349 + unsigned int byte; 350 + int value = 0xff; /* return 0xff for ignored values */ 351 + 352 + byte = readb(rtc->regbase + reg_off); 353 + if (byte & AR_ENB) { 354 + byte &= ~AR_ENB; /* strip the enable bit */ 355 + value = BCD2BIN(byte); 356 + } 357 + 358 + return value; 359 + } 360 + 361 + static int sh_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *wkalrm) 362 + { 363 + struct platform_device *pdev = to_platform_device(dev); 364 + struct sh_rtc *rtc = platform_get_drvdata(pdev); 365 + struct rtc_time* tm = &wkalrm->time; 366 + 367 + spin_lock_irq(&rtc->lock); 368 + 369 + tm->tm_sec = sh_rtc_read_alarm_value(rtc, RSECAR); 370 + tm->tm_min = sh_rtc_read_alarm_value(rtc, RMINAR); 371 + tm->tm_hour = sh_rtc_read_alarm_value(rtc, RHRAR); 372 + tm->tm_wday = sh_rtc_read_alarm_value(rtc, RWKAR); 373 + tm->tm_mday = sh_rtc_read_alarm_value(rtc, RDAYAR); 374 + tm->tm_mon = sh_rtc_read_alarm_value(rtc, RMONAR); 375 + if (tm->tm_mon > 0) 376 + tm->tm_mon -= 1; /* RTC is 1-12, tm_mon is 0-11 */ 377 + tm->tm_year = 0xffff; 378 + 379 + spin_unlock_irq(&rtc->lock); 380 + 381 + return 0; 382 + } 383 + 384 + static inline void sh_rtc_write_alarm_value(struct sh_rtc *rtc, 385 + int value, int reg_off) 386 + { 387 + /* < 0 for a value that is ignored */ 388 + if (value < 0) 389 + writeb(0, rtc->regbase + reg_off); 390 + else 391 + writeb(BIN2BCD(value) | AR_ENB, rtc->regbase + reg_off); 392 + } 393 + 394 + static int sh_rtc_check_alarm(struct rtc_time* tm) 395 + { 396 + /* 397 + * The original rtc says anything > 0xc0 is "don't care" or "match 398 + * all" - most users use 0xff but rtc-dev uses -1 for the same thing. 399 + * The original rtc doesn't support years - some things use -1 and 400 + * some 0xffff. We use -1 to make out tests easier. 401 + */ 402 + if (tm->tm_year == 0xffff) 403 + tm->tm_year = -1; 404 + if (tm->tm_mon >= 0xff) 405 + tm->tm_mon = -1; 406 + if (tm->tm_mday >= 0xff) 407 + tm->tm_mday = -1; 408 + if (tm->tm_wday >= 0xff) 409 + tm->tm_wday = -1; 410 + if (tm->tm_hour >= 0xff) 411 + tm->tm_hour = -1; 412 + if (tm->tm_min >= 0xff) 413 + tm->tm_min = -1; 414 + if (tm->tm_sec >= 0xff) 415 + tm->tm_sec = -1; 416 + 417 + if (tm->tm_year > 9999 || 418 + tm->tm_mon >= 12 || 419 + tm->tm_mday == 0 || tm->tm_mday >= 32 || 420 + tm->tm_wday >= 7 || 421 + tm->tm_hour >= 24 || 422 + tm->tm_min >= 60 || 423 + tm->tm_sec >= 60) 424 + return -EINVAL; 425 + 426 + return 0; 427 + } 428 + 429 + static int sh_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *wkalrm) 430 + { 431 + struct platform_device *pdev = to_platform_device(dev); 432 + struct sh_rtc *rtc = platform_get_drvdata(pdev); 433 + unsigned int rcr1; 434 + struct rtc_time *tm = &wkalrm->time; 435 + int mon, err; 436 + 437 + err = sh_rtc_check_alarm(tm); 438 + if (unlikely(err < 0)) 439 + return err; 440 + 441 + spin_lock_irq(&rtc->lock); 442 + 443 + /* disable alarm interrupt and clear flag */ 444 + rcr1 = readb(rtc->regbase + RCR1); 445 + rcr1 &= ~RCR1_AF; 446 + writeb(rcr1 & ~RCR1_AIE, rtc->regbase + RCR1); 447 + 448 + rtc->rearm_aie = 0; 449 + 450 + /* set alarm time */ 451 + sh_rtc_write_alarm_value(rtc, tm->tm_sec, RSECAR); 452 + sh_rtc_write_alarm_value(rtc, tm->tm_min, RMINAR); 453 + sh_rtc_write_alarm_value(rtc, tm->tm_hour, RHRAR); 454 + sh_rtc_write_alarm_value(rtc, tm->tm_wday, RWKAR); 455 + sh_rtc_write_alarm_value(rtc, tm->tm_mday, RDAYAR); 456 + mon = tm->tm_mon; 457 + if (mon >= 0) 458 + mon += 1; 459 + sh_rtc_write_alarm_value(rtc, mon, RMONAR); 460 + 461 + /* Restore interrupt activation status */ 462 + writeb(rcr1, rtc->regbase + RCR1); 463 + 464 + spin_unlock_irq(&rtc->lock); 465 + 466 + return 0; 467 + } 468 + 399 469 static struct rtc_class_ops sh_rtc_ops = { 400 470 .open = sh_rtc_open, 401 471 .release = sh_rtc_release, 402 472 .ioctl = sh_rtc_ioctl, 403 473 .read_time = sh_rtc_read_time, 404 474 .set_time = sh_rtc_set_time, 475 + .read_alarm = sh_rtc_read_alarm, 476 + .set_alarm = sh_rtc_set_alarm, 405 477 .proc = sh_rtc_proc, 406 478 }; 407 479 ··· 618 442 } 619 443 static struct platform_driver sh_rtc_platform_driver = { 620 444 .driver = { 621 - .name = "sh-rtc", 445 + .name = DRV_NAME, 622 446 .owner = THIS_MODULE, 623 447 }, 624 448 .probe = sh_rtc_probe, ··· 639 463 module_exit(sh_rtc_exit); 640 464 641 465 MODULE_DESCRIPTION("SuperH on-chip RTC driver"); 642 - MODULE_AUTHOR("Paul Mundt <lethal@linux-sh.org>"); 466 + MODULE_VERSION(DRV_VERSION); 467 + MODULE_AUTHOR("Paul Mundt <lethal@linux-sh.org>, Jamie Lenehan <lenehan@twibble.org>"); 643 468 MODULE_LICENSE("GPL");
+22
drivers/serial/sh-sci.c
··· 319 319 320 320 sci_out(port, SCFCR, fcr_val); 321 321 } 322 + #elif defined(CONFIG_CPU_SUBTYPE_SH7722) 323 + static void sci_init_pins_scif(struct uart_port *port, unsigned int cflag) 324 + { 325 + unsigned int fcr_val = 0; 326 + 327 + if (cflag & CRTSCTS) { 328 + fcr_val |= SCFCR_MCE; 329 + 330 + ctrl_outw(0x0000, PORT_PSCR); 331 + } else { 332 + unsigned short data; 333 + 334 + data = ctrl_inw(PORT_PSCR); 335 + data &= 0x033f; 336 + data |= 0x0400; 337 + ctrl_outw(data, PORT_PSCR); 338 + 339 + ctrl_outw(ctrl_inw(SCSPTR0) & 0x17, SCSPTR0); 340 + } 341 + 342 + sci_out(port, SCFCR, fcr_val); 343 + } 322 344 #else 323 345 /* For SH7750 */ 324 346 static void sci_init_pins_scif(struct uart_port *port, unsigned int cflag)
+19
drivers/serial/sh-sci.h
··· 90 90 # define SCSPTR3 0xffe30010 /* 16 bit SCIF */ 91 91 # define SCSCR_INIT(port) 0x32 /* TIE=0,RIE=0,TE=1,RE=1,REIE=0,CKE=1 */ 92 92 # define SCIF_ONLY 93 + #elif defined(CONFIG_CPU_SUBTYPE_SH7722) 94 + # define SCPDR0 0xA405013E /* 16 bit SCIF0 PSDR */ 95 + # define SCSPTR0 SCPDR0 96 + # define SCIF_ORER 0x0001 /* overrun error bit */ 97 + # define SCSCR_INIT(port) 0x0038 /* TIE=0,RIE=0,TE=1,RE=1,REIE=1 */ 98 + # define SCIF_ONLY 99 + # define PORT_PSCR 0xA405011E 93 100 #elif defined(CONFIG_CPU_SUBTYPE_SH4_202) 94 101 # define SCSPTR2 0xffe80020 /* 16 bit SCIF */ 95 102 # define SCIF_ORER 0x0001 /* overrun error bit */ ··· 502 495 return ctrl_inw(SCSPTR1) & 0x0001 ? 1 : 0; /* SCIF */ 503 496 if (port->mapbase == 0xfe620000) 504 497 return ctrl_inw(SCSPTR2) & 0x0001 ? 1 : 0; /* SCIF */ 498 + return 1; 505 499 } 506 500 #elif defined(CONFIG_CPU_SUBTYPE_SH7300) 507 501 static inline int sci_rxd_in(struct uart_port *port) ··· 527 519 return ctrl_inw(SCSPTR2) & 0x0001 ? 1 : 0; /* SCIF */ 528 520 if (port->mapbase == 0xffe30000) 529 521 return ctrl_inw(SCSPTR3) & 0x0001 ? 1 : 0; /* SCIF */ 522 + return 1; 523 + } 524 + #elif defined(CONFIG_CPU_SUBTYPE_SH7722) 525 + static inline int sci_rxd_in(struct uart_port *port) 526 + { 527 + if (port->mapbase == 0xffe00000) 528 + return ctrl_inb(SCPDR0) & 0x0001 ? 1 : 0; /* SCIF0 */ 530 529 return 1; 531 530 } 532 531 #elif defined(CONFIG_CPU_SUBTYPE_ST40STB1) ··· 565 550 return ctrl_inw(SCSPTR1) & 0x0001 ? 1 : 0; /* SCIF */ 566 551 if (port->mapbase == 0xff925000) 567 552 return ctrl_inw(SCSPTR2) & 0x0001 ? 1 : 0; /* SCIF */ 553 + return 1; 568 554 } 569 555 #elif defined(CONFIG_CPU_SUBTYPE_SH7780) 570 556 static inline int sci_rxd_in(struct uart_port *port) ··· 574 558 return ctrl_inw(SCSPTR0) & 0x0001 ? 1 : 0; /* SCIF */ 575 559 if (port->mapbase == 0xffe10000) 576 560 return ctrl_inw(SCSPTR1) & 0x0001 ? 1 : 0; /* SCIF */ 561 + return 1; 577 562 } 578 563 #elif defined(CONFIG_CPU_SUBTYPE_SH7206) 579 564 static inline int sci_rxd_in(struct uart_port *port) ··· 587 570 return ctrl_inw(SCSPTR2) & 0x0001 ? 1 : 0; /* SCIF */ 588 571 if (port->mapbase == 0xfffe9800) 589 572 return ctrl_inw(SCSPTR3) & 0x0001 ? 1 : 0; /* SCIF */ 573 + return 1; 590 574 } 591 575 #elif defined(CONFIG_CPU_SUBTYPE_SH7619) 592 576 static inline int sci_rxd_in(struct uart_port *port) ··· 598 580 return ctrl_inw(SCSPTR1) & 0x0001 ? 1 : 0; /* SCIF */ 599 581 if (port->mapbase == 0xf8420000) 600 582 return ctrl_inw(SCSPTR2) & 0x0001 ? 1 : 0; /* SCIF */ 583 + return 1; 601 584 } 602 585 #endif 603 586
+71
include/asm-sh/atomic-irq.h
··· 1 + #ifndef __ASM_SH_ATOMIC_IRQ_H 2 + #define __ASM_SH_ATOMIC_IRQ_H 3 + 4 + /* 5 + * To get proper branch prediction for the main line, we must branch 6 + * forward to code at the end of this object's .text section, then 7 + * branch back to restart the operation. 8 + */ 9 + static inline void atomic_add(int i, atomic_t *v) 10 + { 11 + unsigned long flags; 12 + 13 + local_irq_save(flags); 14 + *(long *)v += i; 15 + local_irq_restore(flags); 16 + } 17 + 18 + static inline void atomic_sub(int i, atomic_t *v) 19 + { 20 + unsigned long flags; 21 + 22 + local_irq_save(flags); 23 + *(long *)v -= i; 24 + local_irq_restore(flags); 25 + } 26 + 27 + static inline int atomic_add_return(int i, atomic_t *v) 28 + { 29 + unsigned long temp, flags; 30 + 31 + local_irq_save(flags); 32 + temp = *(long *)v; 33 + temp += i; 34 + *(long *)v = temp; 35 + local_irq_restore(flags); 36 + 37 + return temp; 38 + } 39 + 40 + static inline int atomic_sub_return(int i, atomic_t *v) 41 + { 42 + unsigned long temp, flags; 43 + 44 + local_irq_save(flags); 45 + temp = *(long *)v; 46 + temp -= i; 47 + *(long *)v = temp; 48 + local_irq_restore(flags); 49 + 50 + return temp; 51 + } 52 + 53 + static inline void atomic_clear_mask(unsigned int mask, atomic_t *v) 54 + { 55 + unsigned long flags; 56 + 57 + local_irq_save(flags); 58 + *(long *)v &= ~mask; 59 + local_irq_restore(flags); 60 + } 61 + 62 + static inline void atomic_set_mask(unsigned int mask, atomic_t *v) 63 + { 64 + unsigned long flags; 65 + 66 + local_irq_save(flags); 67 + *(long *)v |= mask; 68 + local_irq_restore(flags); 69 + } 70 + 71 + #endif /* __ASM_SH_ATOMIC_IRQ_H */
+107
include/asm-sh/atomic-llsc.h
··· 1 + #ifndef __ASM_SH_ATOMIC_LLSC_H 2 + #define __ASM_SH_ATOMIC_LLSC_H 3 + 4 + /* 5 + * To get proper branch prediction for the main line, we must branch 6 + * forward to code at the end of this object's .text section, then 7 + * branch back to restart the operation. 8 + */ 9 + static inline void atomic_add(int i, atomic_t *v) 10 + { 11 + unsigned long tmp; 12 + 13 + __asm__ __volatile__ ( 14 + "1: movli.l @%2, %0 ! atomic_add \n" 15 + " add %1, %0 \n" 16 + " movco.l %0, @%2 \n" 17 + " bf 1b \n" 18 + : "=&z" (tmp) 19 + : "r" (i), "r" (&v->counter) 20 + : "t"); 21 + } 22 + 23 + static inline void atomic_sub(int i, atomic_t *v) 24 + { 25 + unsigned long tmp; 26 + 27 + __asm__ __volatile__ ( 28 + "1: movli.l @%2, %0 ! atomic_sub \n" 29 + " sub %1, %0 \n" 30 + " movco.l %0, @%2 \n" 31 + " bf 1b \n" 32 + : "=&z" (tmp) 33 + : "r" (i), "r" (&v->counter) 34 + : "t"); 35 + } 36 + 37 + /* 38 + * SH-4A note: 39 + * 40 + * We basically get atomic_xxx_return() for free compared with 41 + * atomic_xxx(). movli.l/movco.l require r0 due to the instruction 42 + * encoding, so the retval is automatically set without having to 43 + * do any special work. 44 + */ 45 + static inline int atomic_add_return(int i, atomic_t *v) 46 + { 47 + unsigned long temp; 48 + 49 + __asm__ __volatile__ ( 50 + "1: movli.l @%2, %0 ! atomic_add_return \n" 51 + " add %1, %0 \n" 52 + " movco.l %0, @%2 \n" 53 + " bf 1b \n" 54 + " synco \n" 55 + : "=&z" (temp) 56 + : "r" (i), "r" (&v->counter) 57 + : "t"); 58 + 59 + return temp; 60 + } 61 + 62 + static inline int atomic_sub_return(int i, atomic_t *v) 63 + { 64 + unsigned long temp; 65 + 66 + __asm__ __volatile__ ( 67 + "1: movli.l @%2, %0 ! atomic_sub_return \n" 68 + " sub %1, %0 \n" 69 + " movco.l %0, @%2 \n" 70 + " bf 1b \n" 71 + " synco \n" 72 + : "=&z" (temp) 73 + : "r" (i), "r" (&v->counter) 74 + : "t"); 75 + 76 + return temp; 77 + } 78 + 79 + static inline void atomic_clear_mask(unsigned int mask, atomic_t *v) 80 + { 81 + unsigned long tmp; 82 + 83 + __asm__ __volatile__ ( 84 + "1: movli.l @%2, %0 ! atomic_clear_mask \n" 85 + " and %1, %0 \n" 86 + " movco.l %0, @%2 \n" 87 + " bf 1b \n" 88 + : "=&z" (tmp) 89 + : "r" (~mask), "r" (&v->counter) 90 + : "t"); 91 + } 92 + 93 + static inline void atomic_set_mask(unsigned int mask, atomic_t *v) 94 + { 95 + unsigned long tmp; 96 + 97 + __asm__ __volatile__ ( 98 + "1: movli.l @%2, %0 ! atomic_set_mask \n" 99 + " or %1, %0 \n" 100 + " movco.l %0, @%2 \n" 101 + " bf 1b \n" 102 + : "=&z" (tmp) 103 + : "r" (mask), "r" (&v->counter) 104 + : "t"); 105 + } 106 + 107 + #endif /* __ASM_SH_ATOMIC_LLSC_H */
+2 -151
include/asm-sh/atomic.h
··· 17 17 #include <linux/compiler.h> 18 18 #include <asm/system.h> 19 19 20 - /* 21 - * To get proper branch prediction for the main line, we must branch 22 - * forward to code at the end of this object's .text section, then 23 - * branch back to restart the operation. 24 - */ 25 - static inline void atomic_add(int i, atomic_t *v) 26 - { 27 20 #ifdef CONFIG_CPU_SH4A 28 - unsigned long tmp; 29 - 30 - __asm__ __volatile__ ( 31 - "1: movli.l @%2, %0 ! atomic_add \n" 32 - " add %1, %0 \n" 33 - " movco.l %0, @%2 \n" 34 - " bf 1b \n" 35 - : "=&z" (tmp) 36 - : "r" (i), "r" (&v->counter) 37 - : "t"); 21 + #include <asm/atomic-llsc.h> 38 22 #else 39 - unsigned long flags; 40 - 41 - local_irq_save(flags); 42 - *(long *)v += i; 43 - local_irq_restore(flags); 23 + #include <asm/atomic-irq.h> 44 24 #endif 45 - } 46 - 47 - static inline void atomic_sub(int i, atomic_t *v) 48 - { 49 - #ifdef CONFIG_CPU_SH4A 50 - unsigned long tmp; 51 - 52 - __asm__ __volatile__ ( 53 - "1: movli.l @%2, %0 ! atomic_sub \n" 54 - " sub %1, %0 \n" 55 - " movco.l %0, @%2 \n" 56 - " bf 1b \n" 57 - : "=&z" (tmp) 58 - : "r" (i), "r" (&v->counter) 59 - : "t"); 60 - #else 61 - unsigned long flags; 62 - 63 - local_irq_save(flags); 64 - *(long *)v -= i; 65 - local_irq_restore(flags); 66 - #endif 67 - } 68 - 69 - /* 70 - * SH-4A note: 71 - * 72 - * We basically get atomic_xxx_return() for free compared with 73 - * atomic_xxx(). movli.l/movco.l require r0 due to the instruction 74 - * encoding, so the retval is automatically set without having to 75 - * do any special work. 76 - */ 77 - static inline int atomic_add_return(int i, atomic_t *v) 78 - { 79 - unsigned long temp; 80 - 81 - #ifdef CONFIG_CPU_SH4A 82 - __asm__ __volatile__ ( 83 - "1: movli.l @%2, %0 ! atomic_add_return \n" 84 - " add %1, %0 \n" 85 - " movco.l %0, @%2 \n" 86 - " bf 1b \n" 87 - " synco \n" 88 - : "=&z" (temp) 89 - : "r" (i), "r" (&v->counter) 90 - : "t"); 91 - #else 92 - unsigned long flags; 93 - 94 - local_irq_save(flags); 95 - temp = *(long *)v; 96 - temp += i; 97 - *(long *)v = temp; 98 - local_irq_restore(flags); 99 - #endif 100 - 101 - return temp; 102 - } 103 25 104 26 #define atomic_add_negative(a, v) (atomic_add_return((a), (v)) < 0) 105 - 106 - static inline int atomic_sub_return(int i, atomic_t *v) 107 - { 108 - unsigned long temp; 109 - 110 - #ifdef CONFIG_CPU_SH4A 111 - __asm__ __volatile__ ( 112 - "1: movli.l @%2, %0 ! atomic_sub_return \n" 113 - " sub %1, %0 \n" 114 - " movco.l %0, @%2 \n" 115 - " bf 1b \n" 116 - " synco \n" 117 - : "=&z" (temp) 118 - : "r" (i), "r" (&v->counter) 119 - : "t"); 120 - #else 121 - unsigned long flags; 122 - 123 - local_irq_save(flags); 124 - temp = *(long *)v; 125 - temp -= i; 126 - *(long *)v = temp; 127 - local_irq_restore(flags); 128 - #endif 129 - 130 - return temp; 131 - } 132 27 133 28 #define atomic_dec_return(v) atomic_sub_return(1,(v)) 134 29 #define atomic_inc_return(v) atomic_add_return(1,(v)) ··· 74 179 return ret != u; 75 180 } 76 181 #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0) 77 - 78 - static inline void atomic_clear_mask(unsigned int mask, atomic_t *v) 79 - { 80 - #ifdef CONFIG_CPU_SH4A 81 - unsigned long tmp; 82 - 83 - __asm__ __volatile__ ( 84 - "1: movli.l @%2, %0 ! atomic_clear_mask \n" 85 - " and %1, %0 \n" 86 - " movco.l %0, @%2 \n" 87 - " bf 1b \n" 88 - : "=&z" (tmp) 89 - : "r" (~mask), "r" (&v->counter) 90 - : "t"); 91 - #else 92 - unsigned long flags; 93 - 94 - local_irq_save(flags); 95 - *(long *)v &= ~mask; 96 - local_irq_restore(flags); 97 - #endif 98 - } 99 - 100 - static inline void atomic_set_mask(unsigned int mask, atomic_t *v) 101 - { 102 - #ifdef CONFIG_CPU_SH4A 103 - unsigned long tmp; 104 - 105 - __asm__ __volatile__ ( 106 - "1: movli.l @%2, %0 ! atomic_set_mask \n" 107 - " or %1, %0 \n" 108 - " movco.l %0, @%2 \n" 109 - " bf 1b \n" 110 - : "=&z" (tmp) 111 - : "r" (mask), "r" (&v->counter) 112 - : "t"); 113 - #else 114 - unsigned long flags; 115 - 116 - local_irq_save(flags); 117 - *(long *)v |= mask; 118 - local_irq_restore(flags); 119 - #endif 120 - } 121 182 122 183 /* Atomic operations are already serializing on SH */ 123 184 #define smp_mb__before_atomic_dec() barrier()
+44 -9
include/asm-sh/bug.h
··· 1 1 #ifndef __ASM_SH_BUG_H 2 2 #define __ASM_SH_BUG_H 3 3 4 - 5 4 #ifdef CONFIG_BUG 6 - /* 7 - * Tell the user there is some problem. 8 - */ 9 - #define BUG() do { \ 10 - printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \ 11 - *(volatile int *)0 = 0; \ 5 + 6 + struct bug_frame { 7 + unsigned short opcode; 8 + unsigned short line; 9 + const char *file; 10 + const char *func; 11 + }; 12 + 13 + struct pt_regs; 14 + 15 + extern void handle_BUG(struct pt_regs *); 16 + 17 + #define TRAPA_BUG_OPCODE 0xc33e /* trapa #0x3e */ 18 + 19 + #ifdef CONFIG_DEBUG_BUGVERBOSE 20 + 21 + #define BUG() \ 22 + do { \ 23 + __asm__ __volatile__ ( \ 24 + ".align 2\n\t" \ 25 + ".short %O0\n\t" \ 26 + ".short %O1\n\t" \ 27 + ".long %O2\n\t" \ 28 + ".long %O3\n\t" \ 29 + : \ 30 + : "n" (TRAPA_BUG_OPCODE), \ 31 + "i" (__LINE__), "X" (__FILE__), \ 32 + "X" (__FUNCTION__)); \ 12 33 } while (0) 13 34 35 + #else 36 + 37 + #define BUG() \ 38 + do { \ 39 + __asm__ __volatile__ ( \ 40 + ".align 2\n\t" \ 41 + ".short %O0\n\t" \ 42 + : \ 43 + : "n" (TRAPA_BUG_OPCODE)); \ 44 + } while (0) 45 + 46 + #endif /* CONFIG_DEBUG_BUGVERBOSE */ 47 + 14 48 #define HAVE_ARCH_BUG 15 - #endif 49 + 50 + #endif /* CONFIG_BUG */ 16 51 17 52 #include <asm-generic/bug.h> 18 53 19 - #endif 54 + #endif /* __ASM_SH_BUG_H */
+10 -2
include/asm-sh/bugs.h
··· 16 16 17 17 static void __init check_bugs(void) 18 18 { 19 - extern char *get_cpu_subtype(void); 20 19 extern unsigned long loops_per_jiffy; 21 - char *p= &init_utsname()->machine[2]; /* "sh" */ 20 + char *p = &init_utsname()->machine[2]; /* "sh" */ 22 21 23 22 cpu_data->loops_per_jiffy = loops_per_jiffy; 24 23 ··· 38 39 case CPU_SH7770 ... CPU_SH7785: 39 40 *p++ = '4'; 40 41 *p++ = 'a'; 42 + break; 43 + case CPU_SH73180 ... CPU_SH7722: 44 + *p++ = '4'; 45 + *p++ = 'a'; 46 + *p++ = 'l'; 47 + *p++ = '-'; 48 + *p++ = 'd'; 49 + *p++ = 's'; 50 + *p++ = 'p'; 41 51 break; 42 52 default: 43 53 *p++ = '?';
+34 -35
include/asm-sh/checksum.h
··· 34 34 */ 35 35 36 36 asmlinkage __wsum csum_partial_copy_generic(const void *src, void *dst, 37 - int len, __wsum sum, int *src_err_ptr, int *dst_err_ptr); 37 + int len, __wsum sum, 38 + int *src_err_ptr, int *dst_err_ptr); 38 39 39 40 /* 40 41 * Note: when you get a NULL pointer exception here this means someone 41 - * passed in an incorrect kernel address to one of these functions. 42 - * 43 - * If you use these functions directly please don't forget the 42 + * passed in an incorrect kernel address to one of these functions. 43 + * 44 + * If you use these functions directly please don't forget the 44 45 * access_ok(). 45 46 */ 46 - static __inline__ 47 + static inline 47 48 __wsum csum_partial_copy_nocheck(const void *src, void *dst, 48 - int len, __wsum sum) 49 + int len, __wsum sum) 49 50 { 50 - return csum_partial_copy_generic ( src, dst, len, sum, NULL, NULL); 51 + return csum_partial_copy_generic(src, dst, len, sum, NULL, NULL); 51 52 } 52 53 53 - static __inline__ 54 + static inline 54 55 __wsum csum_partial_copy_from_user(const void __user *src, void *dst, 55 - int len, __wsum sum, int *err_ptr) 56 + int len, __wsum sum, int *err_ptr) 56 57 { 57 58 return csum_partial_copy_generic((__force const void *)src, dst, 58 59 len, sum, err_ptr, NULL); ··· 63 62 * Fold a partial checksum 64 63 */ 65 64 66 - static __inline__ __sum16 csum_fold(__wsum sum) 65 + static inline __sum16 csum_fold(__wsum sum) 67 66 { 68 67 unsigned int __dummy; 69 68 __asm__("swap.w %0, %1\n\t" ··· 86 85 * i386 version by Jorge Cwik <jorge@laser.satlink.net>, adapted 87 86 * for linux by * Arnt Gulbrandsen. 88 87 */ 89 - static __inline__ __sum16 ip_fast_csum(const void *iph, unsigned int ihl) 88 + static inline __sum16 ip_fast_csum(const void *iph, unsigned int ihl) 90 89 { 91 90 unsigned int sum, __dummy0, __dummy1; 92 91 ··· 114 113 return csum_fold(sum); 115 114 } 116 115 117 - static __inline__ __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr, 118 - unsigned short len, 119 - unsigned short proto, 120 - __wsum sum) 116 + static inline __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr, 117 + unsigned short len, 118 + unsigned short proto, 119 + __wsum sum) 121 120 { 122 121 #ifdef __LITTLE_ENDIAN__ 123 122 unsigned long len_proto = (proto + len) << 8; ··· 133 132 : "=r" (sum), "=r" (len_proto) 134 133 : "r" (daddr), "r" (saddr), "1" (len_proto), "0" (sum) 135 134 : "t"); 135 + 136 136 return sum; 137 137 } 138 138 ··· 141 139 * computes the checksum of the TCP/UDP pseudo-header 142 140 * returns a 16-bit checksum, already complemented 143 141 */ 144 - static __inline__ __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr, 145 - unsigned short len, 146 - unsigned short proto, 147 - __wsum sum) 142 + static inline __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr, 143 + unsigned short len, 144 + unsigned short proto, 145 + __wsum sum) 148 146 { 149 - return csum_fold(csum_tcpudp_nofold(saddr,daddr,len,proto,sum)); 147 + return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum)); 150 148 } 151 149 152 150 /* 153 151 * this routine is used for miscellaneous IP-like checksums, mainly 154 152 * in icmp.c 155 153 */ 156 - 157 - static __inline__ __sum16 ip_compute_csum(const void *buff, int len) 154 + static inline __sum16 ip_compute_csum(const void *buff, int len) 158 155 { 159 - return csum_fold (csum_partial(buff, len, 0)); 156 + return csum_fold(csum_partial(buff, len, 0)); 160 157 } 161 158 162 159 #define _HAVE_ARCH_IPV6_CSUM 163 - #ifdef CONFIG_IPV6 164 - static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr, 165 - const struct in6_addr *daddr, 166 - __u32 len, unsigned short proto, 167 - __wsum sum) 160 + static inline __sum16 csum_ipv6_magic(const struct in6_addr *saddr, 161 + const struct in6_addr *daddr, 162 + __u32 len, unsigned short proto, 163 + __wsum sum) 168 164 { 169 165 unsigned int __dummy; 170 166 __asm__("clrt\n\t" ··· 187 187 "movt %1\n\t" 188 188 "add %1, %0\n" 189 189 : "=r" (sum), "=&r" (__dummy) 190 - : "r" (saddr), "r" (daddr), 190 + : "r" (saddr), "r" (daddr), 191 191 "r" (htonl(len)), "r" (htonl(proto)), "0" (sum) 192 192 : "t"); 193 193 194 194 return csum_fold(sum); 195 195 } 196 - #endif 197 196 198 - /* 197 + /* 199 198 * Copy and checksum to user 200 199 */ 201 200 #define HAVE_CSUM_COPY_USER 202 - static __inline__ __wsum csum_and_copy_to_user (const void *src, 203 - void __user *dst, 204 - int len, __wsum sum, 205 - int *err_ptr) 201 + static inline __wsum csum_and_copy_to_user(const void *src, 202 + void __user *dst, 203 + int len, __wsum sum, 204 + int *err_ptr) 206 205 { 207 206 if (access_ok(VERIFY_WRITE, dst, len)) 208 207 return csum_partial_copy_generic((__force const void *)src,
+1 -1
include/asm-sh/cpu-sh4/cache.h
··· 22 22 #define CCR_CACHE_ICE 0x0100 /* Instruction Cache Enable */ 23 23 #define CCR_CACHE_ICI 0x0800 /* IC Invalidate */ 24 24 #define CCR_CACHE_IIX 0x8000 /* IC Index Enable */ 25 - #ifndef CONFIG_CPU_SUBTYPE_SH7780 25 + #ifndef CONFIG_CPU_SH4A 26 26 #define CCR_CACHE_EMODE 0x80000000 /* EMODE Enable */ 27 27 #endif 28 28
+1 -1
include/asm-sh/cpu-sh4/freq.h
··· 10 10 #ifndef __ASM_CPU_SH4_FREQ_H 11 11 #define __ASM_CPU_SH4_FREQ_H 12 12 13 - #if defined(CONFIG_CPU_SUBTYPE_SH73180) 13 + #if defined(CONFIG_CPU_SUBTYPE_SH73180) || defined(CONFIG_CPU_SUBTYPE_SH7722) 14 14 #define FRQCR 0xa4150000 15 15 #elif defined(CONFIG_CPU_SUBTYPE_SH7780) 16 16 #define FRQCR 0xffc80000
+5 -5
include/asm-sh/dma-mapping.h
··· 67 67 if (dev->bus == &pci_bus_type) 68 68 return virt_to_bus(ptr); 69 69 #endif 70 - dma_cache_sync(ptr, size, dir); 70 + dma_cache_sync(dev, ptr, size, dir); 71 71 72 72 return virt_to_bus(ptr); 73 73 } ··· 81 81 82 82 for (i = 0; i < nents; i++) { 83 83 #if !defined(CONFIG_PCI) || defined(CONFIG_SH_PCIDMA_NONCOHERENT) 84 - dma_cache_sync(page_address(sg[i].page) + sg[i].offset, 84 + dma_cache_sync(dev, page_address(sg[i].page) + sg[i].offset, 85 85 sg[i].length, dir); 86 86 #endif 87 87 sg[i].dma_address = page_to_phys(sg[i].page) + sg[i].offset; ··· 112 112 if (dev->bus == &pci_bus_type) 113 113 return; 114 114 #endif 115 - dma_cache_sync(bus_to_virt(dma_handle), size, dir); 115 + dma_cache_sync(dev, bus_to_virt(dma_handle), size, dir); 116 116 } 117 117 118 118 static inline void dma_sync_single_range(struct device *dev, ··· 124 124 if (dev->bus == &pci_bus_type) 125 125 return; 126 126 #endif 127 - dma_cache_sync(bus_to_virt(dma_handle) + offset, size, dir); 127 + dma_cache_sync(dev, bus_to_virt(dma_handle) + offset, size, dir); 128 128 } 129 129 130 130 static inline void dma_sync_sg(struct device *dev, struct scatterlist *sg, ··· 134 134 135 135 for (i = 0; i < nelems; i++) { 136 136 #if !defined(CONFIG_PCI) || defined(CONFIG_SH_PCIDMA_NONCOHERENT) 137 - dma_cache_sync(page_address(sg[i].page) + sg[i].offset, 137 + dma_cache_sync(dev, page_address(sg[i].page) + sg[i].offset, 138 138 sg[i].length, dir); 139 139 #endif 140 140 sg[i].dma_address = page_to_phys(sg[i].page) + sg[i].offset;
+4 -1
include/asm-sh/irq.h
··· 37 37 # define ONCHIP_NR_IRQS 144 38 38 #elif defined(CONFIG_CPU_SUBTYPE_SH7300) || \ 39 39 defined(CONFIG_CPU_SUBTYPE_SH73180) || \ 40 - defined(CONFIG_CPU_SUBTYPE_SH7343) 40 + defined(CONFIG_CPU_SUBTYPE_SH7343) || \ 41 + defined(CONFIG_CPU_SUBTYPE_SH7722) 41 42 # define ONCHIP_NR_IRQS 109 42 43 #elif defined(CONFIG_CPU_SUBTYPE_SH7780) 43 44 # define ONCHIP_NR_IRQS 111 ··· 80 79 # define OFFCHIP_NR_IRQS 16 81 80 #elif defined(CONFIG_SH_7343_SOLUTION_ENGINE) 82 81 # define OFFCHIP_NR_IRQS 12 82 + #elif defined(CONFIG_SH_7722_SOLUTION_ENGINE) 83 + # define OFFCHIP_NR_IRQS 14 83 84 #elif defined(CONFIG_SH_UNKNOWN) 84 85 # define OFFCHIP_NR_IRQS 16 /* Must also be last */ 85 86 #else
+41 -6
include/asm-sh/pgtable.h
··· 508 508 extern void update_mmu_cache(struct vm_area_struct * vma, 509 509 unsigned long address, pte_t pte); 510 510 511 - /* Encode and de-code a swap entry */ 512 511 /* 512 + * Encode and de-code a swap entry 513 + * 514 + * Constraints: 515 + * _PAGE_FILE at bit 0 516 + * _PAGE_PRESENT at bit 8 517 + * _PAGE_PROTNONE at bit 9 518 + * 519 + * For the normal case, we encode the swap type into bits 0:7 and the 520 + * swap offset into bits 10:30. For the 64-bit PTE case, we keep the 521 + * preserved bits in the low 32-bits and use the upper 32 as the swap 522 + * offset (along with a 5-bit type), following the same approach as x86 523 + * PAE. This keeps the logic quite simple, and allows for a full 32 524 + * PTE_FILE_MAX_BITS, as opposed to the 29-bits we're constrained with 525 + * in the pte_low case. 526 + * 527 + * As is evident by the Alpha code, if we ever get a 64-bit unsigned 528 + * long (swp_entry_t) to match up with the 64-bit PTEs, this all becomes 529 + * much cleaner.. 530 + * 513 531 * NOTE: We should set ZEROs at the position of _PAGE_PRESENT 514 532 * and _PAGE_PROTNONE bits 515 533 */ 516 - #define __swp_type(x) ((x).val & 0xff) 517 - #define __swp_offset(x) ((x).val >> 10) 518 - #define __swp_entry(type, offset) ((swp_entry_t) { (type) | ((offset) << 10) }) 519 - #define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) >> 1 }) 520 - #define __swp_entry_to_pte(x) ((pte_t) { (x).val << 1 }) 534 + #ifdef CONFIG_X2TLB 535 + #define __swp_type(x) ((x).val & 0x1f) 536 + #define __swp_offset(x) ((x).val >> 5) 537 + #define __swp_entry(type, offset) ((swp_entry_t){ (type) | (offset) << 5}) 538 + #define __pte_to_swp_entry(pte) ((swp_entry_t){ (pte).pte_high }) 539 + #define __swp_entry_to_pte(x) ((pte_t){ 0, (x).val }) 540 + 541 + /* 542 + * Encode and decode a nonlinear file mapping entry 543 + */ 544 + #define pte_to_pgoff(pte) ((pte).pte_high) 545 + #define pgoff_to_pte(off) ((pte_t) { _PAGE_FILE, (off) }) 546 + 547 + #define PTE_FILE_MAX_BITS 32 548 + #else 549 + #define __swp_type(x) ((x).val & 0xff) 550 + #define __swp_offset(x) ((x).val >> 10) 551 + #define __swp_entry(type, offset) ((swp_entry_t){(type) | (offset) <<10}) 552 + 553 + #define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) >> 1 }) 554 + #define __swp_entry_to_pte(x) ((pte_t) { (x).val << 1 }) 521 555 522 556 /* 523 557 * Encode and decode a nonlinear file mapping entry ··· 559 525 #define PTE_FILE_MAX_BITS 29 560 526 #define pte_to_pgoff(pte) (pte_val(pte) >> 1) 561 527 #define pgoff_to_pte(off) ((pte_t) { ((off) << 1) | _PAGE_FILE }) 528 + #endif 562 529 563 530 typedef pte_t *pte_addr_t; 564 531
+6 -2
include/asm-sh/processor.h
··· 27 27 #define CCN_CVR 0xff000040 28 28 #define CCN_PRR 0xff000044 29 29 30 + const char *get_cpu_subtype(void); 31 + 30 32 /* 31 33 * CPU type and hardware bug flags. Kept separately for each CPU. 32 34 * ··· 54 52 CPU_SH7760, CPU_ST40RA, CPU_ST40GX1, CPU_SH4_202, CPU_SH4_501, 55 53 56 54 /* SH-4A types */ 57 - CPU_SH73180, CPU_SH7343, CPU_SH7770, CPU_SH7780, CPU_SH7781, 58 - CPU_SH7785, 55 + CPU_SH7770, CPU_SH7780, CPU_SH7781, CPU_SH7785, 56 + 57 + /* SH4AL-DSP types */ 58 + CPU_SH73180, CPU_SH7343, CPU_SH7722, 59 59 60 60 /* Unknown subtype */ 61 61 CPU_SH_NONE
+3
include/asm-sh/push-switch.h
··· 4 4 #include <linux/timer.h> 5 5 #include <linux/interrupt.h> 6 6 #include <linux/workqueue.h> 7 + #include <linux/platform_device.h> 7 8 8 9 struct push_switch { 9 10 /* switch state */ ··· 13 12 struct timer_list debounce; 14 13 /* workqueue */ 15 14 struct work_struct work; 15 + /* platform device, for workqueue handler */ 16 + struct platform_device *pdev; 16 17 }; 17 18 18 19 struct push_switch_platform_info {