nuke old files
SVN-Revision: 15402
This commit is contained in:
		@@ -1,294 +0,0 @@
 | 
			
		||||
# CONFIG_60XX_WDT is not set
 | 
			
		||||
# CONFIG_64BIT is not set
 | 
			
		||||
# CONFIG_8139TOO is not set
 | 
			
		||||
# CONFIG_ACQUIRE_WDT is not set
 | 
			
		||||
# CONFIG_ADVANTECH_WDT is not set
 | 
			
		||||
# CONFIG_AGP is not set
 | 
			
		||||
# CONFIG_ALIM1535_WDT is not set
 | 
			
		||||
# CONFIG_ALIM7101_WDT is not set
 | 
			
		||||
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
 | 
			
		||||
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
 | 
			
		||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
 | 
			
		||||
CONFIG_ARCH_POPULATES_NODE_MAP=y
 | 
			
		||||
# CONFIG_ARCH_SUPPORTS_MSI is not set
 | 
			
		||||
CONFIG_ARCH_SUPPORTS_OPROFILE=y
 | 
			
		||||
# CONFIG_AUDIT_ARCH is not set
 | 
			
		||||
CONFIG_BASE_SMALL=0
 | 
			
		||||
# CONFIG_BINFMT_AOUT is not set
 | 
			
		||||
CONFIG_BITREVERSE=y
 | 
			
		||||
# CONFIG_BLK_DEV_INITRD is not set
 | 
			
		||||
CONFIG_BLK_DEV_RAM=y
 | 
			
		||||
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
 | 
			
		||||
CONFIG_BLK_DEV_RAM_COUNT=16
 | 
			
		||||
CONFIG_BLK_DEV_RAM_SIZE=4096
 | 
			
		||||
CONFIG_BOUNCE=y
 | 
			
		||||
# CONFIG_BROADCOM_PHY is not set
 | 
			
		||||
CONFIG_CLOCKSOURCE_WATCHDOG=y
 | 
			
		||||
# CONFIG_COMPAT_VDSO is not set
 | 
			
		||||
# CONFIG_CPU5_WDT is not set
 | 
			
		||||
# CONFIG_CPU_FREQ is not set
 | 
			
		||||
# CONFIG_CPU_IDLE is not set
 | 
			
		||||
# CONFIG_CRYPTO_AES_586 is not set
 | 
			
		||||
# CONFIG_CRYPTO_TWOFISH_586 is not set
 | 
			
		||||
# CONFIG_CS5535_GPIO is not set
 | 
			
		||||
# CONFIG_DCDBAS is not set
 | 
			
		||||
# CONFIG_DEBUG_BUGVERBOSE is not set
 | 
			
		||||
CONFIG_DEFAULT_CFQ=y
 | 
			
		||||
# CONFIG_DEFAULT_DEADLINE is not set
 | 
			
		||||
CONFIG_DEFAULT_IOSCHED="cfq"
 | 
			
		||||
# CONFIG_DELL_RBU is not set
 | 
			
		||||
CONFIG_DEVPORT=y
 | 
			
		||||
# CONFIG_DMADEVICES is not set
 | 
			
		||||
CONFIG_DMI=y
 | 
			
		||||
CONFIG_DMIID=y
 | 
			
		||||
CONFIG_DOUBLEFAULT=y
 | 
			
		||||
CONFIG_EARLY_PRINTK=y
 | 
			
		||||
# CONFIG_EDAC is not set
 | 
			
		||||
# CONFIG_EDD is not set
 | 
			
		||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
 | 
			
		||||
# CONFIG_EUROTECH_WDT is not set
 | 
			
		||||
# CONFIG_FIXED_PHY is not set
 | 
			
		||||
CONFIG_FIX_EARLYCON_MEM=y
 | 
			
		||||
CONFIG_GENERIC_BUG=y
 | 
			
		||||
CONFIG_GENERIC_CLOCKEVENTS=y
 | 
			
		||||
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
 | 
			
		||||
CONFIG_GENERIC_CMOS_UPDATE=y
 | 
			
		||||
# CONFIG_GENERIC_CPU is not set
 | 
			
		||||
CONFIG_GENERIC_GPIO=y
 | 
			
		||||
CONFIG_GENERIC_IOMAP=y
 | 
			
		||||
CONFIG_GENERIC_ISA_DMA=y
 | 
			
		||||
# CONFIG_GENERIC_TIME_VSYSCALL is not set
 | 
			
		||||
# CONFIG_GEN_RTC is not set
 | 
			
		||||
# CONFIG_HANGCHECK_TIMER is not set
 | 
			
		||||
CONFIG_HAS_DMA=y
 | 
			
		||||
CONFIG_HAS_IOMEM=y
 | 
			
		||||
CONFIG_HAS_IOPORT=y
 | 
			
		||||
CONFIG_HIBERNATION_UP_POSSIBLE=y
 | 
			
		||||
# CONFIG_HIGHMEM4G is not set
 | 
			
		||||
# CONFIG_HIGHMEM64G is not set
 | 
			
		||||
# CONFIG_HIGH_RES_TIMERS is not set
 | 
			
		||||
# CONFIG_HPET_TIMER is not set
 | 
			
		||||
CONFIG_HUGETLBFS=y
 | 
			
		||||
CONFIG_HUGETLB_PAGE=y
 | 
			
		||||
CONFIG_HW_RANDOM=y
 | 
			
		||||
# CONFIG_HW_RANDOM_AMD is not set
 | 
			
		||||
# CONFIG_HW_RANDOM_GEODE is not set
 | 
			
		||||
# CONFIG_HW_RANDOM_INTEL is not set
 | 
			
		||||
# CONFIG_HW_RANDOM_VIA is not set
 | 
			
		||||
CONFIG_HZ=250
 | 
			
		||||
# CONFIG_HZ_100 is not set
 | 
			
		||||
CONFIG_HZ_250=y
 | 
			
		||||
# CONFIG_I2C is not set
 | 
			
		||||
# CONFIG_I6300ESB_WDT is not set
 | 
			
		||||
# CONFIG_I8K is not set
 | 
			
		||||
# CONFIG_IB700_WDT is not set
 | 
			
		||||
# CONFIG_IBMASR is not set
 | 
			
		||||
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
 | 
			
		||||
# CONFIG_IBM_NEW_EMAC_RGMII is not set
 | 
			
		||||
# CONFIG_IBM_NEW_EMAC_TAH is not set
 | 
			
		||||
# CONFIG_IBM_NEW_EMAC_ZMII is not set
 | 
			
		||||
CONFIG_ICPLUS_PHY=y
 | 
			
		||||
# CONFIG_IDE is not set
 | 
			
		||||
CONFIG_IOSCHED_CFQ=y
 | 
			
		||||
# CONFIG_IOSCHED_DEADLINE is not set
 | 
			
		||||
# CONFIG_ISA is not set
 | 
			
		||||
CONFIG_ISA_DMA_API=y
 | 
			
		||||
# CONFIG_IT8712F_WDT is not set
 | 
			
		||||
# CONFIG_ITCO_WDT is not set
 | 
			
		||||
CONFIG_KEXEC=y
 | 
			
		||||
CONFIG_KTIME_SCALAR=y
 | 
			
		||||
# CONFIG_KVM is not set
 | 
			
		||||
CONFIG_LBD=y
 | 
			
		||||
CONFIG_LEDS_GPIO=y
 | 
			
		||||
# CONFIG_LGUEST is not set
 | 
			
		||||
CONFIG_LSF=y
 | 
			
		||||
# CONFIG_M386 is not set
 | 
			
		||||
CONFIG_M486=y
 | 
			
		||||
# CONFIG_M586 is not set
 | 
			
		||||
# CONFIG_M586MMX is not set
 | 
			
		||||
# CONFIG_M586TSC is not set
 | 
			
		||||
# CONFIG_M686 is not set
 | 
			
		||||
# CONFIG_MACHZ_WDT is not set
 | 
			
		||||
# CONFIG_MACINTOSH_DRIVERS is not set
 | 
			
		||||
CONFIG_MATH_EMULATION=y
 | 
			
		||||
# CONFIG_MCA is not set
 | 
			
		||||
# CONFIG_MCORE2 is not set
 | 
			
		||||
# CONFIG_MCRUSOE is not set
 | 
			
		||||
# CONFIG_MCYRIXIII is not set
 | 
			
		||||
# CONFIG_MDIO_BITBANG is not set
 | 
			
		||||
# CONFIG_MEFFICEON is not set
 | 
			
		||||
# CONFIG_MGEODEGX1 is not set
 | 
			
		||||
# CONFIG_MGEODE_LX is not set
 | 
			
		||||
# CONFIG_MICROCODE is not set
 | 
			
		||||
# CONFIG_MK6 is not set
 | 
			
		||||
# CONFIG_MK7 is not set
 | 
			
		||||
# CONFIG_MK8 is not set
 | 
			
		||||
CONFIG_MODULE_FORCE_UNLOAD=y
 | 
			
		||||
# CONFIG_MPENTIUM4 is not set
 | 
			
		||||
# CONFIG_MPENTIUMII is not set
 | 
			
		||||
# CONFIG_MPENTIUMIII is not set
 | 
			
		||||
# CONFIG_MPENTIUMM is not set
 | 
			
		||||
# CONFIG_MPSC is not set
 | 
			
		||||
CONFIG_MTD=y
 | 
			
		||||
# CONFIG_MTD_ABSENT is not set
 | 
			
		||||
CONFIG_MTD_BLKDEVS=y
 | 
			
		||||
CONFIG_MTD_BLOCK=y
 | 
			
		||||
# CONFIG_MTD_BLOCK2MTD is not set
 | 
			
		||||
CONFIG_MTD_CFI=y
 | 
			
		||||
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
 | 
			
		||||
CONFIG_MTD_CFI_AMDSTD=y
 | 
			
		||||
CONFIG_MTD_CFI_I1=y
 | 
			
		||||
CONFIG_MTD_CFI_I2=y
 | 
			
		||||
# CONFIG_MTD_CFI_I4 is not set
 | 
			
		||||
# CONFIG_MTD_CFI_I8 is not set
 | 
			
		||||
# CONFIG_MTD_CFI_INTELEXT is not set
 | 
			
		||||
# CONFIG_MTD_CFI_STAA is not set
 | 
			
		||||
CONFIG_MTD_CFI_UTIL=y
 | 
			
		||||
CONFIG_MTD_CHAR=y
 | 
			
		||||
# CONFIG_MTD_CMDLINE_PARTS is not set
 | 
			
		||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
 | 
			
		||||
CONFIG_MTD_CONCAT=y
 | 
			
		||||
# CONFIG_MTD_DEBUG is not set
 | 
			
		||||
# CONFIG_MTD_DOC2000 is not set
 | 
			
		||||
# CONFIG_MTD_DOC2001 is not set
 | 
			
		||||
# CONFIG_MTD_DOC2001PLUS is not set
 | 
			
		||||
CONFIG_MTD_GEN_PROBE=y
 | 
			
		||||
# CONFIG_MTD_JEDECPROBE is not set
 | 
			
		||||
CONFIG_MTD_MAP_BANK_WIDTH_1=y
 | 
			
		||||
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
 | 
			
		||||
CONFIG_MTD_MAP_BANK_WIDTH_2=y
 | 
			
		||||
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
 | 
			
		||||
CONFIG_MTD_MAP_BANK_WIDTH_4=y
 | 
			
		||||
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
 | 
			
		||||
# CONFIG_MTD_MTDRAM is not set
 | 
			
		||||
# CONFIG_MTD_NETSC520 is not set
 | 
			
		||||
# CONFIG_MTD_ONENAND is not set
 | 
			
		||||
CONFIG_MTD_PARTITIONS=y
 | 
			
		||||
# CONFIG_MTD_PHRAM is not set
 | 
			
		||||
CONFIG_MTD_PHYSMAP=y
 | 
			
		||||
CONFIG_MTD_PHYSMAP_BANKWIDTH=2
 | 
			
		||||
CONFIG_MTD_PHYSMAP_LEN=0
 | 
			
		||||
CONFIG_MTD_PHYSMAP_START=0x8000000
 | 
			
		||||
# CONFIG_MTD_PLATRAM is not set
 | 
			
		||||
# CONFIG_MTD_PMC551 is not set
 | 
			
		||||
# CONFIG_MTD_PNC2000 is not set
 | 
			
		||||
# CONFIG_MTD_RAM is not set
 | 
			
		||||
CONFIG_MTD_RDC3210=y
 | 
			
		||||
CONFIG_MTD_RDC3210_ALLOW_JFFS2=y
 | 
			
		||||
CONFIG_MTD_RDC3210_BUSWIDTH=2
 | 
			
		||||
# CONFIG_MTD_RDC3210_FACTORY_PRESENT is not set
 | 
			
		||||
CONFIG_MTD_RDC3210_SIZE=0x400000
 | 
			
		||||
# CONFIG_MTD_RDC3210_STATIC_MAP is not set
 | 
			
		||||
# CONFIG_MTD_REDBOOT_PARTS is not set
 | 
			
		||||
# CONFIG_MTD_ROM is not set
 | 
			
		||||
# CONFIG_MTD_SC520CDP is not set
 | 
			
		||||
# CONFIG_MTD_SLRAM is not set
 | 
			
		||||
# CONFIG_MTD_TS5500 is not set
 | 
			
		||||
# CONFIG_MTRR is not set
 | 
			
		||||
# CONFIG_MVIAC3_2 is not set
 | 
			
		||||
# CONFIG_MVIAC7 is not set
 | 
			
		||||
# CONFIG_MWINCHIP2 is not set
 | 
			
		||||
# CONFIG_MWINCHIP3D is not set
 | 
			
		||||
# CONFIG_MWINCHIPC6 is not set
 | 
			
		||||
# CONFIG_NATSEMI is not set
 | 
			
		||||
# CONFIG_NE2K_PCI is not set
 | 
			
		||||
# CONFIG_NET_VENDOR_3COM is not set
 | 
			
		||||
CONFIG_NF_CONNTRACK=y
 | 
			
		||||
CONFIG_NOHIGHMEM=y
 | 
			
		||||
CONFIG_NO_HZ=y
 | 
			
		||||
CONFIG_NR_QUICK=1
 | 
			
		||||
# CONFIG_NSC_GPIO is not set
 | 
			
		||||
CONFIG_NVRAM=y
 | 
			
		||||
CONFIG_PAGE_OFFSET=0xC0000000
 | 
			
		||||
# CONFIG_PARAVIRT_GUEST is not set
 | 
			
		||||
# CONFIG_PC8736x_GPIO is not set
 | 
			
		||||
# CONFIG_PC87413_WDT is not set
 | 
			
		||||
CONFIG_PCI=y
 | 
			
		||||
# CONFIG_PCIEPORTBUS is not set
 | 
			
		||||
# CONFIG_PCIPCWATCHDOG is not set
 | 
			
		||||
CONFIG_PCI_BIOS=y
 | 
			
		||||
CONFIG_PCI_DIRECT=y
 | 
			
		||||
CONFIG_PCI_DOMAINS=y
 | 
			
		||||
CONFIG_PCI_GOANY=y
 | 
			
		||||
# CONFIG_PCI_GOBIOS is not set
 | 
			
		||||
# CONFIG_PCI_GODIRECT is not set
 | 
			
		||||
# CONFIG_PCI_GOMMCONFIG is not set
 | 
			
		||||
CONFIG_PHYLIB=y
 | 
			
		||||
CONFIG_PHYSICAL_ALIGN=0x100000
 | 
			
		||||
CONFIG_PHYSICAL_START=0x100000
 | 
			
		||||
# CONFIG_QSEMI_PHY is not set
 | 
			
		||||
CONFIG_QUICKLIST=y
 | 
			
		||||
# CONFIG_R6040 is not set
 | 
			
		||||
# CONFIG_RELOCATABLE is not set
 | 
			
		||||
# CONFIG_RTC is not set
 | 
			
		||||
# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
 | 
			
		||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
 | 
			
		||||
# CONFIG_SBC7240_WDT is not set
 | 
			
		||||
# CONFIG_SBC8360_WDT is not set
 | 
			
		||||
# CONFIG_SBC_EPX_C3_WATCHDOG is not set
 | 
			
		||||
# CONFIG_SC1200_WDT is not set
 | 
			
		||||
# CONFIG_SC520_WDT is not set
 | 
			
		||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
 | 
			
		||||
# CONFIG_SCSI_DMA is not set
 | 
			
		||||
# CONFIG_SCx200 is not set
 | 
			
		||||
CONFIG_SEMAPHORE_SLEEPERS=y
 | 
			
		||||
# CONFIG_SERIAL_8250_EXTENDED is not set
 | 
			
		||||
CONFIG_SLABINFO=y
 | 
			
		||||
# CONFIG_SMP is not set
 | 
			
		||||
# CONFIG_SMSC37B787_WDT is not set
 | 
			
		||||
# CONFIG_SMSC_PHY is not set
 | 
			
		||||
# CONFIG_SOFT_WATCHDOG is not set
 | 
			
		||||
# CONFIG_SPARSEMEM_STATIC is not set
 | 
			
		||||
# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
 | 
			
		||||
CONFIG_SSB_POSSIBLE=y
 | 
			
		||||
CONFIG_SYSVIPC_SYSCTL=y
 | 
			
		||||
# CONFIG_TELCLOCK is not set
 | 
			
		||||
CONFIG_TICK_ONESHOT=y
 | 
			
		||||
# CONFIG_TOSHIBA is not set
 | 
			
		||||
CONFIG_UID16=y
 | 
			
		||||
# CONFIG_USER_NS is not set
 | 
			
		||||
# CONFIG_VGASTATE is not set
 | 
			
		||||
# CONFIG_VIA_RHINE is not set
 | 
			
		||||
CONFIG_VIRTUALIZATION=y
 | 
			
		||||
# CONFIG_VM86 is not set
 | 
			
		||||
# CONFIG_VMSPLIT_1G is not set
 | 
			
		||||
# CONFIG_VMSPLIT_2G is not set
 | 
			
		||||
# CONFIG_VMSPLIT_2G_OPT is not set
 | 
			
		||||
CONFIG_VMSPLIT_3G=y
 | 
			
		||||
# CONFIG_VMSPLIT_3G_OPT is not set
 | 
			
		||||
CONFIG_VM_EVENT_COUNTERS=y
 | 
			
		||||
# CONFIG_WAFER_WDT is not set
 | 
			
		||||
CONFIG_X86=y
 | 
			
		||||
CONFIG_X86_32=y
 | 
			
		||||
# CONFIG_X86_64 is not set
 | 
			
		||||
CONFIG_X86_ALIGNMENT_16=y
 | 
			
		||||
# CONFIG_X86_BIGSMP is not set
 | 
			
		||||
CONFIG_X86_BIOS_REBOOT=y
 | 
			
		||||
CONFIG_X86_BSWAP=y
 | 
			
		||||
CONFIG_X86_CMPXCHG=y
 | 
			
		||||
CONFIG_X86_CPUID=y
 | 
			
		||||
# CONFIG_X86_ELAN is not set
 | 
			
		||||
# CONFIG_X86_ES7000 is not set
 | 
			
		||||
CONFIG_X86_F00F_BUG=y
 | 
			
		||||
# CONFIG_X86_GENERIC is not set
 | 
			
		||||
# CONFIG_X86_GENERICARCH is not set
 | 
			
		||||
CONFIG_X86_INVLPG=y
 | 
			
		||||
CONFIG_X86_L1_CACHE_SHIFT=4
 | 
			
		||||
# CONFIG_X86_MCE is not set
 | 
			
		||||
CONFIG_X86_MINIMUM_CPU_FAMILY=4
 | 
			
		||||
CONFIG_X86_MSR=y
 | 
			
		||||
# CONFIG_X86_NUMAQ is not set
 | 
			
		||||
# CONFIG_X86_PAE is not set
 | 
			
		||||
# CONFIG_X86_PC is not set
 | 
			
		||||
CONFIG_X86_POPAD_OK=y
 | 
			
		||||
CONFIG_X86_PPRO_FENCE=y
 | 
			
		||||
CONFIG_X86_RDC=y
 | 
			
		||||
CONFIG_X86_REBOOTFIXUPS=y
 | 
			
		||||
# CONFIG_X86_SUMMIT is not set
 | 
			
		||||
# CONFIG_X86_UP_APIC is not set
 | 
			
		||||
# CONFIG_X86_VISWS is not set
 | 
			
		||||
# CONFIG_X86_VOYAGER is not set
 | 
			
		||||
# CONFIG_X86_VSMP is not set
 | 
			
		||||
CONFIG_X86_WP_WORKS_OK=y
 | 
			
		||||
CONFIG_X86_XADD=y
 | 
			
		||||
# CONFIG_ZONE_DMA32 is not set
 | 
			
		||||
@@ -1,373 +0,0 @@
 | 
			
		||||
# CONFIG_60XX_WDT is not set
 | 
			
		||||
# CONFIG_64BIT is not set
 | 
			
		||||
# CONFIG_8139TOO is not set
 | 
			
		||||
# CONFIG_ACQUIRE_WDT is not set
 | 
			
		||||
# CONFIG_ADVANTECH_WDT is not set
 | 
			
		||||
# CONFIG_AGP is not set
 | 
			
		||||
# CONFIG_ALIM1535_WDT is not set
 | 
			
		||||
# CONFIG_ALIM7101_WDT is not set
 | 
			
		||||
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
 | 
			
		||||
CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
 | 
			
		||||
CONFIG_ARCH_HAS_CPU_RELAX=y
 | 
			
		||||
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
 | 
			
		||||
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
 | 
			
		||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
 | 
			
		||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
 | 
			
		||||
CONFIG_ARCH_POPULATES_NODE_MAP=y
 | 
			
		||||
CONFIG_ARCH_SUPPORTS_AOUT=y
 | 
			
		||||
# CONFIG_ARCH_SUPPORTS_MSI is not set
 | 
			
		||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
 | 
			
		||||
# CONFIG_ATA is not set
 | 
			
		||||
# CONFIG_ATA_NONSTANDARD is not set
 | 
			
		||||
# CONFIG_ATA_PIIX is not set
 | 
			
		||||
# CONFIG_AUDIT_ARCH is not set
 | 
			
		||||
CONFIG_BASE_SMALL=0
 | 
			
		||||
# CONFIG_BINFMT_AOUT is not set
 | 
			
		||||
# CONFIG_BINFMT_MISC is not set
 | 
			
		||||
CONFIG_BITREVERSE=y
 | 
			
		||||
# CONFIG_BLK_DEV_IDE is not set
 | 
			
		||||
# CONFIG_BLK_DEV_IDEDISK is not set
 | 
			
		||||
# CONFIG_BLK_DEV_IDEDMA is not set
 | 
			
		||||
CONFIG_BOUNCE=y
 | 
			
		||||
# CONFIG_BROADCOM_PHY is not set
 | 
			
		||||
CONFIG_CLASSIC_RCU=y
 | 
			
		||||
CONFIG_CLOCKSOURCE_WATCHDOG=y
 | 
			
		||||
# CONFIG_COMPAT_VDSO is not set
 | 
			
		||||
# CONFIG_CPU5_WDT is not set
 | 
			
		||||
# CONFIG_CPU_FREQ is not set
 | 
			
		||||
# CONFIG_CPU_IDLE is not set
 | 
			
		||||
# CONFIG_CRYPTO_AEAD is not set
 | 
			
		||||
# CONFIG_CRYPTO_AES_586 is not set
 | 
			
		||||
# CONFIG_CRYPTO_AUTHENC is not set
 | 
			
		||||
# CONFIG_CRYPTO_GF128MUL is not set
 | 
			
		||||
# CONFIG_CRYPTO_SALSA20_586 is not set
 | 
			
		||||
# CONFIG_CRYPTO_TWOFISH_586 is not set
 | 
			
		||||
# CONFIG_CS5535_GPIO is not set
 | 
			
		||||
# CONFIG_DCDBAS is not set
 | 
			
		||||
# CONFIG_DEBUG_BUGVERBOSE is not set
 | 
			
		||||
CONFIG_DEFAULT_CFQ=y
 | 
			
		||||
# CONFIG_DEFAULT_DEADLINE is not set
 | 
			
		||||
CONFIG_DEFAULT_IOSCHED="cfq"
 | 
			
		||||
CONFIG_DEFAULT_IO_DELAY_TYPE=0
 | 
			
		||||
# CONFIG_DELL_RBU is not set
 | 
			
		||||
CONFIG_DEVPORT=y
 | 
			
		||||
# CONFIG_DMADEVICES is not set
 | 
			
		||||
CONFIG_DMI=y
 | 
			
		||||
CONFIG_DMIID=y
 | 
			
		||||
CONFIG_DOUBLEFAULT=y
 | 
			
		||||
# CONFIG_E100 is not set
 | 
			
		||||
# CONFIG_E1000E_ENABLED is not set
 | 
			
		||||
CONFIG_EARLY_PRINTK=y
 | 
			
		||||
# CONFIG_EDAC is not set
 | 
			
		||||
# CONFIG_EDD is not set
 | 
			
		||||
# CONFIG_EUROTECH_WDT is not set
 | 
			
		||||
CONFIG_FAST_CMPXCHG_LOCAL=y
 | 
			
		||||
# CONFIG_FIXED_PHY is not set
 | 
			
		||||
CONFIG_FIX_EARLYCON_MEM=y
 | 
			
		||||
CONFIG_FS_POSIX_ACL=y
 | 
			
		||||
CONFIG_GENERIC_BUG=y
 | 
			
		||||
CONFIG_GENERIC_CLOCKEVENTS=y
 | 
			
		||||
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
 | 
			
		||||
CONFIG_GENERIC_CMOS_UPDATE=y
 | 
			
		||||
# CONFIG_GENERIC_CPU is not set
 | 
			
		||||
CONFIG_GENERIC_GPIO=y
 | 
			
		||||
CONFIG_GENERIC_IOMAP=y
 | 
			
		||||
CONFIG_GENERIC_ISA_DMA=y
 | 
			
		||||
# CONFIG_GENERIC_LOCKBREAK is not set
 | 
			
		||||
# CONFIG_GENERIC_TIME_VSYSCALL is not set
 | 
			
		||||
# CONFIG_GEN_RTC is not set
 | 
			
		||||
# CONFIG_HANGCHECK_TIMER is not set
 | 
			
		||||
CONFIG_HAS_DMA=y
 | 
			
		||||
CONFIG_HAS_IOMEM=y
 | 
			
		||||
CONFIG_HAS_IOPORT=y
 | 
			
		||||
CONFIG_HAVE_IDE=y
 | 
			
		||||
CONFIG_HAVE_KPROBES=y
 | 
			
		||||
CONFIG_HAVE_KRETPROBES=y
 | 
			
		||||
CONFIG_HAVE_KVM=y
 | 
			
		||||
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
 | 
			
		||||
CONFIG_HAVE_OPROFILE=y
 | 
			
		||||
# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
 | 
			
		||||
# CONFIG_HID is not set
 | 
			
		||||
CONFIG_HID_SUPPORT=y
 | 
			
		||||
# CONFIG_HIGHMEM4G is not set
 | 
			
		||||
# CONFIG_HIGHMEM64G is not set
 | 
			
		||||
# CONFIG_HIGH_RES_TIMERS is not set
 | 
			
		||||
# CONFIG_HPET_TIMER is not set
 | 
			
		||||
# CONFIG_HP_WATCHDOG is not set
 | 
			
		||||
CONFIG_HUGETLBFS=y
 | 
			
		||||
CONFIG_HUGETLB_PAGE=y
 | 
			
		||||
CONFIG_HW_RANDOM=y
 | 
			
		||||
# CONFIG_HW_RANDOM_AMD is not set
 | 
			
		||||
# CONFIG_HW_RANDOM_GEODE is not set
 | 
			
		||||
# CONFIG_HW_RANDOM_INTEL is not set
 | 
			
		||||
# CONFIG_HW_RANDOM_VIA is not set
 | 
			
		||||
CONFIG_HZ=250
 | 
			
		||||
# CONFIG_HZ_100 is not set
 | 
			
		||||
CONFIG_HZ_250=y
 | 
			
		||||
# CONFIG_I2C is not set
 | 
			
		||||
# CONFIG_I2C_ALGOBIT is not set
 | 
			
		||||
CONFIG_I2C_BOARDINFO=y
 | 
			
		||||
# CONFIG_I6300ESB_WDT is not set
 | 
			
		||||
# CONFIG_I8K is not set
 | 
			
		||||
# CONFIG_IB700_WDT is not set
 | 
			
		||||
# CONFIG_IBMASR is not set
 | 
			
		||||
# CONFIG_IBM_ASM is not set
 | 
			
		||||
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
 | 
			
		||||
# CONFIG_IBM_NEW_EMAC_RGMII is not set
 | 
			
		||||
# CONFIG_IBM_NEW_EMAC_TAH is not set
 | 
			
		||||
# CONFIG_IBM_NEW_EMAC_ZMII is not set
 | 
			
		||||
CONFIG_ICPLUS_PHY=y
 | 
			
		||||
# CONFIG_IDE is not set
 | 
			
		||||
CONFIG_IDE_ARCH_OBSOLETE_INIT=y
 | 
			
		||||
# CONFIG_IDE_GENERIC is not set
 | 
			
		||||
# CONFIG_IDE_PROC_FS is not set
 | 
			
		||||
CONFIG_INITRAMFS_SOURCE=""
 | 
			
		||||
# CONFIG_INPUT is not set
 | 
			
		||||
# CONFIG_INPUT_APANEL is not set
 | 
			
		||||
# CONFIG_INPUT_GPIO_BUTTONS is not set
 | 
			
		||||
CONFIG_INPUT_MISC=y
 | 
			
		||||
# CONFIG_INPUT_YEALINK is not set
 | 
			
		||||
# CONFIG_IOMMU_HELPER is not set
 | 
			
		||||
CONFIG_IOSCHED_CFQ=y
 | 
			
		||||
# CONFIG_IOSCHED_DEADLINE is not set
 | 
			
		||||
CONFIG_IO_DELAY_0X80=y
 | 
			
		||||
# CONFIG_IO_DELAY_0XED is not set
 | 
			
		||||
# CONFIG_IO_DELAY_NONE is not set
 | 
			
		||||
CONFIG_IO_DELAY_TYPE_0X80=0
 | 
			
		||||
CONFIG_IO_DELAY_TYPE_0XED=1
 | 
			
		||||
CONFIG_IO_DELAY_TYPE_NONE=3
 | 
			
		||||
CONFIG_IO_DELAY_TYPE_UDELAY=2
 | 
			
		||||
# CONFIG_IO_DELAY_UDELAY is not set
 | 
			
		||||
# CONFIG_IPWIRELESS is not set
 | 
			
		||||
# CONFIG_ISA is not set
 | 
			
		||||
CONFIG_ISA_DMA_API=y
 | 
			
		||||
# CONFIG_IT8712F_WDT is not set
 | 
			
		||||
# CONFIG_ITCO_WDT is not set
 | 
			
		||||
# CONFIG_JFS_FS is not set
 | 
			
		||||
CONFIG_KEXEC=y
 | 
			
		||||
CONFIG_KTIME_SCALAR=y
 | 
			
		||||
# CONFIG_KVM is not set
 | 
			
		||||
# CONFIG_LATENCYTOP is not set
 | 
			
		||||
CONFIG_LBD=y
 | 
			
		||||
# CONFIG_LEDS_ALIX is not set
 | 
			
		||||
CONFIG_LEDS_GPIO=y
 | 
			
		||||
# CONFIG_LGUEST is not set
 | 
			
		||||
CONFIG_LSF=y
 | 
			
		||||
# CONFIG_LZO_COMPRESS is not set
 | 
			
		||||
# CONFIG_LZO_DECOMPRESS is not set
 | 
			
		||||
# CONFIG_M386 is not set
 | 
			
		||||
CONFIG_M486=y
 | 
			
		||||
# CONFIG_M586 is not set
 | 
			
		||||
# CONFIG_M586MMX is not set
 | 
			
		||||
# CONFIG_M586TSC is not set
 | 
			
		||||
# CONFIG_M686 is not set
 | 
			
		||||
# CONFIG_MACHZ_WDT is not set
 | 
			
		||||
# CONFIG_MACINTOSH_DRIVERS is not set
 | 
			
		||||
CONFIG_MATH_EMULATION=y
 | 
			
		||||
# CONFIG_MCA is not set
 | 
			
		||||
# CONFIG_MCORE2 is not set
 | 
			
		||||
# CONFIG_MCRUSOE is not set
 | 
			
		||||
# CONFIG_MCYRIXIII is not set
 | 
			
		||||
# CONFIG_MDIO_BITBANG is not set
 | 
			
		||||
# CONFIG_MEFFICEON is not set
 | 
			
		||||
# CONFIG_MEMSTICK is not set
 | 
			
		||||
# CONFIG_MGEODEGX1 is not set
 | 
			
		||||
# CONFIG_MGEODE_LX is not set
 | 
			
		||||
# CONFIG_MICROCODE is not set
 | 
			
		||||
# CONFIG_MK6 is not set
 | 
			
		||||
# CONFIG_MK7 is not set
 | 
			
		||||
# CONFIG_MK8 is not set
 | 
			
		||||
CONFIG_MODULE_FORCE_UNLOAD=y
 | 
			
		||||
# CONFIG_MPENTIUM4 is not set
 | 
			
		||||
# CONFIG_MPENTIUMII is not set
 | 
			
		||||
# CONFIG_MPENTIUMIII is not set
 | 
			
		||||
# CONFIG_MPENTIUMM is not set
 | 
			
		||||
# CONFIG_MPSC is not set
 | 
			
		||||
CONFIG_MTD=y
 | 
			
		||||
# CONFIG_MTD_ABSENT is not set
 | 
			
		||||
CONFIG_MTD_BLKDEVS=y
 | 
			
		||||
CONFIG_MTD_BLOCK=y
 | 
			
		||||
# CONFIG_MTD_BLOCK2MTD is not set
 | 
			
		||||
CONFIG_MTD_CFI=y
 | 
			
		||||
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
 | 
			
		||||
CONFIG_MTD_CFI_AMDSTD=y
 | 
			
		||||
CONFIG_MTD_CFI_I1=y
 | 
			
		||||
CONFIG_MTD_CFI_I2=y
 | 
			
		||||
# CONFIG_MTD_CFI_I4 is not set
 | 
			
		||||
# CONFIG_MTD_CFI_I8 is not set
 | 
			
		||||
# CONFIG_MTD_CFI_INTELEXT is not set
 | 
			
		||||
# CONFIG_MTD_CFI_STAA is not set
 | 
			
		||||
CONFIG_MTD_CFI_UTIL=y
 | 
			
		||||
CONFIG_MTD_CHAR=y
 | 
			
		||||
CONFIG_MTD_CMDLINE_PARTS=y
 | 
			
		||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
 | 
			
		||||
CONFIG_MTD_CONCAT=y
 | 
			
		||||
# CONFIG_MTD_DEBUG is not set
 | 
			
		||||
# CONFIG_MTD_DOC2000 is not set
 | 
			
		||||
# CONFIG_MTD_DOC2001 is not set
 | 
			
		||||
# CONFIG_MTD_DOC2001PLUS is not set
 | 
			
		||||
CONFIG_MTD_GEN_PROBE=y
 | 
			
		||||
# CONFIG_MTD_JEDECPROBE is not set
 | 
			
		||||
CONFIG_MTD_MAP_BANK_WIDTH_1=y
 | 
			
		||||
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
 | 
			
		||||
CONFIG_MTD_MAP_BANK_WIDTH_2=y
 | 
			
		||||
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
 | 
			
		||||
CONFIG_MTD_MAP_BANK_WIDTH_4=y
 | 
			
		||||
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
 | 
			
		||||
# CONFIG_MTD_MTDRAM is not set
 | 
			
		||||
# CONFIG_MTD_NETSC520 is not set
 | 
			
		||||
# CONFIG_MTD_ONENAND is not set
 | 
			
		||||
CONFIG_MTD_PARTITIONS=y
 | 
			
		||||
# CONFIG_MTD_PHRAM is not set
 | 
			
		||||
# CONFIG_MTD_PHYSMAP is not set
 | 
			
		||||
# CONFIG_MTD_PLATRAM is not set
 | 
			
		||||
# CONFIG_MTD_PMC551 is not set
 | 
			
		||||
# CONFIG_MTD_RAM is not set
 | 
			
		||||
CONFIG_MTD_RDC3210=y
 | 
			
		||||
CONFIG_MTD_RDC3210_ALLOW_JFFS2=y
 | 
			
		||||
CONFIG_MTD_RDC3210_BUSWIDTH=2
 | 
			
		||||
# CONFIG_MTD_RDC3210_FACTORY_PRESENT is not set
 | 
			
		||||
CONFIG_MTD_RDC3210_SIZE=0x400000
 | 
			
		||||
# CONFIG_MTD_RDC3210_STATIC_MAP is not set
 | 
			
		||||
# CONFIG_MTD_REDBOOT_PARTS is not set
 | 
			
		||||
# CONFIG_MTD_ROM is not set
 | 
			
		||||
# CONFIG_MTD_SC520CDP is not set
 | 
			
		||||
# CONFIG_MTD_SLRAM is not set
 | 
			
		||||
# CONFIG_MTD_TS5500 is not set
 | 
			
		||||
# CONFIG_MTRR is not set
 | 
			
		||||
# CONFIG_MVIAC3_2 is not set
 | 
			
		||||
# CONFIG_MVIAC7 is not set
 | 
			
		||||
# CONFIG_MWINCHIP2 is not set
 | 
			
		||||
# CONFIG_MWINCHIP3D is not set
 | 
			
		||||
# CONFIG_MWINCHIPC6 is not set
 | 
			
		||||
# CONFIG_NATSEMI is not set
 | 
			
		||||
# CONFIG_NE2K_PCI is not set
 | 
			
		||||
# CONFIG_NET_VENDOR_3COM is not set
 | 
			
		||||
# CONFIG_NLS_ISO8859_2 is not set
 | 
			
		||||
CONFIG_NOHIGHMEM=y
 | 
			
		||||
# CONFIG_NSC_GPIO is not set
 | 
			
		||||
CONFIG_NVRAM=y
 | 
			
		||||
CONFIG_PAGE_OFFSET=0xC0000000
 | 
			
		||||
# CONFIG_PARAVIRT_GUEST is not set
 | 
			
		||||
# CONFIG_PATA_ARTOP is not set
 | 
			
		||||
# CONFIG_PATA_CS5536 is not set
 | 
			
		||||
# CONFIG_PC8736x_GPIO is not set
 | 
			
		||||
# CONFIG_PC87413_WDT is not set
 | 
			
		||||
# CONFIG_PCCARD is not set
 | 
			
		||||
# CONFIG_PCCARD_NONSTATIC is not set
 | 
			
		||||
CONFIG_PCI=y
 | 
			
		||||
# CONFIG_PCIEPORTBUS is not set
 | 
			
		||||
# CONFIG_PCIPCWATCHDOG is not set
 | 
			
		||||
CONFIG_PCI_BIOS=y
 | 
			
		||||
CONFIG_PCI_DIRECT=y
 | 
			
		||||
CONFIG_PCI_DOMAINS=y
 | 
			
		||||
CONFIG_PCI_GOANY=y
 | 
			
		||||
# CONFIG_PCI_GOBIOS is not set
 | 
			
		||||
# CONFIG_PCI_GODIRECT is not set
 | 
			
		||||
# CONFIG_PCI_GOMMCONFIG is not set
 | 
			
		||||
# CONFIG_PCMCIA is not set
 | 
			
		||||
CONFIG_PHYLIB=y
 | 
			
		||||
CONFIG_PHYSICAL_ALIGN=0x100000
 | 
			
		||||
CONFIG_PHYSICAL_START=0x100000
 | 
			
		||||
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
 | 
			
		||||
# CONFIG_QSEMI_PHY is not set
 | 
			
		||||
# CONFIG_R6040 is not set
 | 
			
		||||
# CONFIG_REALTEK_PHY is not set
 | 
			
		||||
# CONFIG_RELOCATABLE is not set
 | 
			
		||||
# CONFIG_RTC is not set
 | 
			
		||||
# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
 | 
			
		||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
 | 
			
		||||
# CONFIG_SBC7240_WDT is not set
 | 
			
		||||
# CONFIG_SBC8360_WDT is not set
 | 
			
		||||
# CONFIG_SBC_EPX_C3_WATCHDOG is not set
 | 
			
		||||
# CONFIG_SC1200_WDT is not set
 | 
			
		||||
# CONFIG_SC520_WDT is not set
 | 
			
		||||
# CONFIG_SCHED_HRTICK is not set
 | 
			
		||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
 | 
			
		||||
# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
 | 
			
		||||
# CONFIG_SCSI_MULTI_LUN is not set
 | 
			
		||||
# CONFIG_SCSI_WAIT_SCAN is not set
 | 
			
		||||
# CONFIG_SCx200 is not set
 | 
			
		||||
# CONFIG_SCx200_ACB is not set
 | 
			
		||||
CONFIG_SEMAPHORE_SLEEPERS=y
 | 
			
		||||
# CONFIG_SERIAL_8250_EXTENDED is not set
 | 
			
		||||
CONFIG_SLABINFO=y
 | 
			
		||||
# CONFIG_SMP is not set
 | 
			
		||||
# CONFIG_SMSC37B787_WDT is not set
 | 
			
		||||
# CONFIG_SMSC_PHY is not set
 | 
			
		||||
# CONFIG_SND_SIS7019 is not set
 | 
			
		||||
# CONFIG_SOFT_WATCHDOG is not set
 | 
			
		||||
# CONFIG_SONYPI is not set
 | 
			
		||||
# CONFIG_SPARSEMEM_STATIC is not set
 | 
			
		||||
# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
 | 
			
		||||
CONFIG_SSB_POSSIBLE=y
 | 
			
		||||
CONFIG_SYSVIPC_SYSCTL=y
 | 
			
		||||
# CONFIG_TELCLOCK is not set
 | 
			
		||||
# CONFIG_TICK_ONESHOT is not set
 | 
			
		||||
# CONFIG_TOSHIBA is not set
 | 
			
		||||
CONFIG_UID16=y
 | 
			
		||||
# CONFIG_USB is not set
 | 
			
		||||
# CONFIG_USBPCWATCHDOG is not set
 | 
			
		||||
# CONFIG_USB_EHCI_HCD is not set
 | 
			
		||||
# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
 | 
			
		||||
# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
 | 
			
		||||
# CONFIG_USB_OHCI_HCD is not set
 | 
			
		||||
# CONFIG_USB_PWC is not set
 | 
			
		||||
# CONFIG_USB_PWC_DEBUG is not set
 | 
			
		||||
# CONFIG_USB_R8A66597_HCD is not set
 | 
			
		||||
# CONFIG_USB_SERIAL_CH341 is not set
 | 
			
		||||
# CONFIG_USB_SERIAL_OTI6858 is not set
 | 
			
		||||
CONFIG_USB_SUPPORT=y
 | 
			
		||||
# CONFIG_USB_UHCI_HCD is not set
 | 
			
		||||
CONFIG_V4L_USB_DRIVERS=y
 | 
			
		||||
# CONFIG_VGASTATE is not set
 | 
			
		||||
# CONFIG_VIA_RHINE is not set
 | 
			
		||||
CONFIG_VIDEO_CAPTURE_DRIVERS=y
 | 
			
		||||
# CONFIG_VIDEO_CPIA2 is not set
 | 
			
		||||
CONFIG_VIDEO_V4L1=y
 | 
			
		||||
# CONFIG_VIDEO_V4L2_COMMON is not set
 | 
			
		||||
# CONFIG_VIRTIO_BALLOON is not set
 | 
			
		||||
# CONFIG_VIRTIO_PCI is not set
 | 
			
		||||
CONFIG_VIRTUALIZATION=y
 | 
			
		||||
# CONFIG_VM86 is not set
 | 
			
		||||
# CONFIG_VMSPLIT_1G is not set
 | 
			
		||||
# CONFIG_VMSPLIT_2G is not set
 | 
			
		||||
# CONFIG_VMSPLIT_2G_OPT is not set
 | 
			
		||||
CONFIG_VMSPLIT_3G=y
 | 
			
		||||
# CONFIG_VMSPLIT_3G_OPT is not set
 | 
			
		||||
CONFIG_VM_EVENT_COUNTERS=y
 | 
			
		||||
# CONFIG_WAFER_WDT is not set
 | 
			
		||||
CONFIG_X86=y
 | 
			
		||||
CONFIG_X86_32=y
 | 
			
		||||
# CONFIG_X86_64 is not set
 | 
			
		||||
CONFIG_X86_ALIGNMENT_16=y
 | 
			
		||||
# CONFIG_X86_BIGSMP is not set
 | 
			
		||||
CONFIG_X86_BIOS_REBOOT=y
 | 
			
		||||
CONFIG_X86_BSWAP=y
 | 
			
		||||
CONFIG_X86_CMPXCHG=y
 | 
			
		||||
CONFIG_X86_CPUID=y
 | 
			
		||||
# CONFIG_X86_ELAN is not set
 | 
			
		||||
# CONFIG_X86_ES7000 is not set
 | 
			
		||||
CONFIG_X86_F00F_BUG=y
 | 
			
		||||
# CONFIG_X86_GENERIC is not set
 | 
			
		||||
# CONFIG_X86_GENERICARCH is not set
 | 
			
		||||
CONFIG_X86_INVLPG=y
 | 
			
		||||
CONFIG_X86_L1_CACHE_SHIFT=4
 | 
			
		||||
# CONFIG_X86_MCE is not set
 | 
			
		||||
CONFIG_X86_MINIMUM_CPU_FAMILY=4
 | 
			
		||||
CONFIG_X86_MSR=y
 | 
			
		||||
# CONFIG_X86_NUMAQ is not set
 | 
			
		||||
# CONFIG_X86_PAE is not set
 | 
			
		||||
# CONFIG_X86_PC is not set
 | 
			
		||||
CONFIG_X86_POPAD_OK=y
 | 
			
		||||
CONFIG_X86_PPRO_FENCE=y
 | 
			
		||||
CONFIG_X86_RDC321X=y
 | 
			
		||||
CONFIG_X86_REBOOTFIXUPS=y
 | 
			
		||||
# CONFIG_X86_SUMMIT is not set
 | 
			
		||||
# CONFIG_X86_UP_APIC is not set
 | 
			
		||||
# CONFIG_X86_VISWS is not set
 | 
			
		||||
# CONFIG_X86_VOYAGER is not set
 | 
			
		||||
# CONFIG_X86_VSMP is not set
 | 
			
		||||
CONFIG_X86_WP_WORKS_OK=y
 | 
			
		||||
CONFIG_X86_XADD=y
 | 
			
		||||
# CONFIG_ZONE_DMA32 is not set
 | 
			
		||||
@@ -1,330 +0,0 @@
 | 
			
		||||
# CONFIG_4KSTACKS is not set
 | 
			
		||||
# CONFIG_60XX_WDT is not set
 | 
			
		||||
# CONFIG_64BIT is not set
 | 
			
		||||
# CONFIG_8139TOO is not set
 | 
			
		||||
# CONFIG_ACQUIRE_WDT is not set
 | 
			
		||||
# CONFIG_ADVANTECH_WDT is not set
 | 
			
		||||
# CONFIG_AGP is not set
 | 
			
		||||
# CONFIG_ALIM1535_WDT is not set
 | 
			
		||||
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
 | 
			
		||||
CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
 | 
			
		||||
CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
 | 
			
		||||
CONFIG_ARCH_HAS_CPU_RELAX=y
 | 
			
		||||
CONFIG_ARCH_HAS_DEFAULT_IDLE=y
 | 
			
		||||
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
 | 
			
		||||
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
 | 
			
		||||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
 | 
			
		||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
 | 
			
		||||
CONFIG_ARCH_POPULATES_NODE_MAP=y
 | 
			
		||||
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
 | 
			
		||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
 | 
			
		||||
CONFIG_ARCH_SUPPORTS_AOUT=y
 | 
			
		||||
# CONFIG_ARCH_SUPPORTS_MSI is not set
 | 
			
		||||
CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
 | 
			
		||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
 | 
			
		||||
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
 | 
			
		||||
# CONFIG_AUDIT_ARCH is not set
 | 
			
		||||
CONFIG_BASE_SMALL=0
 | 
			
		||||
# CONFIG_BINFMT_AOUT is not set
 | 
			
		||||
CONFIG_BITREVERSE=y
 | 
			
		||||
CONFIG_BOUNCE=y
 | 
			
		||||
CONFIG_CLASSIC_RCU=y
 | 
			
		||||
CONFIG_CLOCKSOURCE_WATCHDOG=y
 | 
			
		||||
# CONFIG_COMPAT_VDSO is not set
 | 
			
		||||
# CONFIG_CPU5_WDT is not set
 | 
			
		||||
# CONFIG_CPU_FREQ is not set
 | 
			
		||||
# CONFIG_CPU_IDLE is not set
 | 
			
		||||
# CONFIG_CRYPTO_AES_586 is not set
 | 
			
		||||
# CONFIG_CRYPTO_SALSA20_586 is not set
 | 
			
		||||
# CONFIG_CRYPTO_TWOFISH_586 is not set
 | 
			
		||||
# CONFIG_CS5535_GPIO is not set
 | 
			
		||||
# CONFIG_DCDBAS is not set
 | 
			
		||||
# CONFIG_DEBUG_BUGVERBOSE is not set
 | 
			
		||||
CONFIG_DEFAULT_CFQ=y
 | 
			
		||||
# CONFIG_DEFAULT_DEADLINE is not set
 | 
			
		||||
CONFIG_DEFAULT_IOSCHED="cfq"
 | 
			
		||||
CONFIG_DEFAULT_IO_DELAY_TYPE=0
 | 
			
		||||
# CONFIG_DELL_RBU is not set
 | 
			
		||||
CONFIG_DEVPORT=y
 | 
			
		||||
CONFIG_DMI=y
 | 
			
		||||
CONFIG_DMIID=y
 | 
			
		||||
CONFIG_DOUBLEFAULT=y
 | 
			
		||||
CONFIG_EARLY_PRINTK=y
 | 
			
		||||
# CONFIG_EDAC is not set
 | 
			
		||||
# CONFIG_EDD is not set
 | 
			
		||||
# CONFIG_EUROTECH_WDT is not set
 | 
			
		||||
CONFIG_FAST_CMPXCHG_LOCAL=y
 | 
			
		||||
CONFIG_FIRMWARE_MEMMAP=y
 | 
			
		||||
# CONFIG_FIXED_PHY is not set
 | 
			
		||||
CONFIG_FIX_EARLYCON_MEM=y
 | 
			
		||||
CONFIG_GENERIC_BUG=y
 | 
			
		||||
CONFIG_GENERIC_CLOCKEVENTS=y
 | 
			
		||||
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
 | 
			
		||||
CONFIG_GENERIC_CMOS_UPDATE=y
 | 
			
		||||
# CONFIG_GENERIC_CPU is not set
 | 
			
		||||
CONFIG_GENERIC_FIND_FIRST_BIT=y
 | 
			
		||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
 | 
			
		||||
# CONFIG_GENERIC_GPIO is not set
 | 
			
		||||
CONFIG_GENERIC_IOMAP=y
 | 
			
		||||
CONFIG_GENERIC_ISA_DMA=y
 | 
			
		||||
# CONFIG_GENERIC_LOCKBREAK is not set
 | 
			
		||||
# CONFIG_GENERIC_TIME_VSYSCALL is not set
 | 
			
		||||
# CONFIG_GEN_RTC is not set
 | 
			
		||||
# CONFIG_HANGCHECK_TIMER is not set
 | 
			
		||||
CONFIG_HAS_DMA=y
 | 
			
		||||
CONFIG_HAS_IOMEM=y
 | 
			
		||||
CONFIG_HAS_IOPORT=y
 | 
			
		||||
CONFIG_HAVE_ARCH_KGDB=y
 | 
			
		||||
# CONFIG_HAVE_ARCH_TRACEHOOK is not set
 | 
			
		||||
# CONFIG_HAVE_CLK is not set
 | 
			
		||||
# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set
 | 
			
		||||
# CONFIG_HAVE_DMA_ATTRS is not set
 | 
			
		||||
CONFIG_HAVE_DYNAMIC_FTRACE=y
 | 
			
		||||
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
 | 
			
		||||
CONFIG_HAVE_FTRACE=y
 | 
			
		||||
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
 | 
			
		||||
CONFIG_HAVE_IDE=y
 | 
			
		||||
CONFIG_HAVE_IOREMAP_PROT=y
 | 
			
		||||
CONFIG_HAVE_KPROBES=y
 | 
			
		||||
CONFIG_HAVE_KRETPROBES=y
 | 
			
		||||
CONFIG_HAVE_KVM=y
 | 
			
		||||
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
 | 
			
		||||
CONFIG_HAVE_OPROFILE=y
 | 
			
		||||
# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
 | 
			
		||||
CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
 | 
			
		||||
# CONFIG_HIGHMEM4G is not set
 | 
			
		||||
# CONFIG_HIGHMEM64G is not set
 | 
			
		||||
# CONFIG_HIGH_RES_TIMERS is not set
 | 
			
		||||
# CONFIG_HPET_TIMER is not set
 | 
			
		||||
# CONFIG_HP_WATCHDOG is not set
 | 
			
		||||
CONFIG_HUGETLBFS=y
 | 
			
		||||
CONFIG_HUGETLB_PAGE=y
 | 
			
		||||
CONFIG_HW_RANDOM=y
 | 
			
		||||
# CONFIG_HW_RANDOM_AMD is not set
 | 
			
		||||
# CONFIG_HW_RANDOM_GEODE is not set
 | 
			
		||||
# CONFIG_HW_RANDOM_INTEL is not set
 | 
			
		||||
# CONFIG_HW_RANDOM_VIA is not set
 | 
			
		||||
CONFIG_HZ=250
 | 
			
		||||
# CONFIG_HZ_100 is not set
 | 
			
		||||
CONFIG_HZ_250=y
 | 
			
		||||
# CONFIG_I2C is not set
 | 
			
		||||
# CONFIG_I6300ESB_WDT is not set
 | 
			
		||||
# CONFIG_I8K is not set
 | 
			
		||||
# CONFIG_IB700_WDT is not set
 | 
			
		||||
# CONFIG_IBMASR is not set
 | 
			
		||||
CONFIG_ICPLUS_PHY=y
 | 
			
		||||
# CONFIG_IDE is not set
 | 
			
		||||
CONFIG_INITRAMFS_SOURCE=""
 | 
			
		||||
# CONFIG_IOMMU_HELPER is not set
 | 
			
		||||
CONFIG_IOSCHED_CFQ=y
 | 
			
		||||
# CONFIG_IOSCHED_DEADLINE is not set
 | 
			
		||||
CONFIG_IO_DELAY_0X80=y
 | 
			
		||||
# CONFIG_IO_DELAY_0XED is not set
 | 
			
		||||
# CONFIG_IO_DELAY_NONE is not set
 | 
			
		||||
CONFIG_IO_DELAY_TYPE_0X80=0
 | 
			
		||||
CONFIG_IO_DELAY_TYPE_0XED=1
 | 
			
		||||
CONFIG_IO_DELAY_TYPE_NONE=3
 | 
			
		||||
CONFIG_IO_DELAY_TYPE_UDELAY=2
 | 
			
		||||
# CONFIG_IO_DELAY_UDELAY is not set
 | 
			
		||||
# CONFIG_ISA is not set
 | 
			
		||||
CONFIG_ISA_DMA_API=y
 | 
			
		||||
# CONFIG_ISCSI_IBFT_FIND is not set
 | 
			
		||||
# CONFIG_IT8712F_WDT is not set
 | 
			
		||||
# CONFIG_ITCO_WDT is not set
 | 
			
		||||
# CONFIG_KERNEL_BZIP2 is not set
 | 
			
		||||
# CONFIG_KERNEL_GZIP is not set
 | 
			
		||||
CONFIG_KERNEL_LZMA=y
 | 
			
		||||
CONFIG_KEXEC=y
 | 
			
		||||
CONFIG_KMOD=y
 | 
			
		||||
CONFIG_KTIME_SCALAR=y
 | 
			
		||||
# CONFIG_KVM is not set
 | 
			
		||||
CONFIG_LBD=y
 | 
			
		||||
# CONFIG_LEDS_ALIX is not set
 | 
			
		||||
# CONFIG_LGUEST is not set
 | 
			
		||||
CONFIG_LSF=y
 | 
			
		||||
# CONFIG_M386 is not set
 | 
			
		||||
CONFIG_M486=y
 | 
			
		||||
# CONFIG_M586 is not set
 | 
			
		||||
# CONFIG_M586MMX is not set
 | 
			
		||||
# CONFIG_M586TSC is not set
 | 
			
		||||
# CONFIG_M686 is not set
 | 
			
		||||
# CONFIG_MACHZ_WDT is not set
 | 
			
		||||
# CONFIG_MACINTOSH_DRIVERS is not set
 | 
			
		||||
CONFIG_MATH_EMULATION=y
 | 
			
		||||
# CONFIG_MCA is not set
 | 
			
		||||
# CONFIG_MCORE2 is not set
 | 
			
		||||
# CONFIG_MCRUSOE is not set
 | 
			
		||||
# CONFIG_MCYRIXIII is not set
 | 
			
		||||
# CONFIG_MEFFICEON is not set
 | 
			
		||||
# CONFIG_MEMTEST is not set
 | 
			
		||||
# CONFIG_MFD_CORE is not set
 | 
			
		||||
# CONFIG_MFD_TMIO is not set
 | 
			
		||||
# CONFIG_MGEODEGX1 is not set
 | 
			
		||||
# CONFIG_MGEODE_LX is not set
 | 
			
		||||
# CONFIG_MICROCODE is not set
 | 
			
		||||
# CONFIG_MK6 is not set
 | 
			
		||||
# CONFIG_MK7 is not set
 | 
			
		||||
# CONFIG_MK8 is not set
 | 
			
		||||
CONFIG_MODULE_FORCE_UNLOAD=y
 | 
			
		||||
# CONFIG_MPENTIUM4 is not set
 | 
			
		||||
# CONFIG_MPENTIUMII is not set
 | 
			
		||||
# CONFIG_MPENTIUMIII is not set
 | 
			
		||||
# CONFIG_MPENTIUMM is not set
 | 
			
		||||
# CONFIG_MPSC is not set
 | 
			
		||||
CONFIG_MTD=y
 | 
			
		||||
# CONFIG_MTD_ABSENT is not set
 | 
			
		||||
CONFIG_MTD_BLKDEVS=y
 | 
			
		||||
CONFIG_MTD_BLOCK=y
 | 
			
		||||
# CONFIG_MTD_BLOCK2MTD is not set
 | 
			
		||||
CONFIG_MTD_CFI=y
 | 
			
		||||
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
 | 
			
		||||
CONFIG_MTD_CFI_AMDSTD=y
 | 
			
		||||
CONFIG_MTD_CFI_I1=y
 | 
			
		||||
CONFIG_MTD_CFI_I2=y
 | 
			
		||||
# CONFIG_MTD_CFI_I4 is not set
 | 
			
		||||
# CONFIG_MTD_CFI_I8 is not set
 | 
			
		||||
# CONFIG_MTD_CFI_INTELEXT is not set
 | 
			
		||||
# CONFIG_MTD_CFI_STAA is not set
 | 
			
		||||
CONFIG_MTD_CFI_UTIL=y
 | 
			
		||||
CONFIG_MTD_CHAR=y
 | 
			
		||||
CONFIG_MTD_CMDLINE_PARTS=y
 | 
			
		||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
 | 
			
		||||
CONFIG_MTD_CONCAT=y
 | 
			
		||||
CONFIG_MTD_GEN_PROBE=y
 | 
			
		||||
# CONFIG_MTD_JEDECPROBE is not set
 | 
			
		||||
CONFIG_MTD_MAP_BANK_WIDTH_1=y
 | 
			
		||||
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
 | 
			
		||||
CONFIG_MTD_MAP_BANK_WIDTH_2=y
 | 
			
		||||
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
 | 
			
		||||
CONFIG_MTD_MAP_BANK_WIDTH_4=y
 | 
			
		||||
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
 | 
			
		||||
# CONFIG_MTD_MTDRAM is not set
 | 
			
		||||
# CONFIG_MTD_NETSC520 is not set
 | 
			
		||||
# CONFIG_MTD_ONENAND is not set
 | 
			
		||||
CONFIG_MTD_PARTITIONS=y
 | 
			
		||||
# CONFIG_MTD_PHRAM is not set
 | 
			
		||||
# CONFIG_MTD_PHYSMAP is not set
 | 
			
		||||
# CONFIG_MTD_PLATRAM is not set
 | 
			
		||||
# CONFIG_MTD_PMC551 is not set
 | 
			
		||||
# CONFIG_MTD_RAM is not set
 | 
			
		||||
CONFIG_MTD_RDC3210=y
 | 
			
		||||
CONFIG_MTD_RDC3210_ALLOW_JFFS2=y
 | 
			
		||||
CONFIG_MTD_RDC3210_BUSWIDTH=2
 | 
			
		||||
# CONFIG_MTD_RDC3210_FACTORY_PRESENT is not set
 | 
			
		||||
CONFIG_MTD_RDC3210_SIZE=0x400000
 | 
			
		||||
# CONFIG_MTD_RDC3210_STATIC_MAP is not set
 | 
			
		||||
# CONFIG_MTD_REDBOOT_PARTS is not set
 | 
			
		||||
# CONFIG_MTD_ROM is not set
 | 
			
		||||
# CONFIG_MTD_SC520CDP is not set
 | 
			
		||||
# CONFIG_MTD_SLRAM is not set
 | 
			
		||||
# CONFIG_MTD_TS5500 is not set
 | 
			
		||||
# CONFIG_MTRR is not set
 | 
			
		||||
# CONFIG_MVIAC3_2 is not set
 | 
			
		||||
# CONFIG_MVIAC7 is not set
 | 
			
		||||
# CONFIG_MWINCHIP2 is not set
 | 
			
		||||
# CONFIG_MWINCHIP3D is not set
 | 
			
		||||
# CONFIG_MWINCHIPC6 is not set
 | 
			
		||||
# CONFIG_NATSEMI is not set
 | 
			
		||||
CONFIG_NOHIGHMEM=y
 | 
			
		||||
# CONFIG_NSC_GPIO is not set
 | 
			
		||||
CONFIG_NVRAM=y
 | 
			
		||||
# CONFIG_OLPC is not set
 | 
			
		||||
# CONFIG_OPTIMIZE_INLINING is not set
 | 
			
		||||
CONFIG_PAGEFLAGS_EXTENDED=y
 | 
			
		||||
CONFIG_PAGE_OFFSET=0xC0000000
 | 
			
		||||
# CONFIG_PARAVIRT_GUEST is not set
 | 
			
		||||
# CONFIG_PC8736x_GPIO is not set
 | 
			
		||||
# CONFIG_PC87413_WDT is not set
 | 
			
		||||
CONFIG_PCI=y
 | 
			
		||||
# CONFIG_PCIEPORTBUS is not set
 | 
			
		||||
CONFIG_PCI_BIOS=y
 | 
			
		||||
CONFIG_PCI_DIRECT=y
 | 
			
		||||
CONFIG_PCI_DOMAINS=y
 | 
			
		||||
CONFIG_PCI_GOANY=y
 | 
			
		||||
# CONFIG_PCI_GOBIOS is not set
 | 
			
		||||
# CONFIG_PCI_GODIRECT is not set
 | 
			
		||||
# CONFIG_PCI_GOMMCONFIG is not set
 | 
			
		||||
# CONFIG_PCI_GOOLPC is not set
 | 
			
		||||
# CONFIG_PCSPKR_PLATFORM is not set
 | 
			
		||||
CONFIG_PHYLIB=y
 | 
			
		||||
CONFIG_PHYSICAL_ALIGN=0x100000
 | 
			
		||||
CONFIG_PHYSICAL_START=0x100000
 | 
			
		||||
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
 | 
			
		||||
# CONFIG_R6040 is not set
 | 
			
		||||
CONFIG_RDC321X_WDT=y
 | 
			
		||||
# CONFIG_RD_BZIP2 is not set
 | 
			
		||||
CONFIG_RD_GZIP=y
 | 
			
		||||
# CONFIG_RD_LZMA is not set
 | 
			
		||||
# CONFIG_RELOCATABLE is not set
 | 
			
		||||
# CONFIG_RTC is not set
 | 
			
		||||
# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
 | 
			
		||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
 | 
			
		||||
# CONFIG_SBC7240_WDT is not set
 | 
			
		||||
# CONFIG_SBC8360_WDT is not set
 | 
			
		||||
# CONFIG_SBC_EPX_C3_WATCHDOG is not set
 | 
			
		||||
# CONFIG_SC1200_WDT is not set
 | 
			
		||||
# CONFIG_SC520_WDT is not set
 | 
			
		||||
# CONFIG_SCHED_HRTICK is not set
 | 
			
		||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
 | 
			
		||||
# CONFIG_SCSI_DMA is not set
 | 
			
		||||
# CONFIG_SCx200 is not set
 | 
			
		||||
# CONFIG_SERIAL_8250_EXTENDED is not set
 | 
			
		||||
# CONFIG_SMP is not set
 | 
			
		||||
# CONFIG_SMSC37B787_WDT is not set
 | 
			
		||||
# CONFIG_SOFT_WATCHDOG is not set
 | 
			
		||||
CONFIG_SPARSEMEM_STATIC=y
 | 
			
		||||
# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
 | 
			
		||||
CONFIG_SSB_POSSIBLE=y
 | 
			
		||||
# CONFIG_STRICT_DEVMEM is not set
 | 
			
		||||
# CONFIG_SYSPROF_TRACER is not set
 | 
			
		||||
CONFIG_SYSVIPC_SYSCTL=y
 | 
			
		||||
# CONFIG_TELCLOCK is not set
 | 
			
		||||
# CONFIG_TICK_ONESHOT is not set
 | 
			
		||||
# CONFIG_TOSHIBA is not set
 | 
			
		||||
CONFIG_UID16=y
 | 
			
		||||
CONFIG_USB_SUPPORT=y
 | 
			
		||||
# CONFIG_VGASTATE is not set
 | 
			
		||||
# CONFIG_VIA_RHINE is not set
 | 
			
		||||
# CONFIG_VIRTIO_BALLOON is not set
 | 
			
		||||
# CONFIG_VIRTIO_PCI is not set
 | 
			
		||||
CONFIG_VIRTUALIZATION=y
 | 
			
		||||
# CONFIG_VM86 is not set
 | 
			
		||||
# CONFIG_VMSPLIT_1G is not set
 | 
			
		||||
# CONFIG_VMSPLIT_2G is not set
 | 
			
		||||
# CONFIG_VMSPLIT_2G_OPT is not set
 | 
			
		||||
CONFIG_VMSPLIT_3G=y
 | 
			
		||||
# CONFIG_VMSPLIT_3G_OPT is not set
 | 
			
		||||
CONFIG_VM_EVENT_COUNTERS=y
 | 
			
		||||
# CONFIG_WAFER_WDT is not set
 | 
			
		||||
CONFIG_X86=y
 | 
			
		||||
CONFIG_X86_32=y
 | 
			
		||||
# CONFIG_X86_64 is not set
 | 
			
		||||
CONFIG_X86_ALIGNMENT_16=y
 | 
			
		||||
CONFIG_X86_BIOS_REBOOT=y
 | 
			
		||||
CONFIG_X86_BSWAP=y
 | 
			
		||||
CONFIG_X86_CMPXCHG=y
 | 
			
		||||
CONFIG_X86_CPU=y
 | 
			
		||||
CONFIG_X86_CPUID=y
 | 
			
		||||
# CONFIG_X86_ELAN is not set
 | 
			
		||||
CONFIG_X86_F00F_BUG=y
 | 
			
		||||
# CONFIG_X86_GENERIC is not set
 | 
			
		||||
# CONFIG_X86_GENERICARCH is not set
 | 
			
		||||
CONFIG_X86_INVLPG=y
 | 
			
		||||
CONFIG_X86_L1_CACHE_SHIFT=4
 | 
			
		||||
# CONFIG_X86_MCE is not set
 | 
			
		||||
CONFIG_X86_MINIMUM_CPU_FAMILY=4
 | 
			
		||||
CONFIG_X86_MSR=y
 | 
			
		||||
# CONFIG_X86_PAE is not set
 | 
			
		||||
CONFIG_X86_PC=y
 | 
			
		||||
CONFIG_X86_POPAD_OK=y
 | 
			
		||||
CONFIG_X86_PPRO_FENCE=y
 | 
			
		||||
CONFIG_X86_RDC321X=y
 | 
			
		||||
CONFIG_X86_REBOOTFIXUPS=y
 | 
			
		||||
CONFIG_X86_RESERVE_LOW_64K=y
 | 
			
		||||
# CONFIG_X86_UP_APIC is not set
 | 
			
		||||
CONFIG_X86_VERBOSE_BOOTUP=y
 | 
			
		||||
# CONFIG_X86_VOYAGER is not set
 | 
			
		||||
# CONFIG_X86_VSMP is not set
 | 
			
		||||
CONFIG_X86_WP_WORKS_OK=y
 | 
			
		||||
CONFIG_X86_XADD=y
 | 
			
		||||
# CONFIG_ZONE_DMA32 is not set
 | 
			
		||||
@@ -1,24 +0,0 @@
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <linux/bitops.h>
 | 
			
		||||
#include <linux/mm.h>
 | 
			
		||||
#include <asm/io.h>
 | 
			
		||||
#include <asm/processor.h>
 | 
			
		||||
 | 
			
		||||
#include "cpu.h"
 | 
			
		||||
 | 
			
		||||
static struct cpu_dev rdc_cpu_dev __cpuinitdata = {
 | 
			
		||||
        .c_vendor       = "RDC",
 | 
			
		||||
        .c_models = {
 | 
			
		||||
                { .vendor = X86_VENDOR_RDC, .family = 4, .model_names =
 | 
			
		||||
                  {
 | 
			
		||||
                          [0] = "R861x(-G)",
 | 
			
		||||
                  }
 | 
			
		||||
                },
 | 
			
		||||
        },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
int __init rdc_init_cpu(void)
 | 
			
		||||
{
 | 
			
		||||
        cpu_devs[X86_VENDOR_RDC] = &rdc_cpu_dev;
 | 
			
		||||
        return 0;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,5 +0,0 @@
 | 
			
		||||
#
 | 
			
		||||
# Makefile for the RDC321x specific parts of the kernel
 | 
			
		||||
#
 | 
			
		||||
obj-$(CONFIG_X86_RDC)        := gpio.o platform.o wdt.o
 | 
			
		||||
 | 
			
		||||
@@ -1,91 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 *  Copyright (C) 2007, OpenWrt.org, Florian Fainelli <florian@openwrt.org>
 | 
			
		||||
 *  	RDC321x architecture specific GPIO support
 | 
			
		||||
 *
 | 
			
		||||
 *  This program is free software; you can redistribute  it and/or modify it
 | 
			
		||||
 *  under  the terms of  the GNU General  Public License as published by the
 | 
			
		||||
 *  Free Software Foundation;  either version 2 of the  License, or (at your
 | 
			
		||||
 *  option) any later version.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <linux/autoconf.h>
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <linux/io.h>
 | 
			
		||||
#include <linux/types.h>
 | 
			
		||||
#include <linux/module.h>
 | 
			
		||||
#include <linux/delay.h>
 | 
			
		||||
 | 
			
		||||
#include <asm/mach-rdc/rdc321x_defs.h>
 | 
			
		||||
 | 
			
		||||
static inline int rdc_gpio_is_valid(unsigned gpio)
 | 
			
		||||
{
 | 
			
		||||
	return (gpio <= RDC_MAX_GPIO);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static unsigned int rdc_gpio_read(unsigned gpio)
 | 
			
		||||
{
 | 
			
		||||
	unsigned int val;
 | 
			
		||||
 | 
			
		||||
	val = 0x80000000 | (7 << 11) | ((gpio&0x20?0x84:0x48));
 | 
			
		||||
        outl(val, RDC3210_CFGREG_ADDR);
 | 
			
		||||
        udelay(10);
 | 
			
		||||
        val = inl(RDC3210_CFGREG_DATA);
 | 
			
		||||
        val |= (0x1 << (gpio & 0x1F));
 | 
			
		||||
        outl(val, RDC3210_CFGREG_DATA);
 | 
			
		||||
        udelay(10);
 | 
			
		||||
        val = 0x80000000 | (7 << 11) | ((gpio&0x20?0x88:0x4C));
 | 
			
		||||
        outl(val, RDC3210_CFGREG_ADDR);
 | 
			
		||||
        udelay(10);
 | 
			
		||||
        val = inl(RDC3210_CFGREG_DATA);
 | 
			
		||||
 | 
			
		||||
	return val;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void rdc_gpio_write(unsigned int val)
 | 
			
		||||
{
 | 
			
		||||
	if (val) {
 | 
			
		||||
		outl(val, RDC3210_CFGREG_DATA);
 | 
			
		||||
		udelay(10);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int rdc_gpio_get_value(unsigned gpio)
 | 
			
		||||
{
 | 
			
		||||
	if (rdc_gpio_is_valid(gpio))
 | 
			
		||||
		return (int)rdc_gpio_read(gpio);
 | 
			
		||||
	else
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
}
 | 
			
		||||
EXPORT_SYMBOL(rdc_gpio_get_value);
 | 
			
		||||
 | 
			
		||||
void rdc_gpio_set_value(unsigned gpio, int value)
 | 
			
		||||
{
 | 
			
		||||
	unsigned int val;
 | 
			
		||||
 | 
			
		||||
	if (!rdc_gpio_is_valid(gpio))
 | 
			
		||||
		return;
 | 
			
		||||
	
 | 
			
		||||
	val = rdc_gpio_read(gpio);
 | 
			
		||||
 | 
			
		||||
	if (value)
 | 
			
		||||
		val &= ~(0x1 << (gpio & 0x1F));
 | 
			
		||||
	else
 | 
			
		||||
		val |= (0x1 << (gpio & 0x1F));
 | 
			
		||||
 | 
			
		||||
	rdc_gpio_write(val);
 | 
			
		||||
}
 | 
			
		||||
EXPORT_SYMBOL(rdc_gpio_set_value);
 | 
			
		||||
 | 
			
		||||
int rdc_gpio_direction_input(unsigned gpio)
 | 
			
		||||
{
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
EXPORT_SYMBOL(rdc_gpio_direction_input);
 | 
			
		||||
 | 
			
		||||
int rdc_gpio_direction_output(unsigned gpio, int value)
 | 
			
		||||
{
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
EXPORT_SYMBOL(rdc_gpio_direction_output);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -1,263 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 *
 | 
			
		||||
 *  Generic RDC321x platform devices
 | 
			
		||||
 *
 | 
			
		||||
 *  Copyright (C) 2007-2008 OpenWrt.org
 | 
			
		||||
 *  Copyright (C) 2007 Florian Fainelli <florian@openwrt.org>
 | 
			
		||||
 *  Copyright (C) 2008 Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
 | 
			
		||||
 *
 | 
			
		||||
 *  This program is free software; you can redistribute it and/or
 | 
			
		||||
 *  modify it under the terms of the GNU General Public License
 | 
			
		||||
 *  as published by the Free Software Foundation; either version 2
 | 
			
		||||
 *  of the License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 *  This program is distributed in the hope that it will be useful,
 | 
			
		||||
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 *  GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 *  You should have received a copy of the GNU General Public License
 | 
			
		||||
 *  along with this program; if not, write to the
 | 
			
		||||
 *  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 | 
			
		||||
 *  Boston, MA  02110-1301, USA.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <linux/kernel.h>
 | 
			
		||||
#include <linux/list.h>
 | 
			
		||||
#include <linux/device.h>
 | 
			
		||||
#include <linux/platform_device.h>
 | 
			
		||||
#include <linux/version.h>
 | 
			
		||||
#include <linux/leds.h>
 | 
			
		||||
#include <linux/gpio_keys.h>
 | 
			
		||||
#include <linux/input.h>
 | 
			
		||||
#include <linux/mtd/map.h>
 | 
			
		||||
#include <linux/mtd/mtd.h>
 | 
			
		||||
#include <linux/mtd/physmap.h>
 | 
			
		||||
#include <linux/root_dev.h>
 | 
			
		||||
#include <asm/gpio.h>
 | 
			
		||||
 | 
			
		||||
/* Flash */
 | 
			
		||||
#ifdef CONFIG_MTD_RDC3210
 | 
			
		||||
static struct resource rdc_flash_resource[] = {
 | 
			
		||||
	[0] = {
 | 
			
		||||
		.start = (u32)-CONFIG_MTD_RDC3210_SIZE,
 | 
			
		||||
		.end = (u32)-1,
 | 
			
		||||
		.flags = IORESOURCE_MEM,
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct platform_device rdc_flash_device = {
 | 
			
		||||
	.name = "rdc321x-flash",
 | 
			
		||||
	.id = -1,
 | 
			
		||||
	.num_resources = ARRAY_SIZE(rdc_flash_resource),
 | 
			
		||||
	.resource = rdc_flash_resource,
 | 
			
		||||
};
 | 
			
		||||
#else
 | 
			
		||||
static struct mtd_partition rdc_flash_parts[15];
 | 
			
		||||
 | 
			
		||||
static struct resource rdc_flash_resource = {
 | 
			
		||||
	.end = (u32)-1,
 | 
			
		||||
	.flags = IORESOURCE_MEM,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct physmap_flash_data rdc_flash_data = {
 | 
			
		||||
	.parts = rdc_flash_parts,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct platform_device rdc_flash_device = {
 | 
			
		||||
	.name = "physmap-flash",
 | 
			
		||||
	.id = -1,
 | 
			
		||||
	.resource = &rdc_flash_resource,
 | 
			
		||||
	.num_resources = 1,
 | 
			
		||||
	.dev.platform_data = &rdc_flash_data,
 | 
			
		||||
};
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* LEDS */
 | 
			
		||||
static struct gpio_led default_leds[] = {
 | 
			
		||||
        { .name = "rdc321x:dmz", .gpio = 1, },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct gpio_led_platform_data rdc321x_led_data = {
 | 
			
		||||
	.num_leds = ARRAY_SIZE(default_leds),
 | 
			
		||||
	.leds = default_leds,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct platform_device rdc321x_leds = {
 | 
			
		||||
	.name = "leds-gpio",
 | 
			
		||||
	.id = -1,
 | 
			
		||||
	.dev = {
 | 
			
		||||
		.platform_data = &rdc321x_led_data,
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Watchdog */
 | 
			
		||||
static struct platform_device rdc321x_wdt = {
 | 
			
		||||
	.name = "rdc321x-wdt",
 | 
			
		||||
	.id = -1,
 | 
			
		||||
	.num_resources = 0,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Button */
 | 
			
		||||
static struct gpio_keys_button rdc321x_gpio_btn[] = {
 | 
			
		||||
	{
 | 
			
		||||
		.gpio = 0,
 | 
			
		||||
		.code = BTN_0,
 | 
			
		||||
		.desc = "Reset",
 | 
			
		||||
		.active_low = 1,
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct gpio_keys_platform_data rdc321x_gpio_btn_data = {
 | 
			
		||||
	.buttons = rdc321x_gpio_btn,
 | 
			
		||||
	.nbuttons = ARRAY_SIZE(rdc321x_gpio_btn),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct platform_device rdc321x_button = {
 | 
			
		||||
	.name = "gpio-keys",
 | 
			
		||||
	.id = -1,
 | 
			
		||||
	.dev = {
 | 
			
		||||
		.platform_data = &rdc321x_gpio_btn_data,
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct platform_device *rdc321x_devs[] = {
 | 
			
		||||
	&rdc_flash_device,
 | 
			
		||||
	&rdc321x_leds,
 | 
			
		||||
	&rdc321x_wdt,
 | 
			
		||||
	&rdc321x_button
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static int probe_flash_start(struct map_info *the_map)
 | 
			
		||||
{
 | 
			
		||||
	struct mtd_info *res;
 | 
			
		||||
 | 
			
		||||
	the_map->virt = ioremap(the_map->phys, the_map->size);
 | 
			
		||||
	if (the_map->virt == NULL)
 | 
			
		||||
		return 1;
 | 
			
		||||
	for (the_map->bankwidth = 32; the_map->bankwidth; the_map->bankwidth
 | 
			
		||||
			>>= 1) {
 | 
			
		||||
		res = do_map_probe("cfi_probe", the_map);
 | 
			
		||||
		if (res == NULL)
 | 
			
		||||
			res = do_map_probe("jedec_probe", the_map);
 | 
			
		||||
		if (res != NULL)
 | 
			
		||||
			break;
 | 
			
		||||
	}
 | 
			
		||||
	iounmap(the_map->virt);
 | 
			
		||||
	if (res != NULL)
 | 
			
		||||
		the_map->phys = (u32)-(s32)(the_map->size = res->size);
 | 
			
		||||
	return res == NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static __init int rdc_board_setup(void)
 | 
			
		||||
{
 | 
			
		||||
#ifndef CONFIG_MTD_RDC3210
 | 
			
		||||
	struct map_info rdc_map_info;
 | 
			
		||||
	u32 the_header[4];
 | 
			
		||||
 | 
			
		||||
	ROOT_DEV = 0;
 | 
			
		||||
	rdc_map_info.name = rdc_flash_device.name;
 | 
			
		||||
	rdc_map_info.phys = 0xff000000;
 | 
			
		||||
	rdc_map_info.size = 0x1000000;
 | 
			
		||||
	rdc_map_info.bankwidth = 2;
 | 
			
		||||
	rdc_map_info.set_vpp = NULL;
 | 
			
		||||
	simple_map_init(&rdc_map_info);
 | 
			
		||||
	while (probe_flash_start(&rdc_map_info)) {
 | 
			
		||||
		rdc_map_info.phys++;
 | 
			
		||||
		if (--rdc_map_info.size)
 | 
			
		||||
			panic("Not to be or to be: That"
 | 
			
		||||
				" is not the question.");
 | 
			
		||||
	}
 | 
			
		||||
	rdc_flash_resource.start = rdc_map_info.phys;
 | 
			
		||||
	rdc_flash_data.width = rdc_map_info.bankwidth;
 | 
			
		||||
	rdc_map_info.virt = (u32)ioremap_nocache(rdc_map_info.phys, 0x10);
 | 
			
		||||
	if (rdc_map_info.virt == NULL)
 | 
			
		||||
		panic("Something's rotten in Denmark!");
 | 
			
		||||
	the_header[0] = ((u32 *)rdc_map_info.virt)[0];
 | 
			
		||||
	the_header[1] = ((u32 *)rdc_map_info.virt)[1];
 | 
			
		||||
	the_header[2] = ((u32 *)rdc_map_info.virt)[2];
 | 
			
		||||
	the_header[3] = ((u32 *)rdc_map_info.virt)[3];
 | 
			
		||||
	iounmap(rdc_map_info.virt);
 | 
			
		||||
	if (!memcmp(the_header, "GMTK", 4)) {	/* Gemtek */
 | 
			
		||||
		/* TODO */
 | 
			
		||||
	} else if (!memcmp(the_header, "CSYS", 4)) {	/* Sitecom */
 | 
			
		||||
		/* TODO */
 | 
			
		||||
	} else if (!memcmp(((u8 *)the_header) + 14, "Li", 2)) {	/* AMIT */
 | 
			
		||||
		rdc_flash_parts[0].name = "kernel_parthdr";
 | 
			
		||||
		rdc_flash_parts[0].offset = 0;
 | 
			
		||||
		rdc_flash_parts[0].size = 0x10;
 | 
			
		||||
		rdc_flash_parts[1].name = "kernel";
 | 
			
		||||
		rdc_flash_parts[1].offset = 0x10;
 | 
			
		||||
		rdc_flash_parts[1].size = 0xffff0;
 | 
			
		||||
		rdc_flash_parts[2].name = "rootfs_parthdr";
 | 
			
		||||
		rdc_flash_parts[2].offset = 0x100000;
 | 
			
		||||
		rdc_flash_parts[2].size = 0x10;
 | 
			
		||||
		rdc_flash_parts[3].name = "rootfs";
 | 
			
		||||
		rdc_flash_parts[3].offset = 0x100010;
 | 
			
		||||
		rdc_flash_parts[3].size = rdc_map_info.size - 0x160010;
 | 
			
		||||
		rdc_flash_parts[4].name = "config_parthdr";
 | 
			
		||||
		rdc_flash_parts[4].offset = rdc_map_info.size - 0x60000;
 | 
			
		||||
		rdc_flash_parts[4].size = 0x10;
 | 
			
		||||
		rdc_flash_parts[5].name = "config";
 | 
			
		||||
		rdc_flash_parts[5].offset = rdc_map_info.size - 0x5fff0;
 | 
			
		||||
		rdc_flash_parts[5].size = 0xfff0;
 | 
			
		||||
		rdc_flash_parts[6].name = "recoveryfs_parthdr";
 | 
			
		||||
		rdc_flash_parts[6].offset = rdc_map_info.size - 0x50000;
 | 
			
		||||
		rdc_flash_parts[6].size = 0x10;
 | 
			
		||||
		rdc_flash_parts[7].name = "recoveryfs";
 | 
			
		||||
		rdc_flash_parts[7].offset = rdc_map_info.size - 0x4fff0;
 | 
			
		||||
		rdc_flash_parts[7].size = 0x3fff0;
 | 
			
		||||
		rdc_flash_parts[8].name = "recovery_parthdr";
 | 
			
		||||
		rdc_flash_parts[8].offset = rdc_map_info.size - 0x10000;
 | 
			
		||||
		rdc_flash_parts[8].size = 0x10;
 | 
			
		||||
		rdc_flash_parts[9].name = "recovery";
 | 
			
		||||
		rdc_flash_parts[9].offset = rdc_map_info.size - 0xfff0;
 | 
			
		||||
		rdc_flash_parts[9].size = 0x7ff0;
 | 
			
		||||
		rdc_flash_parts[10].name = "productinfo_parthdr";
 | 
			
		||||
		rdc_flash_parts[10].offset = rdc_map_info.size - 0x8000;
 | 
			
		||||
		rdc_flash_parts[10].size = 0x10;
 | 
			
		||||
		rdc_flash_parts[11].name = "productinfo";
 | 
			
		||||
		rdc_flash_parts[11].offset = rdc_map_info.size - 0x7ff0;
 | 
			
		||||
		rdc_flash_parts[11].size = 0x1ff0;
 | 
			
		||||
		rdc_flash_parts[12].name = "bootloader_parthdr";
 | 
			
		||||
		rdc_flash_parts[12].offset = rdc_map_info.size - 0x6000;
 | 
			
		||||
		rdc_flash_parts[12].size = 0x10;
 | 
			
		||||
		rdc_flash_parts[13].name = "bootloader";
 | 
			
		||||
		rdc_flash_parts[13].offset = rdc_map_info.size - 0x5ff0;
 | 
			
		||||
		rdc_flash_parts[13].size = 0x5ff0;
 | 
			
		||||
		rdc_flash_parts[14].name = "everything";
 | 
			
		||||
		rdc_flash_parts[14].offset = 0;
 | 
			
		||||
		rdc_flash_parts[14].size = rdc_map_info.size;
 | 
			
		||||
		rdc_flash_data.nr_parts = 15;
 | 
			
		||||
	} else {	/* ZyXEL */
 | 
			
		||||
		rdc_flash_parts[0].name = "kernel";
 | 
			
		||||
		rdc_flash_parts[0].offset = 0;
 | 
			
		||||
		rdc_flash_parts[0].size = 0x100000;
 | 
			
		||||
		rdc_flash_parts[1].name = "rootfs";
 | 
			
		||||
		rdc_flash_parts[1].offset = 0x100000;
 | 
			
		||||
		rdc_flash_parts[1].size = rdc_map_info.size - 0x140000;
 | 
			
		||||
		rdc_flash_parts[2].name = "linux";
 | 
			
		||||
		rdc_flash_parts[2].offset = 0;
 | 
			
		||||
		rdc_flash_parts[2].size = rdc_map_info.size - 0x40000;
 | 
			
		||||
		rdc_flash_parts[3].name = "config";
 | 
			
		||||
		rdc_flash_parts[3].offset = rdc_map_info.size - 0x40000;
 | 
			
		||||
		rdc_flash_parts[3].size = 0x10000;
 | 
			
		||||
		rdc_flash_parts[4].name = "productinfo";
 | 
			
		||||
		rdc_flash_parts[4].offset = rdc_map_info.size - 0x30000;
 | 
			
		||||
		rdc_flash_parts[4].size = 0x10000;
 | 
			
		||||
		rdc_flash_parts[5].name = "bootloader";
 | 
			
		||||
		rdc_flash_parts[5].offset = rdc_map_info.size - 0x20000;
 | 
			
		||||
		rdc_flash_parts[5].size = 0x20000;
 | 
			
		||||
		rdc_flash_data.nr_parts = 6;
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
	return platform_add_devices(rdc321x_devs, ARRAY_SIZE(rdc321x_devs));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_MTD_RDC3210
 | 
			
		||||
arch_initcall(rdc_board_setup);
 | 
			
		||||
#else
 | 
			
		||||
late_initcall(rdc_board_setup);
 | 
			
		||||
#endif
 | 
			
		||||
@@ -1,14 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 *	Machine specific setup for generic
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <linux/interrupt.h>
 | 
			
		||||
#include <asm/arch_hooks.h>
 | 
			
		||||
#include <asm/io.h>
 | 
			
		||||
#include <asm/setup.h>
 | 
			
		||||
 | 
			
		||||
char * __init machine_specific_memory_setup(void)
 | 
			
		||||
{
 | 
			
		||||
	return "RDC R-321x";
 | 
			
		||||
}
 | 
			
		||||
@@ -1,272 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * RDC321x watchdog driver
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 2007 Florian Fainelli <florian@openwrt.org>
 | 
			
		||||
 *
 | 
			
		||||
 * This driver is highly inspired from the cpu5_wdt driver
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
 * the Free Software Foundation; either version 2 of the License, or
 | 
			
		||||
 * (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program; if not, write to the Free Software
 | 
			
		||||
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <linux/module.h>
 | 
			
		||||
#include <linux/moduleparam.h>
 | 
			
		||||
#include <linux/types.h>
 | 
			
		||||
#include <linux/errno.h>
 | 
			
		||||
#include <linux/miscdevice.h>
 | 
			
		||||
#include <linux/fs.h>
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <linux/ioport.h>
 | 
			
		||||
#include <linux/timer.h>
 | 
			
		||||
#include <linux/completion.h>
 | 
			
		||||
#include <linux/jiffies.h>
 | 
			
		||||
#include <linux/platform_device.h>
 | 
			
		||||
#include <linux/watchdog.h>
 | 
			
		||||
 | 
			
		||||
#include <asm/io.h>
 | 
			
		||||
#include <asm/uaccess.h>
 | 
			
		||||
 | 
			
		||||
#include <asm/mach-rdc/rdc321x_defs.h>
 | 
			
		||||
 | 
			
		||||
#define RDC_WDT_MASK		0x80000000	/* Mask */
 | 
			
		||||
#define RDC_WDT_EN		0x00800000 	/* Enable bit */
 | 
			
		||||
#define RDC_WDT_WTI		0x00200000	/* Generate a CPU reset/NMI/WDT irq when WDT timeout is reached */
 | 
			
		||||
#define RDC_WDT_RST		0x00100000	/* Reset bit */
 | 
			
		||||
#define RDC_WDT_WIF		0x00040000	/* WDT IRQ Flag */
 | 
			
		||||
#define RDC_WDT_IRT		0x00000100	/* IRQ Routing table */
 | 
			
		||||
#define RDC_WDT_CNT		0x00000001	/* WDT count */
 | 
			
		||||
 | 
			
		||||
#define RDC_CLS_TMR		0x80003844	/* Clear timer */
 | 
			
		||||
 | 
			
		||||
#define RDC_WDT_INTERVAL	(HZ/10+1)
 | 
			
		||||
 | 
			
		||||
int nowayout = WATCHDOG_NOWAYOUT;
 | 
			
		||||
module_param(nowayout, int, 0);
 | 
			
		||||
MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
 | 
			
		||||
 | 
			
		||||
static int ticks = 1000;
 | 
			
		||||
 | 
			
		||||
/* some device data */
 | 
			
		||||
 | 
			
		||||
static struct {
 | 
			
		||||
	struct completion stop;
 | 
			
		||||
	volatile int running;
 | 
			
		||||
	struct timer_list timer;
 | 
			
		||||
	volatile int queue;
 | 
			
		||||
	int default_ticks;
 | 
			
		||||
	unsigned long inuse;
 | 
			
		||||
} rdc321x_wdt_device;
 | 
			
		||||
 | 
			
		||||
/* generic helper functions */
 | 
			
		||||
 | 
			
		||||
static void rdc321x_wdt_trigger(unsigned long unused)
 | 
			
		||||
{
 | 
			
		||||
	if( rdc321x_wdt_device.running )
 | 
			
		||||
		ticks--;
 | 
			
		||||
 | 
			
		||||
	/* keep watchdog alive */
 | 
			
		||||
	outl(RDC_WDT_EN|inl(RDC3210_CFGREG_DATA), RDC3210_CFGREG_DATA);	
 | 
			
		||||
	
 | 
			
		||||
	/* requeue?? */
 | 
			
		||||
	if (rdc321x_wdt_device.queue && ticks)
 | 
			
		||||
		mod_timer(&rdc321x_wdt_device.timer, jiffies + RDC_WDT_INTERVAL);
 | 
			
		||||
	else {
 | 
			
		||||
		/* ticks doesn't matter anyway */
 | 
			
		||||
		complete(&rdc321x_wdt_device.stop);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void rdc321x_wdt_reset(void)
 | 
			
		||||
{
 | 
			
		||||
	ticks = rdc321x_wdt_device.default_ticks;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void rdc321x_wdt_start(void)
 | 
			
		||||
{
 | 
			
		||||
	if (!rdc321x_wdt_device.queue) {
 | 
			
		||||
		rdc321x_wdt_device.queue = 1;
 | 
			
		||||
 | 
			
		||||
		/* Clear the timer */
 | 
			
		||||
		outl(RDC_CLS_TMR, RDC3210_CFGREG_ADDR);
 | 
			
		||||
		
 | 
			
		||||
		/* Enable watchdog and set the timeout to 81.92 us */
 | 
			
		||||
		outl(RDC_WDT_EN|RDC_WDT_CNT, RDC3210_CFGREG_DATA);
 | 
			
		||||
 | 
			
		||||
		mod_timer(&rdc321x_wdt_device.timer, jiffies + RDC_WDT_INTERVAL);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* if process dies, counter is not decremented */
 | 
			
		||||
	rdc321x_wdt_device.running++;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int rdc321x_wdt_stop(void)
 | 
			
		||||
{
 | 
			
		||||
	if (rdc321x_wdt_device.running)
 | 
			
		||||
		rdc321x_wdt_device.running = 0;
 | 
			
		||||
 | 
			
		||||
	ticks = rdc321x_wdt_device.default_ticks;
 | 
			
		||||
 | 
			
		||||
	return -EIO;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* filesystem operations */
 | 
			
		||||
 | 
			
		||||
static int rdc321x_wdt_open(struct inode *inode, struct file *file)
 | 
			
		||||
{
 | 
			
		||||
	if (test_and_set_bit(0, &rdc321x_wdt_device.inuse))
 | 
			
		||||
		return -EBUSY;
 | 
			
		||||
 | 
			
		||||
	return nonseekable_open(inode, file);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int rdc321x_wdt_release(struct inode *inode, struct file *file)
 | 
			
		||||
{
 | 
			
		||||
	clear_bit(0, &rdc321x_wdt_device.inuse);
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int rdc321x_wdt_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
 | 
			
		||||
{
 | 
			
		||||
	void __user *argp = (void __user *)arg;
 | 
			
		||||
	unsigned int value;
 | 
			
		||||
	static struct watchdog_info ident =
 | 
			
		||||
	{
 | 
			
		||||
		.options = WDIOF_CARDRESET,
 | 
			
		||||
		.identity = "RDC321x WDT",
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	switch(cmd) {
 | 
			
		||||
		case WDIOC_KEEPALIVE:
 | 
			
		||||
			rdc321x_wdt_reset();
 | 
			
		||||
			break;
 | 
			
		||||
		case WDIOC_GETSTATUS:
 | 
			
		||||
			/* Read the value from the DATA register */
 | 
			
		||||
			value = inl(RDC3210_CFGREG_DATA);
 | 
			
		||||
			if ( copy_to_user(argp, &value, sizeof(int)) )
 | 
			
		||||
				return -EFAULT;
 | 
			
		||||
			break;
 | 
			
		||||
		case WDIOC_GETSUPPORT:
 | 
			
		||||
			if ( copy_to_user(argp, &ident, sizeof(ident)) )
 | 
			
		||||
				return -EFAULT;
 | 
			
		||||
			break;
 | 
			
		||||
		case WDIOC_SETOPTIONS:
 | 
			
		||||
			if ( copy_from_user(&value, argp, sizeof(int)) )
 | 
			
		||||
				return -EFAULT;
 | 
			
		||||
			switch(value) {
 | 
			
		||||
				case WDIOS_ENABLECARD:
 | 
			
		||||
					rdc321x_wdt_start();
 | 
			
		||||
					break;
 | 
			
		||||
				case WDIOS_DISABLECARD:
 | 
			
		||||
					return rdc321x_wdt_stop();
 | 
			
		||||
				default:
 | 
			
		||||
					return -EINVAL;
 | 
			
		||||
			}
 | 
			
		||||
			break;
 | 
			
		||||
		default:
 | 
			
		||||
    			return -ENOTTY;
 | 
			
		||||
	}
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static ssize_t rdc321x_wdt_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
 | 
			
		||||
{
 | 
			
		||||
	if ( !count )
 | 
			
		||||
		return -EIO;
 | 
			
		||||
 | 
			
		||||
	rdc321x_wdt_reset();
 | 
			
		||||
 | 
			
		||||
	return count;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const struct file_operations rdc321x_wdt_fops = {
 | 
			
		||||
	.owner		= THIS_MODULE,
 | 
			
		||||
	.llseek		= no_llseek,
 | 
			
		||||
	.ioctl		= rdc321x_wdt_ioctl,
 | 
			
		||||
	.open		= rdc321x_wdt_open,
 | 
			
		||||
	.write		= rdc321x_wdt_write,
 | 
			
		||||
	.release	= rdc321x_wdt_release,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct miscdevice rdc321x_wdt_misc = {
 | 
			
		||||
	.minor	= WATCHDOG_MINOR,
 | 
			
		||||
	.name	= "watchdog",
 | 
			
		||||
	.fops	= &rdc321x_wdt_fops,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static int __devinit rdc321x_wdt_probe(struct platform_device *pdev)
 | 
			
		||||
{
 | 
			
		||||
	int err;
 | 
			
		||||
 | 
			
		||||
	if ( (err = misc_register(&rdc321x_wdt_misc)) < 0 ) {
 | 
			
		||||
		printk(KERN_ERR PFX "misc_register failed\n");
 | 
			
		||||
		return err;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Reset the watchdog */
 | 
			
		||||
	outl(RDC_WDT_RST, RDC3210_CFGREG_DATA);
 | 
			
		||||
 | 
			
		||||
	init_completion(&rdc321x_wdt_device.stop);
 | 
			
		||||
	rdc321x_wdt_device.queue = 0;
 | 
			
		||||
 | 
			
		||||
	clear_bit(0, &rdc321x_wdt_device.inuse);
 | 
			
		||||
 | 
			
		||||
	setup_timer(&rdc321x_wdt_device.timer, rdc321x_wdt_trigger, 0);
 | 
			
		||||
 | 
			
		||||
	rdc321x_wdt_device.default_ticks = ticks;
 | 
			
		||||
 | 
			
		||||
	printk(KERN_INFO PFX "init success\n");
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int rdc321x_wdt_remove(struct platform_device *pdev)
 | 
			
		||||
{
 | 
			
		||||
	if (rdc321x_wdt_device.queue) {
 | 
			
		||||
		rdc321x_wdt_device.queue = 0;
 | 
			
		||||
		wait_for_completion(&rdc321x_wdt_device.stop);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	misc_deregister(&rdc321x_wdt_misc);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static struct platform_driver rdc321x_wdt_driver = {
 | 
			
		||||
	.probe = rdc321x_wdt_probe,
 | 
			
		||||
	.remove = rdc321x_wdt_remove,
 | 
			
		||||
	.driver = {
 | 
			
		||||
		.owner = THIS_MODULE,
 | 
			
		||||
		.name = "rdc321x-wdt",
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static int __init rdc321x_wdt_init(void)
 | 
			
		||||
{
 | 
			
		||||
	return platform_driver_register(&rdc321x_wdt_driver);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void __exit rdc321x_wdt_exit(void)
 | 
			
		||||
{
 | 
			
		||||
	platform_driver_unregister(&rdc321x_wdt_driver);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module_init(rdc321x_wdt_init);
 | 
			
		||||
module_exit(rdc321x_wdt_exit);
 | 
			
		||||
 | 
			
		||||
MODULE_AUTHOR("Florian Fainelli <florian@openwrt.org>");
 | 
			
		||||
MODULE_DESCRIPTION("RDC321x watchdog driver");
 | 
			
		||||
MODULE_LICENSE("GPL");
 | 
			
		||||
MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
 | 
			
		||||
@@ -1,586 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
  LzmaDecode.c
 | 
			
		||||
  LZMA Decoder (optimized for Speed version)
 | 
			
		||||
  
 | 
			
		||||
  LZMA SDK 4.17 Copyright (c) 1999-2005 Igor Pavlov (2005-04-05)
 | 
			
		||||
  http://www.7-zip.org/
 | 
			
		||||
 | 
			
		||||
  LZMA SDK is licensed under two licenses:
 | 
			
		||||
  1) GNU Lesser General Public License (GNU LGPL)
 | 
			
		||||
  2) Common Public License (CPL)
 | 
			
		||||
  It means that you can select one of these two licenses and 
 | 
			
		||||
  follow rules of that license.
 | 
			
		||||
 | 
			
		||||
  SPECIAL EXCEPTION:
 | 
			
		||||
  Igor Pavlov, as the author of this Code, expressly permits you to 
 | 
			
		||||
  statically or dynamically link your Code (or bind by name) to the 
 | 
			
		||||
  interfaces of this file without subjecting your linked Code to the 
 | 
			
		||||
  terms of the CPL or GNU LGPL. Any modifications or additions 
 | 
			
		||||
  to this file, however, are subject to the LGPL or CPL terms.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include "LzmaDecode.h"
 | 
			
		||||
 | 
			
		||||
#ifndef Byte
 | 
			
		||||
#define Byte unsigned char
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define kNumTopBits 24
 | 
			
		||||
#define kTopValue ((UInt32)1 << kNumTopBits)
 | 
			
		||||
 | 
			
		||||
#define kNumBitModelTotalBits 11
 | 
			
		||||
#define kBitModelTotal (1 << kNumBitModelTotalBits)
 | 
			
		||||
#define kNumMoveBits 5
 | 
			
		||||
 | 
			
		||||
#define RC_READ_BYTE (*Buffer++)
 | 
			
		||||
 | 
			
		||||
#define RC_INIT2 Code = 0; Range = 0xFFFFFFFF; \
 | 
			
		||||
  { int i; for(i = 0; i < 5; i++) { RC_TEST; Code = (Code << 8) | RC_READ_BYTE; }}
 | 
			
		||||
 | 
			
		||||
#ifdef _LZMA_IN_CB
 | 
			
		||||
 | 
			
		||||
#define RC_TEST { if (Buffer == BufferLim) \
 | 
			
		||||
  { UInt32 size; int result = InCallback->Read(InCallback, &Buffer, &size); if (result != LZMA_RESULT_OK) return result; \
 | 
			
		||||
  BufferLim = Buffer + size; if (size == 0) return LZMA_RESULT_DATA_ERROR; }}
 | 
			
		||||
 | 
			
		||||
#define RC_INIT Buffer = BufferLim = 0; RC_INIT2
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
#define RC_TEST { if (Buffer == BufferLim) return LZMA_RESULT_DATA_ERROR; }
 | 
			
		||||
 | 
			
		||||
#define RC_INIT(buffer, bufferSize) Buffer = buffer; BufferLim = buffer + bufferSize; RC_INIT2
 | 
			
		||||
 
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define RC_NORMALIZE if (Range < kTopValue) { RC_TEST; Range <<= 8; Code = (Code << 8) | RC_READ_BYTE; }
 | 
			
		||||
 | 
			
		||||
#define IfBit0(p) RC_NORMALIZE; bound = (Range >> kNumBitModelTotalBits) * *(p); if (Code < bound)
 | 
			
		||||
#define UpdateBit0(p) Range = bound; *(p) += (kBitModelTotal - *(p)) >> kNumMoveBits;
 | 
			
		||||
#define UpdateBit1(p) Range -= bound; Code -= bound; *(p) -= (*(p)) >> kNumMoveBits;
 | 
			
		||||
 | 
			
		||||
#define RC_GET_BIT2(p, mi, A0, A1) IfBit0(p) \
 | 
			
		||||
  { UpdateBit0(p); mi <<= 1; A0; } else \
 | 
			
		||||
  { UpdateBit1(p); mi = (mi + mi) + 1; A1; } 
 | 
			
		||||
  
 | 
			
		||||
#define RC_GET_BIT(p, mi) RC_GET_BIT2(p, mi, ; , ;)               
 | 
			
		||||
 | 
			
		||||
#define RangeDecoderBitTreeDecode(probs, numLevels, res) \
 | 
			
		||||
  { int i = numLevels; res = 1; \
 | 
			
		||||
  do { CProb *p = probs + res; RC_GET_BIT(p, res) } while(--i != 0); \
 | 
			
		||||
  res -= (1 << numLevels); }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define kNumPosBitsMax 4
 | 
			
		||||
#define kNumPosStatesMax (1 << kNumPosBitsMax)
 | 
			
		||||
 | 
			
		||||
#define kLenNumLowBits 3
 | 
			
		||||
#define kLenNumLowSymbols (1 << kLenNumLowBits)
 | 
			
		||||
#define kLenNumMidBits 3
 | 
			
		||||
#define kLenNumMidSymbols (1 << kLenNumMidBits)
 | 
			
		||||
#define kLenNumHighBits 8
 | 
			
		||||
#define kLenNumHighSymbols (1 << kLenNumHighBits)
 | 
			
		||||
 | 
			
		||||
#define LenChoice 0
 | 
			
		||||
#define LenChoice2 (LenChoice + 1)
 | 
			
		||||
#define LenLow (LenChoice2 + 1)
 | 
			
		||||
#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits))
 | 
			
		||||
#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits))
 | 
			
		||||
#define kNumLenProbs (LenHigh + kLenNumHighSymbols) 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define kNumStates 12
 | 
			
		||||
#define kNumLitStates 7
 | 
			
		||||
 | 
			
		||||
#define kStartPosModelIndex 4
 | 
			
		||||
#define kEndPosModelIndex 14
 | 
			
		||||
#define kNumFullDistances (1 << (kEndPosModelIndex >> 1))
 | 
			
		||||
 | 
			
		||||
#define kNumPosSlotBits 6
 | 
			
		||||
#define kNumLenToPosStates 4
 | 
			
		||||
 | 
			
		||||
#define kNumAlignBits 4
 | 
			
		||||
#define kAlignTableSize (1 << kNumAlignBits)
 | 
			
		||||
 | 
			
		||||
#define kMatchMinLen 2
 | 
			
		||||
 | 
			
		||||
#define IsMatch 0
 | 
			
		||||
#define IsRep (IsMatch + (kNumStates << kNumPosBitsMax))
 | 
			
		||||
#define IsRepG0 (IsRep + kNumStates)
 | 
			
		||||
#define IsRepG1 (IsRepG0 + kNumStates)
 | 
			
		||||
#define IsRepG2 (IsRepG1 + kNumStates)
 | 
			
		||||
#define IsRep0Long (IsRepG2 + kNumStates)
 | 
			
		||||
#define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax))
 | 
			
		||||
#define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits))
 | 
			
		||||
#define Align (SpecPos + kNumFullDistances - kEndPosModelIndex)
 | 
			
		||||
#define LenCoder (Align + kAlignTableSize)
 | 
			
		||||
#define RepLenCoder (LenCoder + kNumLenProbs)
 | 
			
		||||
#define Literal (RepLenCoder + kNumLenProbs)
 | 
			
		||||
 | 
			
		||||
#if Literal != LZMA_BASE_SIZE
 | 
			
		||||
StopCompilingDueBUG
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef _LZMA_OUT_READ
 | 
			
		||||
 | 
			
		||||
typedef struct _LzmaVarState
 | 
			
		||||
{
 | 
			
		||||
  Byte *Buffer;
 | 
			
		||||
  Byte *BufferLim;
 | 
			
		||||
  UInt32 Range;
 | 
			
		||||
  UInt32 Code;
 | 
			
		||||
  #ifdef _LZMA_IN_CB
 | 
			
		||||
  ILzmaInCallback *InCallback;
 | 
			
		||||
  #endif
 | 
			
		||||
  Byte *Dictionary;
 | 
			
		||||
  UInt32 DictionarySize;
 | 
			
		||||
  UInt32 DictionaryPos;
 | 
			
		||||
  UInt32 GlobalPos;
 | 
			
		||||
  UInt32 Reps[4];
 | 
			
		||||
  int lc;
 | 
			
		||||
  int lp;
 | 
			
		||||
  int pb;
 | 
			
		||||
  int State;
 | 
			
		||||
  int RemainLen;
 | 
			
		||||
  Byte TempDictionary[4];
 | 
			
		||||
} LzmaVarState;
 | 
			
		||||
 | 
			
		||||
int LzmaDecoderInit(
 | 
			
		||||
    unsigned char *buffer, UInt32 bufferSize,
 | 
			
		||||
    int lc, int lp, int pb,
 | 
			
		||||
    unsigned char *dictionary, UInt32 dictionarySize,
 | 
			
		||||
    #ifdef _LZMA_IN_CB
 | 
			
		||||
    ILzmaInCallback *InCallback
 | 
			
		||||
    #else
 | 
			
		||||
    unsigned char *inStream, UInt32 inSize
 | 
			
		||||
    #endif
 | 
			
		||||
    )
 | 
			
		||||
{
 | 
			
		||||
  Byte *Buffer;
 | 
			
		||||
  Byte *BufferLim;
 | 
			
		||||
  UInt32 Range;
 | 
			
		||||
  UInt32 Code;
 | 
			
		||||
  LzmaVarState *vs = (LzmaVarState *)buffer;
 | 
			
		||||
  CProb *p = (CProb *)(buffer + sizeof(LzmaVarState));
 | 
			
		||||
  UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + lp));
 | 
			
		||||
  UInt32 i;
 | 
			
		||||
  if (bufferSize < numProbs * sizeof(CProb) + sizeof(LzmaVarState))
 | 
			
		||||
    return LZMA_RESULT_NOT_ENOUGH_MEM;
 | 
			
		||||
  vs->Dictionary = dictionary;
 | 
			
		||||
  vs->DictionarySize = dictionarySize;
 | 
			
		||||
  vs->DictionaryPos = 0;
 | 
			
		||||
  vs->GlobalPos = 0;
 | 
			
		||||
  vs->Reps[0] = vs->Reps[1] = vs->Reps[2] = vs->Reps[3] = 1;
 | 
			
		||||
  vs->lc = lc;
 | 
			
		||||
  vs->lp = lp;
 | 
			
		||||
  vs->pb = pb;
 | 
			
		||||
  vs->State = 0;
 | 
			
		||||
  vs->RemainLen = 0;
 | 
			
		||||
  dictionary[dictionarySize - 1] = 0;
 | 
			
		||||
  for (i = 0; i < numProbs; i++)
 | 
			
		||||
    p[i] = kBitModelTotal >> 1; 
 | 
			
		||||
 | 
			
		||||
  #ifdef _LZMA_IN_CB
 | 
			
		||||
  RC_INIT;
 | 
			
		||||
  #else
 | 
			
		||||
  RC_INIT(inStream, inSize);
 | 
			
		||||
  #endif
 | 
			
		||||
  vs->Buffer = Buffer;
 | 
			
		||||
  vs->BufferLim = BufferLim;
 | 
			
		||||
  vs->Range = Range;
 | 
			
		||||
  vs->Code = Code;
 | 
			
		||||
  #ifdef _LZMA_IN_CB
 | 
			
		||||
  vs->InCallback = InCallback;
 | 
			
		||||
  #endif
 | 
			
		||||
 | 
			
		||||
  return LZMA_RESULT_OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int LzmaDecode(unsigned char *buffer, 
 | 
			
		||||
    unsigned char *outStream, UInt32 outSize,
 | 
			
		||||
    UInt32 *outSizeProcessed)
 | 
			
		||||
{
 | 
			
		||||
  LzmaVarState *vs = (LzmaVarState *)buffer;
 | 
			
		||||
  Byte *Buffer = vs->Buffer;
 | 
			
		||||
  Byte *BufferLim = vs->BufferLim;
 | 
			
		||||
  UInt32 Range = vs->Range;
 | 
			
		||||
  UInt32 Code = vs->Code;
 | 
			
		||||
  #ifdef _LZMA_IN_CB
 | 
			
		||||
  ILzmaInCallback *InCallback = vs->InCallback;
 | 
			
		||||
  #endif
 | 
			
		||||
  CProb *p = (CProb *)(buffer + sizeof(LzmaVarState));
 | 
			
		||||
  int state = vs->State;
 | 
			
		||||
  Byte previousByte;
 | 
			
		||||
  UInt32 rep0 = vs->Reps[0], rep1 = vs->Reps[1], rep2 = vs->Reps[2], rep3 = vs->Reps[3];
 | 
			
		||||
  UInt32 nowPos = 0;
 | 
			
		||||
  UInt32 posStateMask = (1 << (vs->pb)) - 1;
 | 
			
		||||
  UInt32 literalPosMask = (1 << (vs->lp)) - 1;
 | 
			
		||||
  int lc = vs->lc;
 | 
			
		||||
  int len = vs->RemainLen;
 | 
			
		||||
  UInt32 globalPos = vs->GlobalPos;
 | 
			
		||||
 | 
			
		||||
  Byte *dictionary = vs->Dictionary;
 | 
			
		||||
  UInt32 dictionarySize = vs->DictionarySize;
 | 
			
		||||
  UInt32 dictionaryPos = vs->DictionaryPos;
 | 
			
		||||
 | 
			
		||||
  Byte tempDictionary[4];
 | 
			
		||||
  if (dictionarySize == 0)
 | 
			
		||||
  {
 | 
			
		||||
    dictionary = tempDictionary;
 | 
			
		||||
    dictionarySize = 1;
 | 
			
		||||
    tempDictionary[0] = vs->TempDictionary[0];
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (len == -1)
 | 
			
		||||
  {
 | 
			
		||||
    *outSizeProcessed = 0;
 | 
			
		||||
    return LZMA_RESULT_OK;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  while(len != 0 && nowPos < outSize)
 | 
			
		||||
  {
 | 
			
		||||
    UInt32 pos = dictionaryPos - rep0;
 | 
			
		||||
    if (pos >= dictionarySize)
 | 
			
		||||
      pos += dictionarySize;
 | 
			
		||||
    outStream[nowPos++] = dictionary[dictionaryPos] = dictionary[pos];
 | 
			
		||||
    if (++dictionaryPos == dictionarySize)
 | 
			
		||||
      dictionaryPos = 0;
 | 
			
		||||
    len--;
 | 
			
		||||
  }
 | 
			
		||||
  if (dictionaryPos == 0)
 | 
			
		||||
    previousByte = dictionary[dictionarySize - 1];
 | 
			
		||||
  else
 | 
			
		||||
    previousByte = dictionary[dictionaryPos - 1];
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
int LzmaDecode(
 | 
			
		||||
    Byte *buffer, UInt32 bufferSize,
 | 
			
		||||
    int lc, int lp, int pb,
 | 
			
		||||
    #ifdef _LZMA_IN_CB
 | 
			
		||||
    ILzmaInCallback *InCallback,
 | 
			
		||||
    #else
 | 
			
		||||
    unsigned char *inStream, UInt32 inSize,
 | 
			
		||||
    #endif
 | 
			
		||||
    unsigned char *outStream, UInt32 outSize,
 | 
			
		||||
    UInt32 *outSizeProcessed)
 | 
			
		||||
{
 | 
			
		||||
  UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + lp));
 | 
			
		||||
  CProb *p = (CProb *)buffer;
 | 
			
		||||
 | 
			
		||||
  UInt32 i;
 | 
			
		||||
  int state = 0;
 | 
			
		||||
  Byte previousByte = 0;
 | 
			
		||||
  UInt32 rep0 = 1, rep1 = 1, rep2 = 1, rep3 = 1;
 | 
			
		||||
  UInt32 nowPos = 0;
 | 
			
		||||
  UInt32 posStateMask = (1 << pb) - 1;
 | 
			
		||||
  UInt32 literalPosMask = (1 << lp) - 1;
 | 
			
		||||
  int len = 0;
 | 
			
		||||
  
 | 
			
		||||
  Byte *Buffer;
 | 
			
		||||
  Byte *BufferLim;
 | 
			
		||||
  UInt32 Range;
 | 
			
		||||
  UInt32 Code;
 | 
			
		||||
  
 | 
			
		||||
  if (bufferSize < numProbs * sizeof(CProb))
 | 
			
		||||
    return LZMA_RESULT_NOT_ENOUGH_MEM;
 | 
			
		||||
  for (i = 0; i < numProbs; i++)
 | 
			
		||||
    p[i] = kBitModelTotal >> 1;
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  #ifdef _LZMA_IN_CB
 | 
			
		||||
  RC_INIT;
 | 
			
		||||
  #else
 | 
			
		||||
  RC_INIT(inStream, inSize);
 | 
			
		||||
  #endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  *outSizeProcessed = 0;
 | 
			
		||||
  while(nowPos < outSize)
 | 
			
		||||
  {
 | 
			
		||||
    CProb *prob;
 | 
			
		||||
    UInt32 bound;
 | 
			
		||||
    int posState = (int)(
 | 
			
		||||
        (nowPos 
 | 
			
		||||
        #ifdef _LZMA_OUT_READ
 | 
			
		||||
        + globalPos
 | 
			
		||||
        #endif
 | 
			
		||||
        )
 | 
			
		||||
        & posStateMask);
 | 
			
		||||
 | 
			
		||||
    prob = p + IsMatch + (state << kNumPosBitsMax) + posState;
 | 
			
		||||
    IfBit0(prob)
 | 
			
		||||
    {
 | 
			
		||||
      int symbol = 1;
 | 
			
		||||
      UpdateBit0(prob)
 | 
			
		||||
      prob = p + Literal + (LZMA_LIT_SIZE * 
 | 
			
		||||
        (((
 | 
			
		||||
        (nowPos 
 | 
			
		||||
        #ifdef _LZMA_OUT_READ
 | 
			
		||||
        + globalPos
 | 
			
		||||
        #endif
 | 
			
		||||
        )
 | 
			
		||||
        & literalPosMask) << lc) + (previousByte >> (8 - lc))));
 | 
			
		||||
 | 
			
		||||
      if (state >= kNumLitStates)
 | 
			
		||||
      {
 | 
			
		||||
        int matchByte;
 | 
			
		||||
        #ifdef _LZMA_OUT_READ
 | 
			
		||||
        UInt32 pos = dictionaryPos - rep0;
 | 
			
		||||
        if (pos >= dictionarySize)
 | 
			
		||||
          pos += dictionarySize;
 | 
			
		||||
        matchByte = dictionary[pos];
 | 
			
		||||
        #else
 | 
			
		||||
        matchByte = outStream[nowPos - rep0];
 | 
			
		||||
        #endif
 | 
			
		||||
        do
 | 
			
		||||
        {
 | 
			
		||||
          int bit;
 | 
			
		||||
          CProb *probLit;
 | 
			
		||||
          matchByte <<= 1;
 | 
			
		||||
          bit = (matchByte & 0x100);
 | 
			
		||||
          probLit = prob + 0x100 + bit + symbol;
 | 
			
		||||
          RC_GET_BIT2(probLit, symbol, if (bit != 0) break, if (bit == 0) break)
 | 
			
		||||
        }
 | 
			
		||||
        while (symbol < 0x100);
 | 
			
		||||
      }
 | 
			
		||||
      while (symbol < 0x100)
 | 
			
		||||
      {
 | 
			
		||||
        CProb *probLit = prob + symbol;
 | 
			
		||||
        RC_GET_BIT(probLit, symbol)
 | 
			
		||||
      }
 | 
			
		||||
      previousByte = (Byte)symbol;
 | 
			
		||||
 | 
			
		||||
      outStream[nowPos++] = previousByte;
 | 
			
		||||
      #ifdef _LZMA_OUT_READ
 | 
			
		||||
      dictionary[dictionaryPos] = previousByte;
 | 
			
		||||
      if (++dictionaryPos == dictionarySize)
 | 
			
		||||
        dictionaryPos = 0;
 | 
			
		||||
      #endif
 | 
			
		||||
      if (state < 4) state = 0;
 | 
			
		||||
      else if (state < 10) state -= 3;
 | 
			
		||||
      else state -= 6;
 | 
			
		||||
    }
 | 
			
		||||
    else             
 | 
			
		||||
    {
 | 
			
		||||
      UpdateBit1(prob);
 | 
			
		||||
      prob = p + IsRep + state;
 | 
			
		||||
      IfBit0(prob)
 | 
			
		||||
      {
 | 
			
		||||
        UpdateBit0(prob);
 | 
			
		||||
        rep3 = rep2;
 | 
			
		||||
        rep2 = rep1;
 | 
			
		||||
        rep1 = rep0;
 | 
			
		||||
        state = state < kNumLitStates ? 0 : 3;
 | 
			
		||||
        prob = p + LenCoder;
 | 
			
		||||
      }
 | 
			
		||||
      else
 | 
			
		||||
      {
 | 
			
		||||
        UpdateBit1(prob);
 | 
			
		||||
        prob = p + IsRepG0 + state;
 | 
			
		||||
        IfBit0(prob)
 | 
			
		||||
        {
 | 
			
		||||
          UpdateBit0(prob);
 | 
			
		||||
          prob = p + IsRep0Long + (state << kNumPosBitsMax) + posState;
 | 
			
		||||
          IfBit0(prob)
 | 
			
		||||
          {
 | 
			
		||||
            #ifdef _LZMA_OUT_READ
 | 
			
		||||
            UInt32 pos;
 | 
			
		||||
            #endif
 | 
			
		||||
            UpdateBit0(prob);
 | 
			
		||||
            if (nowPos 
 | 
			
		||||
                #ifdef _LZMA_OUT_READ
 | 
			
		||||
                + globalPos
 | 
			
		||||
                #endif
 | 
			
		||||
                == 0)
 | 
			
		||||
              return LZMA_RESULT_DATA_ERROR;
 | 
			
		||||
            state = state < kNumLitStates ? 9 : 11;
 | 
			
		||||
            #ifdef _LZMA_OUT_READ
 | 
			
		||||
            pos = dictionaryPos - rep0;
 | 
			
		||||
            if (pos >= dictionarySize)
 | 
			
		||||
              pos += dictionarySize;
 | 
			
		||||
            previousByte = dictionary[pos];
 | 
			
		||||
            dictionary[dictionaryPos] = previousByte;
 | 
			
		||||
            if (++dictionaryPos == dictionarySize)
 | 
			
		||||
              dictionaryPos = 0;
 | 
			
		||||
            #else
 | 
			
		||||
            previousByte = outStream[nowPos - rep0];
 | 
			
		||||
            #endif
 | 
			
		||||
            outStream[nowPos++] = previousByte;
 | 
			
		||||
            continue;
 | 
			
		||||
          }
 | 
			
		||||
          else
 | 
			
		||||
          {
 | 
			
		||||
            UpdateBit1(prob);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
          UInt32 distance;
 | 
			
		||||
          UpdateBit1(prob);
 | 
			
		||||
          prob = p + IsRepG1 + state;
 | 
			
		||||
          IfBit0(prob)
 | 
			
		||||
          {
 | 
			
		||||
            UpdateBit0(prob);
 | 
			
		||||
            distance = rep1;
 | 
			
		||||
          }
 | 
			
		||||
          else 
 | 
			
		||||
          {
 | 
			
		||||
            UpdateBit1(prob);
 | 
			
		||||
            prob = p + IsRepG2 + state;
 | 
			
		||||
            IfBit0(prob)
 | 
			
		||||
            {
 | 
			
		||||
              UpdateBit0(prob);
 | 
			
		||||
              distance = rep2;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
              UpdateBit1(prob);
 | 
			
		||||
              distance = rep3;
 | 
			
		||||
              rep3 = rep2;
 | 
			
		||||
            }
 | 
			
		||||
            rep2 = rep1;
 | 
			
		||||
          }
 | 
			
		||||
          rep1 = rep0;
 | 
			
		||||
          rep0 = distance;
 | 
			
		||||
        }
 | 
			
		||||
        state = state < kNumLitStates ? 8 : 11;
 | 
			
		||||
        prob = p + RepLenCoder;
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        int numBits, offset;
 | 
			
		||||
        CProb *probLen = prob + LenChoice;
 | 
			
		||||
        IfBit0(probLen)
 | 
			
		||||
        {
 | 
			
		||||
          UpdateBit0(probLen);
 | 
			
		||||
          probLen = prob + LenLow + (posState << kLenNumLowBits);
 | 
			
		||||
          offset = 0;
 | 
			
		||||
          numBits = kLenNumLowBits;
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
          UpdateBit1(probLen);
 | 
			
		||||
          probLen = prob + LenChoice2;
 | 
			
		||||
          IfBit0(probLen)
 | 
			
		||||
          {
 | 
			
		||||
            UpdateBit0(probLen);
 | 
			
		||||
            probLen = prob + LenMid + (posState << kLenNumMidBits);
 | 
			
		||||
            offset = kLenNumLowSymbols;
 | 
			
		||||
            numBits = kLenNumMidBits;
 | 
			
		||||
          }
 | 
			
		||||
          else
 | 
			
		||||
          {
 | 
			
		||||
            UpdateBit1(probLen);
 | 
			
		||||
            probLen = prob + LenHigh;
 | 
			
		||||
            offset = kLenNumLowSymbols + kLenNumMidSymbols;
 | 
			
		||||
            numBits = kLenNumHighBits;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        RangeDecoderBitTreeDecode(probLen, numBits, len);
 | 
			
		||||
        len += offset;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (state < 4)
 | 
			
		||||
      {
 | 
			
		||||
        int posSlot;
 | 
			
		||||
        state += kNumLitStates;
 | 
			
		||||
        prob = p + PosSlot +
 | 
			
		||||
            ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << 
 | 
			
		||||
            kNumPosSlotBits);
 | 
			
		||||
        RangeDecoderBitTreeDecode(prob, kNumPosSlotBits, posSlot);
 | 
			
		||||
        if (posSlot >= kStartPosModelIndex)
 | 
			
		||||
        {
 | 
			
		||||
          int numDirectBits = ((posSlot >> 1) - 1);
 | 
			
		||||
          rep0 = (2 | ((UInt32)posSlot & 1));
 | 
			
		||||
          if (posSlot < kEndPosModelIndex)
 | 
			
		||||
          {
 | 
			
		||||
            rep0 <<= numDirectBits;
 | 
			
		||||
            prob = p + SpecPos + rep0 - posSlot - 1;
 | 
			
		||||
          }
 | 
			
		||||
          else
 | 
			
		||||
          {
 | 
			
		||||
            numDirectBits -= kNumAlignBits;
 | 
			
		||||
            do
 | 
			
		||||
            {
 | 
			
		||||
              RC_NORMALIZE
 | 
			
		||||
              Range >>= 1;
 | 
			
		||||
              rep0 <<= 1;
 | 
			
		||||
              if (Code >= Range)
 | 
			
		||||
              {
 | 
			
		||||
                Code -= Range;
 | 
			
		||||
                rep0 |= 1;
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
            while (--numDirectBits != 0);
 | 
			
		||||
            prob = p + Align;
 | 
			
		||||
            rep0 <<= kNumAlignBits;
 | 
			
		||||
            numDirectBits = kNumAlignBits;
 | 
			
		||||
          }
 | 
			
		||||
          {
 | 
			
		||||
            int i = 1;
 | 
			
		||||
            int mi = 1;
 | 
			
		||||
            do
 | 
			
		||||
            {
 | 
			
		||||
              CProb *prob3 = prob + mi;
 | 
			
		||||
              RC_GET_BIT2(prob3, mi, ; , rep0 |= i);
 | 
			
		||||
              i <<= 1;
 | 
			
		||||
            }
 | 
			
		||||
            while(--numDirectBits != 0);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
          rep0 = posSlot;
 | 
			
		||||
        if (++rep0 == (UInt32)(0))
 | 
			
		||||
        {
 | 
			
		||||
          /* it's for stream version */
 | 
			
		||||
          len = -1;
 | 
			
		||||
          break;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      len += kMatchMinLen;
 | 
			
		||||
      if (rep0 > nowPos 
 | 
			
		||||
        #ifdef _LZMA_OUT_READ
 | 
			
		||||
        + globalPos || rep0 > dictionarySize
 | 
			
		||||
        #endif
 | 
			
		||||
        ) 
 | 
			
		||||
        return LZMA_RESULT_DATA_ERROR;
 | 
			
		||||
      do
 | 
			
		||||
      {
 | 
			
		||||
        #ifdef _LZMA_OUT_READ
 | 
			
		||||
        UInt32 pos = dictionaryPos - rep0;
 | 
			
		||||
        if (pos >= dictionarySize)
 | 
			
		||||
          pos += dictionarySize;
 | 
			
		||||
        previousByte = dictionary[pos];
 | 
			
		||||
        dictionary[dictionaryPos] = previousByte;
 | 
			
		||||
        if (++dictionaryPos == dictionarySize)
 | 
			
		||||
          dictionaryPos = 0;
 | 
			
		||||
        #else
 | 
			
		||||
        previousByte = outStream[nowPos - rep0];
 | 
			
		||||
        #endif
 | 
			
		||||
        len--;
 | 
			
		||||
        outStream[nowPos++] = previousByte;
 | 
			
		||||
      }
 | 
			
		||||
      while(len != 0 && nowPos < outSize);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  RC_NORMALIZE;
 | 
			
		||||
 | 
			
		||||
  #ifdef _LZMA_OUT_READ
 | 
			
		||||
  vs->Buffer = Buffer;
 | 
			
		||||
  vs->BufferLim = BufferLim;
 | 
			
		||||
  vs->Range = Range;
 | 
			
		||||
  vs->Code = Code;
 | 
			
		||||
  vs->DictionaryPos = dictionaryPos;
 | 
			
		||||
  vs->GlobalPos = globalPos + nowPos;
 | 
			
		||||
  vs->Reps[0] = rep0;
 | 
			
		||||
  vs->Reps[1] = rep1;
 | 
			
		||||
  vs->Reps[2] = rep2;
 | 
			
		||||
  vs->Reps[3] = rep3;
 | 
			
		||||
  vs->State = state;
 | 
			
		||||
  vs->RemainLen = len;
 | 
			
		||||
  vs->TempDictionary[0] = tempDictionary[0];
 | 
			
		||||
  #endif
 | 
			
		||||
 | 
			
		||||
  *outSizeProcessed = nowPos;
 | 
			
		||||
  return LZMA_RESULT_OK;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,100 +0,0 @@
 | 
			
		||||
/* 
 | 
			
		||||
  LzmaDecode.h
 | 
			
		||||
  LZMA Decoder interface
 | 
			
		||||
 | 
			
		||||
  LZMA SDK 4.16 Copyright (c) 1999-2005 Igor Pavlov (2005-03-18)
 | 
			
		||||
  http://www.7-zip.org/
 | 
			
		||||
 | 
			
		||||
  LZMA SDK is licensed under two licenses:
 | 
			
		||||
  1) GNU Lesser General Public License (GNU LGPL)
 | 
			
		||||
  2) Common Public License (CPL)
 | 
			
		||||
  It means that you can select one of these two licenses and 
 | 
			
		||||
  follow rules of that license.
 | 
			
		||||
 | 
			
		||||
  SPECIAL EXCEPTION:
 | 
			
		||||
  Igor Pavlov, as the author of this code, expressly permits you to 
 | 
			
		||||
  statically or dynamically link your code (or bind by name) to the 
 | 
			
		||||
  interfaces of this file without subjecting your linked code to the 
 | 
			
		||||
  terms of the CPL or GNU LGPL. Any modifications or additions 
 | 
			
		||||
  to this file, however, are subject to the LGPL or CPL terms.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef __LZMADECODE_H
 | 
			
		||||
#define __LZMADECODE_H
 | 
			
		||||
 | 
			
		||||
/* #define _LZMA_IN_CB */
 | 
			
		||||
/* Use callback for input data */
 | 
			
		||||
 | 
			
		||||
/* #define _LZMA_OUT_READ */
 | 
			
		||||
/* Use read function for output data */
 | 
			
		||||
 | 
			
		||||
/* #define _LZMA_PROB32 */
 | 
			
		||||
/* It can increase speed on some 32-bit CPUs, 
 | 
			
		||||
   but memory usage will be doubled in that case */
 | 
			
		||||
 | 
			
		||||
/* #define _LZMA_LOC_OPT */
 | 
			
		||||
/* Enable local speed optimizations inside code */
 | 
			
		||||
 | 
			
		||||
#ifndef UInt32
 | 
			
		||||
#ifdef _LZMA_UINT32_IS_ULONG
 | 
			
		||||
#define UInt32 unsigned long
 | 
			
		||||
#else
 | 
			
		||||
#define UInt32 unsigned int
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef _LZMA_PROB32
 | 
			
		||||
#define CProb UInt32
 | 
			
		||||
#else
 | 
			
		||||
#define CProb unsigned short
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define LZMA_RESULT_OK 0
 | 
			
		||||
#define LZMA_RESULT_DATA_ERROR 1
 | 
			
		||||
#define LZMA_RESULT_NOT_ENOUGH_MEM 2
 | 
			
		||||
 | 
			
		||||
#ifdef _LZMA_IN_CB
 | 
			
		||||
typedef struct _ILzmaInCallback
 | 
			
		||||
{
 | 
			
		||||
  int (*Read)(void *object, unsigned char **buffer, UInt32 *bufferSize);
 | 
			
		||||
} ILzmaInCallback;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define LZMA_BASE_SIZE 1846
 | 
			
		||||
#define LZMA_LIT_SIZE 768
 | 
			
		||||
 | 
			
		||||
/* 
 | 
			
		||||
bufferSize = (LZMA_BASE_SIZE + (LZMA_LIT_SIZE << (lc + lp)))* sizeof(CProb)
 | 
			
		||||
bufferSize += 100 in case of _LZMA_OUT_READ
 | 
			
		||||
by default CProb is unsigned short, 
 | 
			
		||||
but if specify _LZMA_PROB_32, CProb will be UInt32(unsigned int)
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifdef _LZMA_OUT_READ
 | 
			
		||||
int LzmaDecoderInit(
 | 
			
		||||
    unsigned char *buffer, UInt32 bufferSize,
 | 
			
		||||
    int lc, int lp, int pb,
 | 
			
		||||
    unsigned char *dictionary, UInt32 dictionarySize,
 | 
			
		||||
  #ifdef _LZMA_IN_CB
 | 
			
		||||
    ILzmaInCallback *inCallback
 | 
			
		||||
  #else
 | 
			
		||||
    unsigned char *inStream, UInt32 inSize
 | 
			
		||||
  #endif
 | 
			
		||||
);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int LzmaDecode(
 | 
			
		||||
    unsigned char *buffer, 
 | 
			
		||||
  #ifndef _LZMA_OUT_READ
 | 
			
		||||
    UInt32 bufferSize,
 | 
			
		||||
    int lc, int lp, int pb,
 | 
			
		||||
  #ifdef _LZMA_IN_CB
 | 
			
		||||
    ILzmaInCallback *inCallback,
 | 
			
		||||
  #else
 | 
			
		||||
    unsigned char *inStream, UInt32 inSize,
 | 
			
		||||
  #endif
 | 
			
		||||
  #endif
 | 
			
		||||
    unsigned char *outStream, UInt32 outSize,
 | 
			
		||||
    UInt32 *outSizeProcessed);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
@@ -1,345 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * lzma_misc.c
 | 
			
		||||
 * 
 | 
			
		||||
 * malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994
 | 
			
		||||
 * puts by Nick Holloway 1993, better puts by Martin Mares 1995
 | 
			
		||||
 * High loaded stuff by Hans Lermen & Werner Almesberger, Feb. 1996
 | 
			
		||||
 * 
 | 
			
		||||
 * Decompress LZMA compressed vmlinuz 
 | 
			
		||||
 * Version 0.9 Copyright (c) Ming-Ching Tiew mctiew@yahoo.com
 | 
			
		||||
 * Program adapted from misc.c for 2.6 kernel
 | 
			
		||||
 * Forward ported to latest 2.6 version of misc.c by
 | 
			
		||||
 * Felix Fietkau <nbd@openwrt.org>
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#undef CONFIG_PARAVIRT
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <linux/vmalloc.h>
 | 
			
		||||
#include <linux/screen_info.h>
 | 
			
		||||
#include <linux/console.h>
 | 
			
		||||
#include <linux/string.h>
 | 
			
		||||
#include <asm/io.h>
 | 
			
		||||
#include <asm/page.h>
 | 
			
		||||
#include <asm/boot.h>
 | 
			
		||||
 | 
			
		||||
/* WARNING!!
 | 
			
		||||
 * This code is compiled with -fPIC and it is relocated dynamically
 | 
			
		||||
 * at run time, but no relocation processing is performed.
 | 
			
		||||
 * This means that it is not safe to place pointers in static structures.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Getting to provable safe in place decompression is hard.
 | 
			
		||||
 * Worst case behaviours need to be analized.
 | 
			
		||||
 * Background information:
 | 
			
		||||
 *
 | 
			
		||||
 * The file layout is:
 | 
			
		||||
 *    magic[2]
 | 
			
		||||
 *    method[1]
 | 
			
		||||
 *    flags[1]
 | 
			
		||||
 *    timestamp[4]
 | 
			
		||||
 *    extraflags[1]
 | 
			
		||||
 *    os[1]
 | 
			
		||||
 *    compressed data blocks[N]
 | 
			
		||||
 *    crc[4] orig_len[4]
 | 
			
		||||
 *
 | 
			
		||||
 * resulting in 18 bytes of non compressed data overhead.
 | 
			
		||||
 *
 | 
			
		||||
 * Files divided into blocks
 | 
			
		||||
 * 1 bit (last block flag)
 | 
			
		||||
 * 2 bits (block type)
 | 
			
		||||
 *
 | 
			
		||||
 * 1 block occurs every 32K -1 bytes or when there 50% compression has been achieved.
 | 
			
		||||
 * The smallest block type encoding is always used.
 | 
			
		||||
 *
 | 
			
		||||
 * stored:
 | 
			
		||||
 *    32 bits length in bytes.
 | 
			
		||||
 *
 | 
			
		||||
 * fixed:
 | 
			
		||||
 *    magic fixed tree.
 | 
			
		||||
 *    symbols.
 | 
			
		||||
 *
 | 
			
		||||
 * dynamic:
 | 
			
		||||
 *    dynamic tree encoding.
 | 
			
		||||
 *    symbols.
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 * The buffer for decompression in place is the length of the
 | 
			
		||||
 * uncompressed data, plus a small amount extra to keep the algorithm safe.
 | 
			
		||||
 * The compressed data is placed at the end of the buffer.  The output
 | 
			
		||||
 * pointer is placed at the start of the buffer and the input pointer
 | 
			
		||||
 * is placed where the compressed data starts.  Problems will occur
 | 
			
		||||
 * when the output pointer overruns the input pointer.
 | 
			
		||||
 *
 | 
			
		||||
 * The output pointer can only overrun the input pointer if the input
 | 
			
		||||
 * pointer is moving faster than the output pointer.  A condition only
 | 
			
		||||
 * triggered by data whose compressed form is larger than the uncompressed
 | 
			
		||||
 * form.
 | 
			
		||||
 *
 | 
			
		||||
 * The worst case at the block level is a growth of the compressed data
 | 
			
		||||
 * of 5 bytes per 32767 bytes.
 | 
			
		||||
 *
 | 
			
		||||
 * The worst case internal to a compressed block is very hard to figure.
 | 
			
		||||
 * The worst case can at least be boundined by having one bit that represents
 | 
			
		||||
 * 32764 bytes and then all of the rest of the bytes representing the very
 | 
			
		||||
 * very last byte.
 | 
			
		||||
 *
 | 
			
		||||
 * All of which is enough to compute an amount of extra data that is required
 | 
			
		||||
 * to be safe.  To avoid problems at the block level allocating 5 extra bytes
 | 
			
		||||
 * per 32767 bytes of data is sufficient.  To avoind problems internal to a block
 | 
			
		||||
 * adding an extra 32767 bytes (the worst case uncompressed block size) is
 | 
			
		||||
 * sufficient, to ensure that in the worst case the decompressed data for
 | 
			
		||||
 * block will stop the byte before the compressed data for a block begins.
 | 
			
		||||
 * To avoid problems with the compressed data's meta information an extra 18
 | 
			
		||||
 * bytes are needed.  Leading to the formula:
 | 
			
		||||
 *
 | 
			
		||||
 * extra_bytes = (uncompressed_size >> 12) + 32768 + 18 + decompressor_size.
 | 
			
		||||
 *
 | 
			
		||||
 * Adding 8 bytes per 32K is a bit excessive but much easier to calculate.
 | 
			
		||||
 * Adding 32768 instead of 32767 just makes for round numbers.
 | 
			
		||||
 * Adding the decompressor_size is necessary as it musht live after all
 | 
			
		||||
 * of the data as well.  Last I measured the decompressor is about 14K.
 | 
			
		||||
 * 10K of actuall data and 4K of bss.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * gzip declarations
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#define OF(args)  args
 | 
			
		||||
#define STATIC static
 | 
			
		||||
 | 
			
		||||
#undef memcpy
 | 
			
		||||
 | 
			
		||||
typedef unsigned char  uch;
 | 
			
		||||
typedef unsigned short ush;
 | 
			
		||||
typedef unsigned long  ulg;
 | 
			
		||||
 | 
			
		||||
#define WSIZE 0x80000000	/* Window size must be at least 32k,
 | 
			
		||||
				 * and a power of two
 | 
			
		||||
				 * We don't actually have a window just
 | 
			
		||||
				 * a huge output buffer so I report
 | 
			
		||||
				 * a 2G windows size, as that should
 | 
			
		||||
				 * always be larger than our output buffer.
 | 
			
		||||
				 */
 | 
			
		||||
 | 
			
		||||
static uch *inbuf;	/* input buffer */
 | 
			
		||||
static uch *window;	/* Sliding window buffer, (and final output buffer) */
 | 
			
		||||
 | 
			
		||||
static unsigned insize;  /* valid bytes in inbuf */
 | 
			
		||||
static unsigned inptr;   /* index of next byte to be processed in inbuf */
 | 
			
		||||
static unsigned long workspace;
 | 
			
		||||
 | 
			
		||||
#define get_byte()  (inptr < insize ? inbuf[inptr++] : fill_inbuf())
 | 
			
		||||
		
 | 
			
		||||
/* Diagnostic functions */
 | 
			
		||||
#ifdef DEBUG
 | 
			
		||||
#  define Assert(cond,msg) {if(!(cond)) error(msg);}
 | 
			
		||||
#  define Trace(x) fprintf x
 | 
			
		||||
#  define Tracev(x) {if (verbose) fprintf x ;}
 | 
			
		||||
#  define Tracevv(x) {if (verbose>1) fprintf x ;}
 | 
			
		||||
#  define Tracec(c,x) {if (verbose && (c)) fprintf x ;}
 | 
			
		||||
#  define Tracecv(c,x) {if (verbose>1 && (c)) fprintf x ;}
 | 
			
		||||
#else
 | 
			
		||||
#  define Assert(cond,msg)
 | 
			
		||||
#  define Trace(x)
 | 
			
		||||
#  define Tracev(x)
 | 
			
		||||
#  define Tracevv(x)
 | 
			
		||||
#  define Tracec(c,x)
 | 
			
		||||
#  define Tracecv(c,x)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static int  fill_inbuf(void);
 | 
			
		||||
  
 | 
			
		||||
/*
 | 
			
		||||
 * This is set up by the setup-routine at boot-time
 | 
			
		||||
 */
 | 
			
		||||
static unsigned char *real_mode; /* Pointer to real-mode data */
 | 
			
		||||
extern unsigned char input_data[];
 | 
			
		||||
extern int input_len;
 | 
			
		||||
 | 
			
		||||
static void error(char *x);
 | 
			
		||||
static void *memcpy(void *dest, const void *src, unsigned n);
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_X86_NUMAQ
 | 
			
		||||
void *xquad_portio;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static void* memcpy(void* dest, const void* src, unsigned n)
 | 
			
		||||
{
 | 
			
		||||
	int i;
 | 
			
		||||
	char *d = (char *)dest, *s = (char *)src;
 | 
			
		||||
 | 
			
		||||
	for (i=0;i<n;i++) d[i] = s[i];
 | 
			
		||||
	return dest;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ===========================================================================
 | 
			
		||||
 * Fill the input buffer. This is called only when the buffer is empty
 | 
			
		||||
 * and at least one byte is really needed.
 | 
			
		||||
 */
 | 
			
		||||
static int fill_inbuf(void)
 | 
			
		||||
{
 | 
			
		||||
	error("ran out of input data");
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// When using LZMA in callback, the compressed length is not needed.
 | 
			
		||||
// Otherwise you need a special version of lzma compression program
 | 
			
		||||
// which will pad the compressed length in the header.
 | 
			
		||||
#define _LZMA_IN_CB
 | 
			
		||||
#include "LzmaDecode.h"
 | 
			
		||||
#include "LzmaDecode.c"
 | 
			
		||||
 | 
			
		||||
static int read_byte(void *object, unsigned char **buffer, UInt32 *bufferSize);
 | 
			
		||||
 | 
			
		||||
static int early_serial_base = 0x3f8;  /* ttyS0 */
 | 
			
		||||
 | 
			
		||||
#define XMTRDY          0x20
 | 
			
		||||
 | 
			
		||||
#define DLAB            0x80
 | 
			
		||||
 | 
			
		||||
#define TXR             0       /*  Transmit register (WRITE) */
 | 
			
		||||
#define RXR             0       /*  Receive register  (READ)  */
 | 
			
		||||
#define IER             1       /*  Interrupt Enable          */
 | 
			
		||||
#define IIR             2       /*  Interrupt ID              */
 | 
			
		||||
#define FCR             2       /*  FIFO control              */
 | 
			
		||||
#define LCR             3       /*  Line control              */
 | 
			
		||||
#define MCR             4       /*  Modem control             */
 | 
			
		||||
#define LSR             5       /*  Line Status               */
 | 
			
		||||
#define MSR             6       /*  Modem Status              */
 | 
			
		||||
#define DLL             0       /*  Divisor Latch Low         */
 | 
			
		||||
#define DLH             1       /*  Divisor latch High        */
 | 
			
		||||
 | 
			
		||||
static int early_serial_putc(unsigned char ch)
 | 
			
		||||
{
 | 
			
		||||
        unsigned timeout = 0xffff;
 | 
			
		||||
        while ((inb(early_serial_base + LSR) & XMTRDY) == 0 && --timeout)
 | 
			
		||||
                cpu_relax();
 | 
			
		||||
        outb(ch, early_serial_base + TXR);
 | 
			
		||||
        return timeout ? 0 : -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void early_serial_write(const char *s, unsigned n)
 | 
			
		||||
{
 | 
			
		||||
        while (*s && n-- > 0) {
 | 
			
		||||
                if (*s == '\n')
 | 
			
		||||
                        early_serial_putc('\r');
 | 
			
		||||
                early_serial_putc(*s);
 | 
			
		||||
                s++;
 | 
			
		||||
        }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define DEFAULT_BAUD 38400
 | 
			
		||||
 | 
			
		||||
static __init void early_serial_init(void)
 | 
			
		||||
{
 | 
			
		||||
        unsigned char c;
 | 
			
		||||
        unsigned divisor;
 | 
			
		||||
        unsigned baud = DEFAULT_BAUD;
 | 
			
		||||
        char *e;
 | 
			
		||||
 | 
			
		||||
        outb(0x3, early_serial_base + LCR);     /* 8n1 */
 | 
			
		||||
        outb(0, early_serial_base + IER);       /* no interrupt */
 | 
			
		||||
        outb(0, early_serial_base + FCR);       /* no fifo */
 | 
			
		||||
        outb(0x3, early_serial_base + MCR);     /* DTR + RTS */
 | 
			
		||||
 | 
			
		||||
	baud = DEFAULT_BAUD;
 | 
			
		||||
 | 
			
		||||
        divisor = 115200 / baud;
 | 
			
		||||
        c = inb(early_serial_base + LCR);
 | 
			
		||||
        outb(c | DLAB, early_serial_base + LCR);
 | 
			
		||||
        outb(divisor & 0xff, early_serial_base + DLL);
 | 
			
		||||
        outb((divisor >> 8) & 0xff, early_serial_base + DLH);
 | 
			
		||||
        outb(c & ~DLAB, early_serial_base + LCR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Do the lzma decompression
 | 
			
		||||
 * When using LZMA in callback, the end of input stream is automatically determined
 | 
			
		||||
 */
 | 
			
		||||
static int lzma_unzip(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
	unsigned int i;  /* temp value */
 | 
			
		||||
	unsigned int lc; /* literal context bits */
 | 
			
		||||
	unsigned int lp; /* literal pos state bits */
 | 
			
		||||
	unsigned int pb; /* pos state bits */
 | 
			
		||||
	unsigned int uncompressedSize = 0;
 | 
			
		||||
	unsigned char* p;
 | 
			
		||||
	
 | 
			
		||||
	ILzmaInCallback callback;
 | 
			
		||||
	callback.Read = read_byte;
 | 
			
		||||
 | 
			
		||||
	/* lzma args */
 | 
			
		||||
	i = get_byte();
 | 
			
		||||
	lc = i % 9, i = i / 9;
 | 
			
		||||
	lp = i % 5, pb = i / 5;
 | 
			
		||||
	
 | 
			
		||||
	/* skip dictionary size */
 | 
			
		||||
	for (i = 0; i < 4; i++) 
 | 
			
		||||
		get_byte();
 | 
			
		||||
	// get uncompressedSize 	
 | 
			
		||||
	p= (char*)&uncompressedSize;	
 | 
			
		||||
	for (i = 0; i < 4; i++) 
 | 
			
		||||
	    *p++ = get_byte();
 | 
			
		||||
	    
 | 
			
		||||
	//get compressedSize 
 | 
			
		||||
	for (i = 0; i < 4; i++) 
 | 
			
		||||
		get_byte();
 | 
			
		||||
	
 | 
			
		||||
	// point it beyond uncompresedSize
 | 
			
		||||
	//workspace = window + uncompressedSize;
 | 
			
		||||
	
 | 
			
		||||
	/* decompress kernel */
 | 
			
		||||
	if (LzmaDecode((unsigned char*)workspace, ~0, lc, lp, pb, &callback,
 | 
			
		||||
		(unsigned char*)window, uncompressedSize, &i) == LZMA_RESULT_OK)
 | 
			
		||||
		return 0;
 | 
			
		||||
	else
 | 
			
		||||
		return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef  _LZMA_IN_CB
 | 
			
		||||
static int read_byte(void *object, unsigned char **buffer, UInt32 *bufferSize)
 | 
			
		||||
{
 | 
			
		||||
	static unsigned int i = 0;
 | 
			
		||||
	static unsigned char val;
 | 
			
		||||
	*bufferSize = 1;
 | 
			
		||||
	val = get_byte();
 | 
			
		||||
	*buffer = &val;
 | 
			
		||||
	return LZMA_RESULT_OK;
 | 
			
		||||
}	
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static void error(char *x)
 | 
			
		||||
{
 | 
			
		||||
	while(1);	/* Halt */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
asmlinkage void decompress_kernel(void *rmode, unsigned long end,
 | 
			
		||||
			uch *input_data, unsigned long input_len, uch *output)
 | 
			
		||||
{
 | 
			
		||||
	real_mode = rmode;
 | 
			
		||||
 | 
			
		||||
	window = output;
 | 
			
		||||
	inbuf  = input_data;	/* Input buffer */
 | 
			
		||||
	insize = input_len;
 | 
			
		||||
	inptr  = 0;
 | 
			
		||||
 | 
			
		||||
	if ((u32)output & (CONFIG_PHYSICAL_ALIGN -1))
 | 
			
		||||
		error("Destination address not CONFIG_PHYSICAL_ALIGN aligned");
 | 
			
		||||
	if ((workspace = end) > ((-__PAGE_OFFSET-(512 <<20)-1) & 0x7fffffff))
 | 
			
		||||
		error("Destination address too large");
 | 
			
		||||
#ifndef CONFIG_RELOCATABLE
 | 
			
		||||
	if ((u32)output != LOAD_PHYSICAL_ADDR)
 | 
			
		||||
		error("Wrong destination address");
 | 
			
		||||
#endif
 | 
			
		||||
	early_serial_init();
 | 
			
		||||
	early_serial_write("Uncompressing Linux\n", 512);
 | 
			
		||||
	lzma_unzip();
 | 
			
		||||
	early_serial_write("Done, booting\n", 512);
 | 
			
		||||
	return;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,24 +0,0 @@
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <linux/bitops.h>
 | 
			
		||||
#include <linux/mm.h>
 | 
			
		||||
#include <asm/io.h>
 | 
			
		||||
#include <asm/processor.h>
 | 
			
		||||
 | 
			
		||||
#include "cpu.h"
 | 
			
		||||
 | 
			
		||||
static struct cpu_dev rdc_cpu_dev __cpuinitdata = {
 | 
			
		||||
        .c_vendor       = "RDC",
 | 
			
		||||
        .c_models = {
 | 
			
		||||
                { .vendor = X86_VENDOR_RDC, .family = 4, .model_names =
 | 
			
		||||
                  {
 | 
			
		||||
                          [0] = "R861x(-G)",
 | 
			
		||||
                  }
 | 
			
		||||
                },
 | 
			
		||||
        },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
int __init rdc_init_cpu(void)
 | 
			
		||||
{
 | 
			
		||||
        cpu_devs[X86_VENDOR_RDC] = &rdc_cpu_dev;
 | 
			
		||||
        return 0;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,5 +0,0 @@
 | 
			
		||||
#
 | 
			
		||||
# Makefile for the RDC321x specific parts of the kernel
 | 
			
		||||
#
 | 
			
		||||
obj-$(CONFIG_X86_RDC)        := gpio.o platform.o wdt.o
 | 
			
		||||
 | 
			
		||||
@@ -1,91 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 *  Copyright (C) 2007, OpenWrt.org, Florian Fainelli <florian@openwrt.org>
 | 
			
		||||
 *  	RDC321x architecture specific GPIO support
 | 
			
		||||
 *
 | 
			
		||||
 *  This program is free software; you can redistribute  it and/or modify it
 | 
			
		||||
 *  under  the terms of  the GNU General  Public License as published by the
 | 
			
		||||
 *  Free Software Foundation;  either version 2 of the  License, or (at your
 | 
			
		||||
 *  option) any later version.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <linux/autoconf.h>
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <linux/io.h>
 | 
			
		||||
#include <linux/types.h>
 | 
			
		||||
#include <linux/module.h>
 | 
			
		||||
#include <linux/delay.h>
 | 
			
		||||
 | 
			
		||||
#include <asm/mach-rdc/rdc321x_defs.h>
 | 
			
		||||
 | 
			
		||||
static inline int rdc_gpio_is_valid(unsigned gpio)
 | 
			
		||||
{
 | 
			
		||||
	return (gpio <= RDC_MAX_GPIO);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static unsigned int rdc_gpio_read(unsigned gpio)
 | 
			
		||||
{
 | 
			
		||||
	unsigned int val;
 | 
			
		||||
 | 
			
		||||
	val = 0x80000000 | (7 << 11) | ((gpio&0x20?0x84:0x48));
 | 
			
		||||
        outl(val, RDC3210_CFGREG_ADDR);
 | 
			
		||||
        udelay(10);
 | 
			
		||||
        val = inl(RDC3210_CFGREG_DATA);
 | 
			
		||||
        val |= (0x1 << (gpio & 0x1F));
 | 
			
		||||
        outl(val, RDC3210_CFGREG_DATA);
 | 
			
		||||
        udelay(10);
 | 
			
		||||
        val = 0x80000000 | (7 << 11) | ((gpio&0x20?0x88:0x4C));
 | 
			
		||||
        outl(val, RDC3210_CFGREG_ADDR);
 | 
			
		||||
        udelay(10);
 | 
			
		||||
        val = inl(RDC3210_CFGREG_DATA);
 | 
			
		||||
 | 
			
		||||
	return val;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void rdc_gpio_write(unsigned int val)
 | 
			
		||||
{
 | 
			
		||||
	if (val) {
 | 
			
		||||
		outl(val, RDC3210_CFGREG_DATA);
 | 
			
		||||
		udelay(10);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int rdc_gpio_get_value(unsigned gpio)
 | 
			
		||||
{
 | 
			
		||||
	if (rdc_gpio_is_valid(gpio))
 | 
			
		||||
		return (int)rdc_gpio_read(gpio);
 | 
			
		||||
	else
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
}
 | 
			
		||||
EXPORT_SYMBOL(rdc_gpio_get_value);
 | 
			
		||||
 | 
			
		||||
void rdc_gpio_set_value(unsigned gpio, int value)
 | 
			
		||||
{
 | 
			
		||||
	unsigned int val;
 | 
			
		||||
 | 
			
		||||
	if (!rdc_gpio_is_valid(gpio))
 | 
			
		||||
		return;
 | 
			
		||||
	
 | 
			
		||||
	val = rdc_gpio_read(gpio);
 | 
			
		||||
 | 
			
		||||
	if (value)
 | 
			
		||||
		val &= ~(0x1 << (gpio & 0x1F));
 | 
			
		||||
	else
 | 
			
		||||
		val |= (0x1 << (gpio & 0x1F));
 | 
			
		||||
 | 
			
		||||
	rdc_gpio_write(val);
 | 
			
		||||
}
 | 
			
		||||
EXPORT_SYMBOL(rdc_gpio_set_value);
 | 
			
		||||
 | 
			
		||||
int rdc_gpio_direction_input(unsigned gpio)
 | 
			
		||||
{
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
EXPORT_SYMBOL(rdc_gpio_direction_input);
 | 
			
		||||
 | 
			
		||||
int rdc_gpio_direction_output(unsigned gpio, int value)
 | 
			
		||||
{
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
EXPORT_SYMBOL(rdc_gpio_direction_output);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -1,263 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 *
 | 
			
		||||
 *  Generic RDC321x platform devices
 | 
			
		||||
 *
 | 
			
		||||
 *  Copyright (C) 2007-2008 OpenWrt.org
 | 
			
		||||
 *  Copyright (C) 2007 Florian Fainelli <florian@openwrt.org>
 | 
			
		||||
 *  Copyright (C) 2008 Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
 | 
			
		||||
 *
 | 
			
		||||
 *  This program is free software; you can redistribute it and/or
 | 
			
		||||
 *  modify it under the terms of the GNU General Public License
 | 
			
		||||
 *  as published by the Free Software Foundation; either version 2
 | 
			
		||||
 *  of the License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 *  This program is distributed in the hope that it will be useful,
 | 
			
		||||
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 *  GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 *  You should have received a copy of the GNU General Public License
 | 
			
		||||
 *  along with this program; if not, write to the
 | 
			
		||||
 *  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 | 
			
		||||
 *  Boston, MA  02110-1301, USA.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <linux/kernel.h>
 | 
			
		||||
#include <linux/list.h>
 | 
			
		||||
#include <linux/device.h>
 | 
			
		||||
#include <linux/platform_device.h>
 | 
			
		||||
#include <linux/version.h>
 | 
			
		||||
#include <linux/leds.h>
 | 
			
		||||
#include <linux/gpio_keys.h>
 | 
			
		||||
#include <linux/input.h>
 | 
			
		||||
#include <linux/mtd/map.h>
 | 
			
		||||
#include <linux/mtd/mtd.h>
 | 
			
		||||
#include <linux/mtd/physmap.h>
 | 
			
		||||
#include <linux/root_dev.h>
 | 
			
		||||
#include <asm/gpio.h>
 | 
			
		||||
 | 
			
		||||
/* Flash */
 | 
			
		||||
#ifdef CONFIG_MTD_RDC3210
 | 
			
		||||
static struct resource rdc_flash_resource[] = {
 | 
			
		||||
	[0] = {
 | 
			
		||||
		.start = (u32)-CONFIG_MTD_RDC3210_SIZE,
 | 
			
		||||
		.end = (u32)-1,
 | 
			
		||||
		.flags = IORESOURCE_MEM,
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct platform_device rdc_flash_device = {
 | 
			
		||||
	.name = "rdc321x-flash",
 | 
			
		||||
	.id = -1,
 | 
			
		||||
	.num_resources = ARRAY_SIZE(rdc_flash_resource),
 | 
			
		||||
	.resource = rdc_flash_resource,
 | 
			
		||||
};
 | 
			
		||||
#else
 | 
			
		||||
static struct mtd_partition rdc_flash_parts[15];
 | 
			
		||||
 | 
			
		||||
static struct resource rdc_flash_resource = {
 | 
			
		||||
	.end = (u32)-1,
 | 
			
		||||
	.flags = IORESOURCE_MEM,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct physmap_flash_data rdc_flash_data = {
 | 
			
		||||
	.parts = rdc_flash_parts,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct platform_device rdc_flash_device = {
 | 
			
		||||
	.name = "physmap-flash",
 | 
			
		||||
	.id = -1,
 | 
			
		||||
	.resource = &rdc_flash_resource,
 | 
			
		||||
	.num_resources = 1,
 | 
			
		||||
	.dev.platform_data = &rdc_flash_data,
 | 
			
		||||
};
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* LEDS */
 | 
			
		||||
static struct gpio_led default_leds[] = {
 | 
			
		||||
        { .name = "rdc321x:dmz", .gpio = 1, },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct gpio_led_platform_data rdc321x_led_data = {
 | 
			
		||||
	.num_leds = ARRAY_SIZE(default_leds),
 | 
			
		||||
	.leds = default_leds,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct platform_device rdc321x_leds = {
 | 
			
		||||
	.name = "leds-gpio",
 | 
			
		||||
	.id = -1,
 | 
			
		||||
	.dev = {
 | 
			
		||||
		.platform_data = &rdc321x_led_data,
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Watchdog */
 | 
			
		||||
static struct platform_device rdc321x_wdt = {
 | 
			
		||||
	.name = "rdc321x-wdt",
 | 
			
		||||
	.id = -1,
 | 
			
		||||
	.num_resources = 0,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Button */
 | 
			
		||||
static struct gpio_keys_button rdc321x_gpio_btn[] = {
 | 
			
		||||
	{
 | 
			
		||||
		.gpio = 0,
 | 
			
		||||
		.code = BTN_0,
 | 
			
		||||
		.desc = "Reset",
 | 
			
		||||
		.active_low = 1,
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct gpio_keys_platform_data rdc321x_gpio_btn_data = {
 | 
			
		||||
	.buttons = rdc321x_gpio_btn,
 | 
			
		||||
	.nbuttons = ARRAY_SIZE(rdc321x_gpio_btn),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct platform_device rdc321x_button = {
 | 
			
		||||
	.name = "gpio-keys",
 | 
			
		||||
	.id = -1,
 | 
			
		||||
	.dev = {
 | 
			
		||||
		.platform_data = &rdc321x_gpio_btn_data,
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct platform_device *rdc321x_devs[] = {
 | 
			
		||||
	&rdc_flash_device,
 | 
			
		||||
	&rdc321x_leds,
 | 
			
		||||
	&rdc321x_wdt,
 | 
			
		||||
	&rdc321x_button
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static int probe_flash_start(struct map_info *the_map)
 | 
			
		||||
{
 | 
			
		||||
	struct mtd_info *res;
 | 
			
		||||
 | 
			
		||||
	the_map->virt = ioremap(the_map->phys, the_map->size);
 | 
			
		||||
	if (the_map->virt == NULL)
 | 
			
		||||
		return 1;
 | 
			
		||||
	for (the_map->bankwidth = 32; the_map->bankwidth; the_map->bankwidth
 | 
			
		||||
			>>= 1) {
 | 
			
		||||
		res = do_map_probe("cfi_probe", the_map);
 | 
			
		||||
		if (res == NULL)
 | 
			
		||||
			res = do_map_probe("jedec_probe", the_map);
 | 
			
		||||
		if (res != NULL)
 | 
			
		||||
			break;
 | 
			
		||||
	}
 | 
			
		||||
	iounmap(the_map->virt);
 | 
			
		||||
	if (res != NULL)
 | 
			
		||||
		the_map->phys = (u32)-(s32)(the_map->size = res->size);
 | 
			
		||||
	return res == NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static __init int rdc_board_setup(void)
 | 
			
		||||
{
 | 
			
		||||
#ifndef CONFIG_MTD_RDC3210
 | 
			
		||||
	struct map_info rdc_map_info;
 | 
			
		||||
	u32 the_header[4];
 | 
			
		||||
 | 
			
		||||
	ROOT_DEV = 0;
 | 
			
		||||
	rdc_map_info.name = rdc_flash_device.name;
 | 
			
		||||
	rdc_map_info.phys = 0xff000000;
 | 
			
		||||
	rdc_map_info.size = 0x1000000;
 | 
			
		||||
	rdc_map_info.bankwidth = 2;
 | 
			
		||||
	rdc_map_info.set_vpp = NULL;
 | 
			
		||||
	simple_map_init(&rdc_map_info);
 | 
			
		||||
	while (probe_flash_start(&rdc_map_info)) {
 | 
			
		||||
		rdc_map_info.phys++;
 | 
			
		||||
		if (--rdc_map_info.size)
 | 
			
		||||
			panic("Not to be or to be: That"
 | 
			
		||||
				" is not the question.");
 | 
			
		||||
	}
 | 
			
		||||
	rdc_flash_resource.start = rdc_map_info.phys;
 | 
			
		||||
	rdc_flash_data.width = rdc_map_info.bankwidth;
 | 
			
		||||
	rdc_map_info.virt = (u32)ioremap_nocache(rdc_map_info.phys, 0x10);
 | 
			
		||||
	if (rdc_map_info.virt == NULL)
 | 
			
		||||
		panic("Something's rotten in Denmark!");
 | 
			
		||||
	the_header[0] = ((u32 *)rdc_map_info.virt)[0];
 | 
			
		||||
	the_header[1] = ((u32 *)rdc_map_info.virt)[1];
 | 
			
		||||
	the_header[2] = ((u32 *)rdc_map_info.virt)[2];
 | 
			
		||||
	the_header[3] = ((u32 *)rdc_map_info.virt)[3];
 | 
			
		||||
	iounmap(rdc_map_info.virt);
 | 
			
		||||
	if (!memcmp(the_header, "GMTK", 4)) {	/* Gemtek */
 | 
			
		||||
		/* TODO */
 | 
			
		||||
	} else if (!memcmp(the_header, "CSYS", 4)) {	/* Sitecom */
 | 
			
		||||
		/* TODO */
 | 
			
		||||
	} else if (!memcmp(((u8 *)the_header) + 14, "Li", 2)) {	/* AMIT */
 | 
			
		||||
		rdc_flash_parts[0].name = "kernel_parthdr";
 | 
			
		||||
		rdc_flash_parts[0].offset = 0;
 | 
			
		||||
		rdc_flash_parts[0].size = 0x10;
 | 
			
		||||
		rdc_flash_parts[1].name = "kernel";
 | 
			
		||||
		rdc_flash_parts[1].offset = 0x10;
 | 
			
		||||
		rdc_flash_parts[1].size = 0xffff0;
 | 
			
		||||
		rdc_flash_parts[2].name = "rootfs_parthdr";
 | 
			
		||||
		rdc_flash_parts[2].offset = 0x100000;
 | 
			
		||||
		rdc_flash_parts[2].size = 0x10;
 | 
			
		||||
		rdc_flash_parts[3].name = "rootfs";
 | 
			
		||||
		rdc_flash_parts[3].offset = 0x100010;
 | 
			
		||||
		rdc_flash_parts[3].size = rdc_map_info.size - 0x160010;
 | 
			
		||||
		rdc_flash_parts[4].name = "config_parthdr";
 | 
			
		||||
		rdc_flash_parts[4].offset = rdc_map_info.size - 0x60000;
 | 
			
		||||
		rdc_flash_parts[4].size = 0x10;
 | 
			
		||||
		rdc_flash_parts[5].name = "config";
 | 
			
		||||
		rdc_flash_parts[5].offset = rdc_map_info.size - 0x5fff0;
 | 
			
		||||
		rdc_flash_parts[5].size = 0xfff0;
 | 
			
		||||
		rdc_flash_parts[6].name = "recoveryfs_parthdr";
 | 
			
		||||
		rdc_flash_parts[6].offset = rdc_map_info.size - 0x50000;
 | 
			
		||||
		rdc_flash_parts[6].size = 0x10;
 | 
			
		||||
		rdc_flash_parts[7].name = "recoveryfs";
 | 
			
		||||
		rdc_flash_parts[7].offset = rdc_map_info.size - 0x4fff0;
 | 
			
		||||
		rdc_flash_parts[7].size = 0x3fff0;
 | 
			
		||||
		rdc_flash_parts[8].name = "recovery_parthdr";
 | 
			
		||||
		rdc_flash_parts[8].offset = rdc_map_info.size - 0x10000;
 | 
			
		||||
		rdc_flash_parts[8].size = 0x10;
 | 
			
		||||
		rdc_flash_parts[9].name = "recovery";
 | 
			
		||||
		rdc_flash_parts[9].offset = rdc_map_info.size - 0xfff0;
 | 
			
		||||
		rdc_flash_parts[9].size = 0x7ff0;
 | 
			
		||||
		rdc_flash_parts[10].name = "productinfo_parthdr";
 | 
			
		||||
		rdc_flash_parts[10].offset = rdc_map_info.size - 0x8000;
 | 
			
		||||
		rdc_flash_parts[10].size = 0x10;
 | 
			
		||||
		rdc_flash_parts[11].name = "productinfo";
 | 
			
		||||
		rdc_flash_parts[11].offset = rdc_map_info.size - 0x7ff0;
 | 
			
		||||
		rdc_flash_parts[11].size = 0x1ff0;
 | 
			
		||||
		rdc_flash_parts[12].name = "bootloader_parthdr";
 | 
			
		||||
		rdc_flash_parts[12].offset = rdc_map_info.size - 0x6000;
 | 
			
		||||
		rdc_flash_parts[12].size = 0x10;
 | 
			
		||||
		rdc_flash_parts[13].name = "bootloader";
 | 
			
		||||
		rdc_flash_parts[13].offset = rdc_map_info.size - 0x5ff0;
 | 
			
		||||
		rdc_flash_parts[13].size = 0x5ff0;
 | 
			
		||||
		rdc_flash_parts[14].name = "everything";
 | 
			
		||||
		rdc_flash_parts[14].offset = 0;
 | 
			
		||||
		rdc_flash_parts[14].size = rdc_map_info.size;
 | 
			
		||||
		rdc_flash_data.nr_parts = 15;
 | 
			
		||||
	} else {	/* ZyXEL */
 | 
			
		||||
		rdc_flash_parts[0].name = "kernel";
 | 
			
		||||
		rdc_flash_parts[0].offset = 0;
 | 
			
		||||
		rdc_flash_parts[0].size = 0x100000;
 | 
			
		||||
		rdc_flash_parts[1].name = "rootfs";
 | 
			
		||||
		rdc_flash_parts[1].offset = 0x100000;
 | 
			
		||||
		rdc_flash_parts[1].size = rdc_map_info.size - 0x140000;
 | 
			
		||||
		rdc_flash_parts[2].name = "linux";
 | 
			
		||||
		rdc_flash_parts[2].offset = 0;
 | 
			
		||||
		rdc_flash_parts[2].size = rdc_map_info.size - 0x40000;
 | 
			
		||||
		rdc_flash_parts[3].name = "config";
 | 
			
		||||
		rdc_flash_parts[3].offset = rdc_map_info.size - 0x40000;
 | 
			
		||||
		rdc_flash_parts[3].size = 0x10000;
 | 
			
		||||
		rdc_flash_parts[4].name = "productinfo";
 | 
			
		||||
		rdc_flash_parts[4].offset = rdc_map_info.size - 0x30000;
 | 
			
		||||
		rdc_flash_parts[4].size = 0x10000;
 | 
			
		||||
		rdc_flash_parts[5].name = "bootloader";
 | 
			
		||||
		rdc_flash_parts[5].offset = rdc_map_info.size - 0x20000;
 | 
			
		||||
		rdc_flash_parts[5].size = 0x20000;
 | 
			
		||||
		rdc_flash_data.nr_parts = 6;
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
	return platform_add_devices(rdc321x_devs, ARRAY_SIZE(rdc321x_devs));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_MTD_RDC3210
 | 
			
		||||
arch_initcall(rdc_board_setup);
 | 
			
		||||
#else
 | 
			
		||||
late_initcall(rdc_board_setup);
 | 
			
		||||
#endif
 | 
			
		||||
@@ -1,14 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 *	Machine specific setup for generic
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <linux/interrupt.h>
 | 
			
		||||
#include <asm/arch_hooks.h>
 | 
			
		||||
#include <asm/io.h>
 | 
			
		||||
#include <asm/setup.h>
 | 
			
		||||
 | 
			
		||||
char * __init machine_specific_memory_setup(void)
 | 
			
		||||
{
 | 
			
		||||
	return "RDC R-321x";
 | 
			
		||||
}
 | 
			
		||||
@@ -1,272 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * RDC321x watchdog driver
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 2007 Florian Fainelli <florian@openwrt.org>
 | 
			
		||||
 *
 | 
			
		||||
 * This driver is highly inspired from the cpu5_wdt driver
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
 * the Free Software Foundation; either version 2 of the License, or
 | 
			
		||||
 * (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program; if not, write to the Free Software
 | 
			
		||||
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <linux/module.h>
 | 
			
		||||
#include <linux/moduleparam.h>
 | 
			
		||||
#include <linux/types.h>
 | 
			
		||||
#include <linux/errno.h>
 | 
			
		||||
#include <linux/miscdevice.h>
 | 
			
		||||
#include <linux/fs.h>
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <linux/ioport.h>
 | 
			
		||||
#include <linux/timer.h>
 | 
			
		||||
#include <linux/completion.h>
 | 
			
		||||
#include <linux/jiffies.h>
 | 
			
		||||
#include <linux/platform_device.h>
 | 
			
		||||
#include <linux/watchdog.h>
 | 
			
		||||
 | 
			
		||||
#include <asm/io.h>
 | 
			
		||||
#include <asm/uaccess.h>
 | 
			
		||||
 | 
			
		||||
#include <asm/mach-rdc/rdc321x_defs.h>
 | 
			
		||||
 | 
			
		||||
#define RDC_WDT_MASK		0x80000000	/* Mask */
 | 
			
		||||
#define RDC_WDT_EN		0x00800000 	/* Enable bit */
 | 
			
		||||
#define RDC_WDT_WTI		0x00200000	/* Generate a CPU reset/NMI/WDT irq when WDT timeout is reached */
 | 
			
		||||
#define RDC_WDT_RST		0x00100000	/* Reset bit */
 | 
			
		||||
#define RDC_WDT_WIF		0x00040000	/* WDT IRQ Flag */
 | 
			
		||||
#define RDC_WDT_IRT		0x00000100	/* IRQ Routing table */
 | 
			
		||||
#define RDC_WDT_CNT		0x00000001	/* WDT count */
 | 
			
		||||
 | 
			
		||||
#define RDC_CLS_TMR		0x80003844	/* Clear timer */
 | 
			
		||||
 | 
			
		||||
#define RDC_WDT_INTERVAL	(HZ/10+1)
 | 
			
		||||
 | 
			
		||||
int nowayout = WATCHDOG_NOWAYOUT;
 | 
			
		||||
module_param(nowayout, int, 0);
 | 
			
		||||
MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
 | 
			
		||||
 | 
			
		||||
static int ticks = 1000;
 | 
			
		||||
 | 
			
		||||
/* some device data */
 | 
			
		||||
 | 
			
		||||
static struct {
 | 
			
		||||
	struct completion stop;
 | 
			
		||||
	volatile int running;
 | 
			
		||||
	struct timer_list timer;
 | 
			
		||||
	volatile int queue;
 | 
			
		||||
	int default_ticks;
 | 
			
		||||
	unsigned long inuse;
 | 
			
		||||
} rdc321x_wdt_device;
 | 
			
		||||
 | 
			
		||||
/* generic helper functions */
 | 
			
		||||
 | 
			
		||||
static void rdc321x_wdt_trigger(unsigned long unused)
 | 
			
		||||
{
 | 
			
		||||
	if( rdc321x_wdt_device.running )
 | 
			
		||||
		ticks--;
 | 
			
		||||
 | 
			
		||||
	/* keep watchdog alive */
 | 
			
		||||
	outl(RDC_WDT_EN|inl(RDC3210_CFGREG_DATA), RDC3210_CFGREG_DATA);	
 | 
			
		||||
	
 | 
			
		||||
	/* requeue?? */
 | 
			
		||||
	if (rdc321x_wdt_device.queue && ticks)
 | 
			
		||||
		mod_timer(&rdc321x_wdt_device.timer, jiffies + RDC_WDT_INTERVAL);
 | 
			
		||||
	else {
 | 
			
		||||
		/* ticks doesn't matter anyway */
 | 
			
		||||
		complete(&rdc321x_wdt_device.stop);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void rdc321x_wdt_reset(void)
 | 
			
		||||
{
 | 
			
		||||
	ticks = rdc321x_wdt_device.default_ticks;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void rdc321x_wdt_start(void)
 | 
			
		||||
{
 | 
			
		||||
	if (!rdc321x_wdt_device.queue) {
 | 
			
		||||
		rdc321x_wdt_device.queue = 1;
 | 
			
		||||
 | 
			
		||||
		/* Clear the timer */
 | 
			
		||||
		outl(RDC_CLS_TMR, RDC3210_CFGREG_ADDR);
 | 
			
		||||
		
 | 
			
		||||
		/* Enable watchdog and set the timeout to 81.92 us */
 | 
			
		||||
		outl(RDC_WDT_EN|RDC_WDT_CNT, RDC3210_CFGREG_DATA);
 | 
			
		||||
 | 
			
		||||
		mod_timer(&rdc321x_wdt_device.timer, jiffies + RDC_WDT_INTERVAL);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* if process dies, counter is not decremented */
 | 
			
		||||
	rdc321x_wdt_device.running++;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int rdc321x_wdt_stop(void)
 | 
			
		||||
{
 | 
			
		||||
	if (rdc321x_wdt_device.running)
 | 
			
		||||
		rdc321x_wdt_device.running = 0;
 | 
			
		||||
 | 
			
		||||
	ticks = rdc321x_wdt_device.default_ticks;
 | 
			
		||||
 | 
			
		||||
	return -EIO;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* filesystem operations */
 | 
			
		||||
 | 
			
		||||
static int rdc321x_wdt_open(struct inode *inode, struct file *file)
 | 
			
		||||
{
 | 
			
		||||
	if (test_and_set_bit(0, &rdc321x_wdt_device.inuse))
 | 
			
		||||
		return -EBUSY;
 | 
			
		||||
 | 
			
		||||
	return nonseekable_open(inode, file);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int rdc321x_wdt_release(struct inode *inode, struct file *file)
 | 
			
		||||
{
 | 
			
		||||
	clear_bit(0, &rdc321x_wdt_device.inuse);
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int rdc321x_wdt_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
 | 
			
		||||
{
 | 
			
		||||
	void __user *argp = (void __user *)arg;
 | 
			
		||||
	unsigned int value;
 | 
			
		||||
	static struct watchdog_info ident =
 | 
			
		||||
	{
 | 
			
		||||
		.options = WDIOF_CARDRESET,
 | 
			
		||||
		.identity = "RDC321x WDT",
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	switch(cmd) {
 | 
			
		||||
		case WDIOC_KEEPALIVE:
 | 
			
		||||
			rdc321x_wdt_reset();
 | 
			
		||||
			break;
 | 
			
		||||
		case WDIOC_GETSTATUS:
 | 
			
		||||
			/* Read the value from the DATA register */
 | 
			
		||||
			value = inl(RDC3210_CFGREG_DATA);
 | 
			
		||||
			if ( copy_to_user(argp, &value, sizeof(int)) )
 | 
			
		||||
				return -EFAULT;
 | 
			
		||||
			break;
 | 
			
		||||
		case WDIOC_GETSUPPORT:
 | 
			
		||||
			if ( copy_to_user(argp, &ident, sizeof(ident)) )
 | 
			
		||||
				return -EFAULT;
 | 
			
		||||
			break;
 | 
			
		||||
		case WDIOC_SETOPTIONS:
 | 
			
		||||
			if ( copy_from_user(&value, argp, sizeof(int)) )
 | 
			
		||||
				return -EFAULT;
 | 
			
		||||
			switch(value) {
 | 
			
		||||
				case WDIOS_ENABLECARD:
 | 
			
		||||
					rdc321x_wdt_start();
 | 
			
		||||
					break;
 | 
			
		||||
				case WDIOS_DISABLECARD:
 | 
			
		||||
					return rdc321x_wdt_stop();
 | 
			
		||||
				default:
 | 
			
		||||
					return -EINVAL;
 | 
			
		||||
			}
 | 
			
		||||
			break;
 | 
			
		||||
		default:
 | 
			
		||||
    			return -ENOTTY;
 | 
			
		||||
	}
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static ssize_t rdc321x_wdt_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
 | 
			
		||||
{
 | 
			
		||||
	if ( !count )
 | 
			
		||||
		return -EIO;
 | 
			
		||||
 | 
			
		||||
	rdc321x_wdt_reset();
 | 
			
		||||
 | 
			
		||||
	return count;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const struct file_operations rdc321x_wdt_fops = {
 | 
			
		||||
	.owner		= THIS_MODULE,
 | 
			
		||||
	.llseek		= no_llseek,
 | 
			
		||||
	.ioctl		= rdc321x_wdt_ioctl,
 | 
			
		||||
	.open		= rdc321x_wdt_open,
 | 
			
		||||
	.write		= rdc321x_wdt_write,
 | 
			
		||||
	.release	= rdc321x_wdt_release,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct miscdevice rdc321x_wdt_misc = {
 | 
			
		||||
	.minor	= WATCHDOG_MINOR,
 | 
			
		||||
	.name	= "watchdog",
 | 
			
		||||
	.fops	= &rdc321x_wdt_fops,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static int __devinit rdc321x_wdt_probe(struct platform_device *pdev)
 | 
			
		||||
{
 | 
			
		||||
	int err;
 | 
			
		||||
 | 
			
		||||
	if ( (err = misc_register(&rdc321x_wdt_misc)) < 0 ) {
 | 
			
		||||
		printk(KERN_ERR PFX "misc_register failed\n");
 | 
			
		||||
		return err;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Reset the watchdog */
 | 
			
		||||
	outl(RDC_WDT_RST, RDC3210_CFGREG_DATA);
 | 
			
		||||
 | 
			
		||||
	init_completion(&rdc321x_wdt_device.stop);
 | 
			
		||||
	rdc321x_wdt_device.queue = 0;
 | 
			
		||||
 | 
			
		||||
	clear_bit(0, &rdc321x_wdt_device.inuse);
 | 
			
		||||
 | 
			
		||||
	setup_timer(&rdc321x_wdt_device.timer, rdc321x_wdt_trigger, 0);
 | 
			
		||||
 | 
			
		||||
	rdc321x_wdt_device.default_ticks = ticks;
 | 
			
		||||
 | 
			
		||||
	printk(KERN_INFO PFX "init success\n");
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int rdc321x_wdt_remove(struct platform_device *pdev)
 | 
			
		||||
{
 | 
			
		||||
	if (rdc321x_wdt_device.queue) {
 | 
			
		||||
		rdc321x_wdt_device.queue = 0;
 | 
			
		||||
		wait_for_completion(&rdc321x_wdt_device.stop);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	misc_deregister(&rdc321x_wdt_misc);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static struct platform_driver rdc321x_wdt_driver = {
 | 
			
		||||
	.probe = rdc321x_wdt_probe,
 | 
			
		||||
	.remove = rdc321x_wdt_remove,
 | 
			
		||||
	.driver = {
 | 
			
		||||
		.owner = THIS_MODULE,
 | 
			
		||||
		.name = "rdc321x-wdt",
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static int __init rdc321x_wdt_init(void)
 | 
			
		||||
{
 | 
			
		||||
	return platform_driver_register(&rdc321x_wdt_driver);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void __exit rdc321x_wdt_exit(void)
 | 
			
		||||
{
 | 
			
		||||
	platform_driver_unregister(&rdc321x_wdt_driver);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module_init(rdc321x_wdt_init);
 | 
			
		||||
module_exit(rdc321x_wdt_exit);
 | 
			
		||||
 | 
			
		||||
MODULE_AUTHOR("Florian Fainelli <florian@openwrt.org>");
 | 
			
		||||
MODULE_DESCRIPTION("RDC321x watchdog driver");
 | 
			
		||||
MODULE_LICENSE("GPL");
 | 
			
		||||
MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
 | 
			
		||||
@@ -1,25 +0,0 @@
 | 
			
		||||
#ifndef GT_IMGHDR_H
 | 
			
		||||
#define GT_IMGHDR_H
 | 
			
		||||
 | 
			
		||||
#define GTIMG_MAGIC		"GMTK"
 | 
			
		||||
 | 
			
		||||
/* Product ID */
 | 
			
		||||
#define PID_RTL_AIRGO		1
 | 
			
		||||
#define PID_RTL_RALINK		2
 | 
			
		||||
#define PID_RDC_AIRGO		3
 | 
			
		||||
#define PID_RDC_RALINK		5	/* White Lable */
 | 
			
		||||
 | 
			
		||||
/* Gemtek */
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
	u8		magic[4];		/* ASICII: GMTK */
 | 
			
		||||
	u32		checksum;		/* CRC32 */
 | 
			
		||||
	u32		version;		/* x.x.x.x */
 | 
			
		||||
	u32		kernelsz;		/* The size of the kernel image */
 | 
			
		||||
	u32		imagesz;		/* The length of this image file ( kernel + romfs + this header) */
 | 
			
		||||
	u32		pid;			/* Product ID */
 | 
			
		||||
	u32		fastcksum;		/* Partial CRC32 on (First(256), medium(256), last(512)) */
 | 
			
		||||
	u32		reserved;
 | 
			
		||||
}gt_imghdr_t;
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
@@ -1,392 +0,0 @@
 | 
			
		||||
/*******************************************************************
 | 
			
		||||
 * Simple Flash mapping for RDC3210                                *
 | 
			
		||||
 *                                                                 *
 | 
			
		||||
 *                                                     2005.03.23  *
 | 
			
		||||
 *                              Dante Su (dante_su@gemtek.com.tw)  *
 | 
			
		||||
 *                          Copyright (C) 2005 Gemtek Corporation  *
 | 
			
		||||
 *******************************************************************/
 | 
			
		||||
 | 
			
		||||
#include <linux/module.h>
 | 
			
		||||
#include <linux/types.h>
 | 
			
		||||
#include <linux/kernel.h>
 | 
			
		||||
#include <asm/io.h>
 | 
			
		||||
#include <linux/mtd/mtd.h>
 | 
			
		||||
#include <linux/mtd/map.h>
 | 
			
		||||
#include <linux/mtd/partitions.h>
 | 
			
		||||
#include <linux/autoconf.h>
 | 
			
		||||
#include <linux/sched.h>
 | 
			
		||||
#include <linux/squashfs_fs.h>
 | 
			
		||||
 | 
			
		||||
static struct mtd_info		*rdc3210_mtd;
 | 
			
		||||
 | 
			
		||||
struct map_info rdc3210_map = 
 | 
			
		||||
{
 | 
			
		||||
	.name =		"RDC3210 Flash",
 | 
			
		||||
	.size =		CONFIG_MTD_RDC3210_SIZE,
 | 
			
		||||
	.bankwidth =	CONFIG_MTD_RDC3210_BUSWIDTH,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Dante: This is the default static mapping, however this is nothing but a hint. (Say dynamic mapping) */
 | 
			
		||||
static struct mtd_partition rdc3210_parts[] = 
 | 
			
		||||
{
 | 
			
		||||
#if CONFIG_MTD_RDC3210_SIZE == 0x400000
 | 
			
		||||
	{ name: "linux",   offset:  0,          size: 0x003C0000 },	/* 3840 KB = (Kernel + ROMFS) = (768 KB + 3072 KB) */
 | 
			
		||||
	{ name: "romfs",   offset:  0x000C0000, size: 0x00300000 },	/* 3072 KB */
 | 
			
		||||
	{ name: "nvram",   offset:  0x003C0000, size: 0x00010000 },	/*   64 KB */
 | 
			
		||||
#ifdef CONFIG_MTD_RDC3210_FACTORY_PRESENT
 | 
			
		||||
	{ name: "factory", offset:  0x003D0000, size: 0x00010000 },	/*   64 KB */
 | 
			
		||||
#endif
 | 
			
		||||
	{ name: "bootldr", offset:  0x003E0000, size: 0x00020000 },	/*  128 KB */
 | 
			
		||||
#elif CONFIG_MTD_RDC3210_SIZE == 0x200000
 | 
			
		||||
	{ name: "linux",   offset:  0x00008000, size: 0x001E8000 },
 | 
			
		||||
	{ name: "romfs",   offset:  0x000C8000, size: 0x00128000 },
 | 
			
		||||
	{ name: "nvram",   offset:  0x00000000, size: 0x00008000 },	/*   64 KB */
 | 
			
		||||
#ifdef CONFIG_MTD_RDC3210_FACTORY_PRESENT
 | 
			
		||||
#error Unsupported configuration!
 | 
			
		||||
#endif
 | 
			
		||||
	{ name: "bootldr", offset:  0x001F0000, size: 0x00010000 },
 | 
			
		||||
 | 
			
		||||
#elif CONFIG_MTD_RDC3210_SIZE == 0x800000
 | 
			
		||||
        { name: "linux",   offset:  0,          size: 0x001F0000 },     /* 1984 KB */
 | 
			
		||||
        { name: "config",  offset:  0x001F0000, size: 0x00010000 },     /*   64 KB */
 | 
			
		||||
        { name: "romfs",   offset:  0x00200000, size: 0x005D0000 },     /* 5952 KB */
 | 
			
		||||
#ifdef CONFIG_MTD_RDC3210_FACTORY_PRESENT
 | 
			
		||||
        { name: "factory", offset:  0x007D0000, size: 0x00010000 },     /*   64 KB */
 | 
			
		||||
#endif
 | 
			
		||||
        { name: "bootldr", offset:  0x007E0000, size: 0x00010000 },     /*   64 KB */
 | 
			
		||||
#else
 | 
			
		||||
#error Unsupported configuration!
 | 
			
		||||
#endif
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static __u32 crctab[257] = {
 | 
			
		||||
	0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
 | 
			
		||||
	0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
 | 
			
		||||
	0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
 | 
			
		||||
	0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
 | 
			
		||||
	0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
 | 
			
		||||
	0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
 | 
			
		||||
	0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
 | 
			
		||||
	0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
 | 
			
		||||
	0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
 | 
			
		||||
	0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
 | 
			
		||||
	0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
 | 
			
		||||
	0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
 | 
			
		||||
	0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
 | 
			
		||||
	0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
 | 
			
		||||
	0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
 | 
			
		||||
	0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
 | 
			
		||||
	0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
 | 
			
		||||
	0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
 | 
			
		||||
	0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
 | 
			
		||||
	0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
 | 
			
		||||
	0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
 | 
			
		||||
	0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
 | 
			
		||||
	0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
 | 
			
		||||
	0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
 | 
			
		||||
	0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
 | 
			
		||||
	0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
 | 
			
		||||
	0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
 | 
			
		||||
	0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
 | 
			
		||||
	0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
 | 
			
		||||
	0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
 | 
			
		||||
	0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
 | 
			
		||||
	0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
 | 
			
		||||
	0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
 | 
			
		||||
	0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
 | 
			
		||||
	0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
 | 
			
		||||
	0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
 | 
			
		||||
	0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
 | 
			
		||||
	0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
 | 
			
		||||
	0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
 | 
			
		||||
	0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
 | 
			
		||||
	0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
 | 
			
		||||
	0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
 | 
			
		||||
	0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
 | 
			
		||||
	0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
 | 
			
		||||
	0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
 | 
			
		||||
	0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
 | 
			
		||||
	0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
 | 
			
		||||
	0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
 | 
			
		||||
	0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
 | 
			
		||||
	0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
 | 
			
		||||
	0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
 | 
			
		||||
	0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
 | 
			
		||||
	0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
 | 
			
		||||
	0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
 | 
			
		||||
	0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
 | 
			
		||||
	0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
 | 
			
		||||
	0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
 | 
			
		||||
	0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
 | 
			
		||||
	0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
 | 
			
		||||
	0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
 | 
			
		||||
	0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
 | 
			
		||||
	0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
 | 
			
		||||
	0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
 | 
			
		||||
	0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
 | 
			
		||||
	0
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static __u32 crc32(__u8 * buf, __u32 len)
 | 
			
		||||
{
 | 
			
		||||
	register int i;
 | 
			
		||||
	__u32 sum;
 | 
			
		||||
	register __u32 s0;
 | 
			
		||||
	s0 = ~0;
 | 
			
		||||
	for (i = 0; i < len; i++) {
 | 
			
		||||
		s0 = (s0 >> 8) ^ crctab[(__u8) (s0 & 0xFF) ^ buf[i]];
 | 
			
		||||
	}
 | 
			
		||||
	sum = ~s0;
 | 
			
		||||
	return sum;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void erase_callback(struct erase_info *done)
 | 
			
		||||
{
 | 
			
		||||
	wait_queue_head_t *wait_q = (wait_queue_head_t *)done->priv;
 | 
			
		||||
	wake_up(wait_q);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int erase_write (struct mtd_info *mtd, unsigned long pos, 
 | 
			
		||||
			int len, const char *buf)
 | 
			
		||||
{
 | 
			
		||||
	struct erase_info erase;
 | 
			
		||||
	DECLARE_WAITQUEUE(wait, current);
 | 
			
		||||
	wait_queue_head_t wait_q;
 | 
			
		||||
	size_t retlen;
 | 
			
		||||
	int ret;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * First, let's erase the flash block.
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	init_waitqueue_head(&wait_q);
 | 
			
		||||
	erase.mtd = mtd;
 | 
			
		||||
	erase.callback = erase_callback;
 | 
			
		||||
	erase.addr = pos;
 | 
			
		||||
	erase.len = len;
 | 
			
		||||
	erase.priv = (u_long)&wait_q;
 | 
			
		||||
 | 
			
		||||
	set_current_state(TASK_INTERRUPTIBLE);
 | 
			
		||||
	add_wait_queue(&wait_q, &wait);
 | 
			
		||||
 | 
			
		||||
	ret = mtd->erase(mtd, &erase);
 | 
			
		||||
	if (ret) {
 | 
			
		||||
		set_current_state(TASK_RUNNING);
 | 
			
		||||
		remove_wait_queue(&wait_q, &wait);
 | 
			
		||||
		printk (KERN_WARNING "erase of region [0x%lx, 0x%x] "
 | 
			
		||||
				     "on \"%s\" failed\n",
 | 
			
		||||
			pos, len, mtd->name);
 | 
			
		||||
		return ret;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	schedule();  /* Wait for erase to finish. */
 | 
			
		||||
	remove_wait_queue(&wait_q, &wait);
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Next, writhe data to flash.
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	ret = mtd->write (mtd, pos, len, &retlen, buf);
 | 
			
		||||
	if (ret)
 | 
			
		||||
		return ret;
 | 
			
		||||
	if (retlen != len)
 | 
			
		||||
		return -EIO;
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int __init init_rdc3210_map(void)
 | 
			
		||||
{
 | 
			
		||||
	rdc3210_map.phys = -rdc3210_map.size;
 | 
			
		||||
       	printk(KERN_NOTICE "flash device: %x at %x\n", rdc3210_map.size, rdc3210_map.phys);
 | 
			
		||||
 | 
			
		||||
#if CONFIG_MTD_RDC3210_SIZE == 0x800000
 | 
			
		||||
	simple_map_init(&rdc3210_map);
 | 
			
		||||
#endif
 | 
			
		||||
       	
 | 
			
		||||
	rdc3210_map.map_priv_1 = (unsigned long)(rdc3210_map.virt = ioremap_nocache(rdc3210_map.phys, rdc3210_map.size));
 | 
			
		||||
 | 
			
		||||
	if (!rdc3210_map.map_priv_1) 
 | 
			
		||||
	{
 | 
			
		||||
		printk("Failed to ioremap\n");
 | 
			
		||||
		return -EIO;
 | 
			
		||||
	}
 | 
			
		||||
	rdc3210_mtd = do_map_probe("cfi_probe", &rdc3210_map);
 | 
			
		||||
#ifdef CONFIG_MTD_RDC3210_STATIC_MAP	/* Dante: This is for fixed map */
 | 
			
		||||
	if (rdc3210_mtd) 
 | 
			
		||||
	{
 | 
			
		||||
		rdc3210_mtd->owner = THIS_MODULE;
 | 
			
		||||
		add_mtd_partitions(rdc3210_mtd, rdc3210_parts, sizeof(rdc3210_parts)/sizeof(rdc3210_parts[0]));
 | 
			
		||||
		return 0;
 | 
			
		||||
	}
 | 
			
		||||
#else	/* Dante: This is for dynamic mapping */
 | 
			
		||||
 | 
			
		||||
#include "imghdr.h"
 | 
			
		||||
 | 
			
		||||
	typedef struct {
 | 
			
		||||
		u8	magic[4];
 | 
			
		||||
		u32	kernelsz, ramdisksz;
 | 
			
		||||
		u8	magic2[4];
 | 
			
		||||
		u32	sz2;
 | 
			
		||||
	}sc_imghdr_t;
 | 
			
		||||
 | 
			
		||||
	if (rdc3210_mtd) 
 | 
			
		||||
	{	// Dante
 | 
			
		||||
		sc_imghdr_t	*hdr2= (sc_imghdr_t *)(rdc3210_map.map_priv_1);
 | 
			
		||||
		gt_imghdr_t	*hdr = (gt_imghdr_t *)hdr2
 | 
			
		||||
#ifdef CONFIG_MTD_RDC3210_ALLOW_JFFS2
 | 
			
		||||
			, *ptmp
 | 
			
		||||
#endif
 | 
			
		||||
			;
 | 
			
		||||
		int	len, tmp, tmp2, tmp3, tmp4, hdr_type = 0;
 | 
			
		||||
		
 | 
			
		||||
		if(!memcmp(hdr->magic, GTIMG_MAGIC, 4))
 | 
			
		||||
		{
 | 
			
		||||
			hdr_type = 1;
 | 
			
		||||
			tmp = hdr->kernelsz + sizeof(gt_imghdr_t);
 | 
			
		||||
			tmp2 = rdc3210_mtd->erasesize;
 | 
			
		||||
			tmp3 = ((tmp / 32) + ((tmp % 32) ? 1 : 0)) * 32;
 | 
			
		||||
			tmp4 = ((tmp / tmp2) + ((tmp % tmp2) ? 1 : 0)) * tmp2;
 | 
			
		||||
		}
 | 
			
		||||
#ifndef CONFIG_MTD_RDC3210_ALLOW_JFFS2
 | 
			
		||||
		else if (!memcmp(hdr2->magic, "CSYS", 4))
 | 
			
		||||
		{
 | 
			
		||||
			hdr_type = 2;
 | 
			
		||||
			tmp = hdr2->ramdisksz + hdr2->kernelsz + sizeof(sc_imghdr_t);
 | 
			
		||||
			tmp2 = rdc3210_mtd->erasesize;
 | 
			
		||||
			tmp3 = ((tmp / 32) + ((tmp % 32) ? 1 : 0)) * 32;
 | 
			
		||||
			tmp4 = ((tmp / tmp2) + ((tmp % tmp2) ? 1 : 0)) * tmp2;
 | 
			
		||||
		}
 | 
			
		||||
#endif
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			iounmap((void *)rdc3210_map.map_priv_1);
 | 
			
		||||
			rdc3210_map.map_priv_1 = 0L;
 | 
			
		||||
			rdc3210_map.virt = NULL;
 | 
			
		||||
			printk("Invalid MAGIC for Firmware Image!!!\n");
 | 
			
		||||
			return -EIO;
 | 
			
		||||
		}
 | 
			
		||||
#ifdef CONFIG_MTD_RDC3210_ALLOW_JFFS2
 | 
			
		||||
		tmp = (tmp3 == tmp4) ? tmp4 + tmp2 : tmp4;
 | 
			
		||||
		if ((ptmp = (gt_imghdr_t *)vmalloc(tmp)) == NULL)
 | 
			
		||||
		{
 | 
			
		||||
			iounmap((void *)rdc3210_map.map_priv_1);
 | 
			
		||||
			rdc3210_map.map_priv_1 = 0L;
 | 
			
		||||
			rdc3210_map.virt = NULL;
 | 
			
		||||
			printk("Can't allocate 0x%08x for flash-reading buffer!\n", tmp);
 | 
			
		||||
			return -ENOMEM;
 | 
			
		||||
		}
 | 
			
		||||
		if (rdc3210_mtd->read(rdc3210_mtd, 0, tmp, &len, (__u8 *)ptmp) || len != tmp)
 | 
			
		||||
		{
 | 
			
		||||
			vfree(ptmp);
 | 
			
		||||
			iounmap((void *)rdc3210_map.map_priv_1);
 | 
			
		||||
			rdc3210_map.map_priv_1 = 0L;
 | 
			
		||||
			rdc3210_map.virt = NULL;
 | 
			
		||||
			printk("Can't read that much flash! Read 0x%08x of it.\n", len);
 | 
			
		||||
			return -EIO;
 | 
			
		||||
		}
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef CONFIG_MTD_RDC3210_FACTORY_PRESENT
 | 
			
		||||
		/* 1. Adjust Redboot */
 | 
			
		||||
		tmp = rdc3210_mtd->size - rdc3210_parts[4].size;
 | 
			
		||||
		rdc3210_parts[4].offset = tmp - (tmp % tmp2);
 | 
			
		||||
		rdc3210_parts[4].size   = rdc3210_mtd->size - rdc3210_parts[4].offset;
 | 
			
		||||
		
 | 
			
		||||
		/* 2. Adjust Factory Default */
 | 
			
		||||
		tmp -= rdc3210_parts[3].size;
 | 
			
		||||
		rdc3210_parts[3].offset = tmp - (tmp % tmp2);
 | 
			
		||||
		rdc3210_parts[3].size   = rdc3210_parts[4].offset - rdc3210_parts[3].offset;
 | 
			
		||||
#else
 | 
			
		||||
		/* 1. Adjust Redboot */
 | 
			
		||||
		tmp = rdc3210_mtd->size - rdc3210_parts[3].size;
 | 
			
		||||
		rdc3210_parts[3].offset = tmp - (tmp % tmp2);
 | 
			
		||||
		rdc3210_parts[3].size   = rdc3210_mtd->size - rdc3210_parts[3].offset;
 | 
			
		||||
#endif
 | 
			
		||||
		if (hdr_type == 1) {
 | 
			
		||||
		/* 3. Adjust NVRAM */
 | 
			
		||||
#ifdef CONFIG_MTD_RDC3210_ALLOW_JFFS2
 | 
			
		||||
		if (*(__u32 *)(((unsigned char *)ptmp)+tmp3) == SQUASHFS_MAGIC)
 | 
			
		||||
		{
 | 
			
		||||
			len = 1;
 | 
			
		||||
			tmp4 = tmp3;
 | 
			
		||||
			tmp = hdr->imagesz;
 | 
			
		||||
		rdc3210_parts[2].name   = "rootfs_data";
 | 
			
		||||
		rdc3210_parts[2].offset = rdc3210_parts[0].offset + (((tmp / tmp2) + ((tmp % tmp2) ? 1 : 0)) * tmp2);
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
#else
 | 
			
		||||
			tmp4 = tmp3;
 | 
			
		||||
#endif
 | 
			
		||||
		{
 | 
			
		||||
			len = 0;
 | 
			
		||||
		tmp -= rdc3210_parts[2].size;
 | 
			
		||||
		rdc3210_parts[2].offset = tmp - (tmp % tmp2);
 | 
			
		||||
		}
 | 
			
		||||
		rdc3210_parts[2].size   = rdc3210_parts[3].offset - rdc3210_parts[2].offset;
 | 
			
		||||
		}
 | 
			
		||||
		else if (hdr_type == 2)
 | 
			
		||||
		{
 | 
			
		||||
			len = 0;
 | 
			
		||||
			tmp4 = tmp3;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		/* 4. Adjust Linux (Kernel + ROMFS) */
 | 
			
		||||
		rdc3210_parts[0].size   = rdc3210_parts[len + hdr_type + 1].offset - rdc3210_parts[0].offset;
 | 
			
		||||
 | 
			
		||||
		/* 5. Adjust ROMFS */
 | 
			
		||||
		rdc3210_parts[1].offset = rdc3210_parts[0].offset + tmp4;
 | 
			
		||||
		rdc3210_parts[1].size   = rdc3210_parts[hdr_type + 1].offset - rdc3210_parts[1].offset;
 | 
			
		||||
#ifdef CONFIG_MTD_RDC3210_ALLOW_JFFS2
 | 
			
		||||
		if (!(hdr->reserved || len))
 | 
			
		||||
		{
 | 
			
		||||
			__u8	buf[1024];
 | 
			
		||||
			ptmp->reserved = hdr->imagesz;
 | 
			
		||||
			ptmp->imagesz  = tmp4;
 | 
			
		||||
			ptmp->checksum = ptmp->fastcksum = 0;
 | 
			
		||||
			memcpy(buf, ptmp, 0x100);
 | 
			
		||||
			memcpy(buf + 0x100, ((__u8 *)ptmp) + ((tmp4 >> 1) - ((tmp4 & 0x6) >> 1)), 0x100);
 | 
			
		||||
			memcpy(buf + 0x200, ((__u8 *)ptmp) + (tmp4 - 0x200), 0x200);
 | 
			
		||||
			ptmp->fastcksum = crc32(buf, sizeof(buf));
 | 
			
		||||
			ptmp->checksum = crc32((__u8 *)ptmp, tmp4);
 | 
			
		||||
			if (rdc3210_mtd->unlock) rdc3210_mtd->unlock(rdc3210_mtd, 0, tmp2);
 | 
			
		||||
			if ((len = erase_write(rdc3210_mtd, 0, tmp2, (char *)ptmp)))
 | 
			
		||||
			{
 | 
			
		||||
				vfree(ptmp);
 | 
			
		||||
				iounmap((void *)rdc3210_map.map_priv_1);
 | 
			
		||||
				rdc3210_map.map_priv_1 = 0L;
 | 
			
		||||
				rdc3210_map.virt = NULL;
 | 
			
		||||
				printk("Couldn't erase! Got %d.\n", len);
 | 
			
		||||
				return len;
 | 
			
		||||
			}
 | 
			
		||||
			if (rdc3210_mtd->sync) rdc3210_mtd->sync(rdc3210_mtd);
 | 
			
		||||
		}
 | 
			
		||||
		vfree(ptmp);
 | 
			
		||||
#endif
 | 
			
		||||
		rdc3210_mtd->owner = THIS_MODULE;
 | 
			
		||||
		add_mtd_partitions(rdc3210_mtd, rdc3210_parts, sizeof(rdc3210_parts)/sizeof(rdc3210_parts[0]));
 | 
			
		||||
		return 0;
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
	iounmap((void *)rdc3210_map.map_priv_1);
 | 
			
		||||
	rdc3210_map.map_priv_1 = 0L;
 | 
			
		||||
	rdc3210_map.virt = NULL;
 | 
			
		||||
	return -ENXIO;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void __exit cleanup_rdc3210_map(void)
 | 
			
		||||
{
 | 
			
		||||
	if (rdc3210_mtd) 
 | 
			
		||||
	{
 | 
			
		||||
		del_mtd_partitions(rdc3210_mtd);
 | 
			
		||||
		map_destroy(rdc3210_mtd);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	if (rdc3210_map.map_priv_1) 
 | 
			
		||||
	{
 | 
			
		||||
		iounmap((void *)rdc3210_map.map_priv_1);
 | 
			
		||||
		rdc3210_map.map_priv_1 = 0L;
 | 
			
		||||
		rdc3210_map.virt = NULL;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module_init(init_rdc3210_map);
 | 
			
		||||
module_exit(cleanup_rdc3210_map);
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,6 +0,0 @@
 | 
			
		||||
#ifndef _ASM_I386_GPIO_H
 | 
			
		||||
#define _ASM_I386_GPIO_H
 | 
			
		||||
 | 
			
		||||
#include <gpio.h>
 | 
			
		||||
 | 
			
		||||
#endif /* _ASM_I386_GPIO_H */
 | 
			
		||||
@@ -1,15 +0,0 @@
 | 
			
		||||
#ifndef __ASM_MACH_GENERIC_GPIO_H
 | 
			
		||||
#define __ASM_MACH_GENERIC_GPIO_H
 | 
			
		||||
 | 
			
		||||
int gpio_request(unsigned gpio, const char *label);
 | 
			
		||||
void gpio_free(unsigned gpio);
 | 
			
		||||
int gpio_direction_input(unsigned gpio);
 | 
			
		||||
int gpio_direction_output(unsigned gpio, int value);
 | 
			
		||||
int gpio_get_value(unsigned gpio);
 | 
			
		||||
void gpio_set_value(unsigned gpio, int value);
 | 
			
		||||
int gpio_to_irq(unsigned gpio);
 | 
			
		||||
int irq_to_gpio(unsigned irq);
 | 
			
		||||
 | 
			
		||||
#include <asm-generic/gpio.h>           /* cansleep wrappers */
 | 
			
		||||
 | 
			
		||||
#endif /* __ASM_MACH_GENERIC_GPIO_H */
 | 
			
		||||
@@ -1,56 +0,0 @@
 | 
			
		||||
#ifndef _RDC_GPIO_H
 | 
			
		||||
#define _RDC_GPIO_H
 | 
			
		||||
 | 
			
		||||
extern int rdc_gpio_get_value(unsigned gpio);
 | 
			
		||||
extern void rdc_gpio_set_value(unsigned gpio, int value);
 | 
			
		||||
extern int rdc_gpio_direction_input(unsigned gpio);
 | 
			
		||||
extern int rdc_gpio_direction_output(unsigned gpio, int value);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Wrappers for the arch-neutral GPIO API */
 | 
			
		||||
 | 
			
		||||
static inline int gpio_request(unsigned gpio, const char *label)
 | 
			
		||||
{
 | 
			
		||||
        /* Not yet implemented */
 | 
			
		||||
        return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline void gpio_free(unsigned gpio)
 | 
			
		||||
{
 | 
			
		||||
        /* Not yet implemented */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline int gpio_direction_input(unsigned gpio)
 | 
			
		||||
{
 | 
			
		||||
        return rdc_gpio_direction_input(gpio);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline int gpio_direction_output(unsigned gpio, int value)
 | 
			
		||||
{
 | 
			
		||||
        return rdc_gpio_direction_output(gpio, value);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline int gpio_get_value(unsigned gpio)
 | 
			
		||||
{
 | 
			
		||||
        return rdc_gpio_get_value(gpio);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline void gpio_set_value(unsigned gpio, int value)
 | 
			
		||||
{
 | 
			
		||||
        rdc_gpio_set_value(gpio, value);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline int gpio_to_irq(unsigned gpio)
 | 
			
		||||
{
 | 
			
		||||
        return gpio;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline int irq_to_gpio(unsigned irq)
 | 
			
		||||
{
 | 
			
		||||
        return irq;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* For cansleep */
 | 
			
		||||
#include <asm-generic/gpio.h>
 | 
			
		||||
 | 
			
		||||
#endif /* _RDC_GPIO_H_ */
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
#define PFX	"rdc321x: "
 | 
			
		||||
 | 
			
		||||
/* General purpose configuration and data registers */
 | 
			
		||||
#define RDC3210_CFGREG_ADDR     0x0CF8
 | 
			
		||||
#define RDC3210_CFGREG_DATA     0x0CFC
 | 
			
		||||
#define RDC_MAX_GPIO		0x3A
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
#ifndef _ASM_I386_GPIO_H
 | 
			
		||||
#define _ASM_I386_GPIO_H
 | 
			
		||||
 | 
			
		||||
#include <gpio.h>
 | 
			
		||||
 | 
			
		||||
#endif /* _ASM_I386_GPIO_H */
 | 
			
		||||
@@ -1,15 +0,0 @@
 | 
			
		||||
#ifndef __ASM_MACH_GENERIC_GPIO_H
 | 
			
		||||
#define __ASM_MACH_GENERIC_GPIO_H
 | 
			
		||||
 | 
			
		||||
int gpio_request(unsigned gpio, const char *label);
 | 
			
		||||
void gpio_free(unsigned gpio);
 | 
			
		||||
int gpio_direction_input(unsigned gpio);
 | 
			
		||||
int gpio_direction_output(unsigned gpio, int value);
 | 
			
		||||
int gpio_get_value(unsigned gpio);
 | 
			
		||||
void gpio_set_value(unsigned gpio, int value);
 | 
			
		||||
int gpio_to_irq(unsigned gpio);
 | 
			
		||||
int irq_to_gpio(unsigned irq);
 | 
			
		||||
 | 
			
		||||
#include <asm-generic/gpio.h>           /* cansleep wrappers */
 | 
			
		||||
 | 
			
		||||
#endif /* __ASM_MACH_GENERIC_GPIO_H */
 | 
			
		||||
@@ -1,56 +0,0 @@
 | 
			
		||||
#ifndef _RDC_GPIO_H
 | 
			
		||||
#define _RDC_GPIO_H
 | 
			
		||||
 | 
			
		||||
extern int rdc_gpio_get_value(unsigned gpio);
 | 
			
		||||
extern void rdc_gpio_set_value(unsigned gpio, int value);
 | 
			
		||||
extern int rdc_gpio_direction_input(unsigned gpio);
 | 
			
		||||
extern int rdc_gpio_direction_output(unsigned gpio, int value);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Wrappers for the arch-neutral GPIO API */
 | 
			
		||||
 | 
			
		||||
static inline int gpio_request(unsigned gpio, const char *label)
 | 
			
		||||
{
 | 
			
		||||
        /* Not yet implemented */
 | 
			
		||||
        return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline void gpio_free(unsigned gpio)
 | 
			
		||||
{
 | 
			
		||||
        /* Not yet implemented */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline int gpio_direction_input(unsigned gpio)
 | 
			
		||||
{
 | 
			
		||||
        return rdc_gpio_direction_input(gpio);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline int gpio_direction_output(unsigned gpio, int value)
 | 
			
		||||
{
 | 
			
		||||
        return rdc_gpio_direction_output(gpio, value);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline int gpio_get_value(unsigned gpio)
 | 
			
		||||
{
 | 
			
		||||
        return rdc_gpio_get_value(gpio);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline void gpio_set_value(unsigned gpio, int value)
 | 
			
		||||
{
 | 
			
		||||
        rdc_gpio_set_value(gpio, value);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline int gpio_to_irq(unsigned gpio)
 | 
			
		||||
{
 | 
			
		||||
        return gpio;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline int irq_to_gpio(unsigned irq)
 | 
			
		||||
{
 | 
			
		||||
        return irq;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* For cansleep */
 | 
			
		||||
#include <asm-generic/gpio.h>
 | 
			
		||||
 | 
			
		||||
#endif /* _RDC_GPIO_H_ */
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
#define PFX	"rdc321x: "
 | 
			
		||||
 | 
			
		||||
/* General purpose configuration and data registers */
 | 
			
		||||
#define RDC3210_CFGREG_ADDR     0x0CF8
 | 
			
		||||
#define RDC3210_CFGREG_DATA     0x0CFC
 | 
			
		||||
#define RDC_MAX_GPIO		0x3A
 | 
			
		||||
@@ -1,63 +0,0 @@
 | 
			
		||||
--- a/drivers/mtd/maps/Kconfig
 | 
			
		||||
+++ b/drivers/mtd/maps/Kconfig
 | 
			
		||||
@@ -117,6 +117,50 @@ config MTD_PNC2000
 | 
			
		||||
 	  PNC-2000 is the name of Network Camera product from PHOTRON
 | 
			
		||||
 	  Ltd. in Japan. It uses CFI-compliant flash.
 | 
			
		||||
 
 | 
			
		||||
+config MTD_RDC3210
 | 
			
		||||
+	tristate "CFI Flash device mapped on RDC3210"
 | 
			
		||||
+	depends on X86 && MTD_CFI && MTD_PARTITIONS
 | 
			
		||||
+	help
 | 
			
		||||
+	  RDC-3210 is the flash device we find on Ralink reference board.
 | 
			
		||||
+
 | 
			
		||||
+config MTD_RDC3210_STATIC_MAP
 | 
			
		||||
+	bool "Partitions on RDC3210 mapped statically" if MTD_RDC3210
 | 
			
		||||
+	select MTD_RDC3210_FACTORY_PRESENT
 | 
			
		||||
+	help
 | 
			
		||||
+	  The mapping driver will use the static partition map for the
 | 
			
		||||
+	  RDC-3210 flash device.
 | 
			
		||||
+
 | 
			
		||||
+config MTD_RDC3210_FACTORY_PRESENT
 | 
			
		||||
+	bool "Reserve a partition on RDC3210 for factory presets"
 | 
			
		||||
+	depends on MTD_RDC3210
 | 
			
		||||
+	default y
 | 
			
		||||
+	help
 | 
			
		||||
+	  The mapping driver will reserve a partition on the RDC-3210 flash
 | 
			
		||||
+	  device for resetting flash contents to factory defaults.
 | 
			
		||||
+
 | 
			
		||||
+config MTD_RDC3210_ALLOW_JFFS2
 | 
			
		||||
+	bool "JFFS2 filesystem usable in a partition on RDC3210"
 | 
			
		||||
+	depends on MTD_RDC3210 && !MTD_RDC3210_STATIC_MAP
 | 
			
		||||
+	help
 | 
			
		||||
+	  The mapping driver will align a partition on the RDC-3210 flash
 | 
			
		||||
+	  device to an erase-block boundary so that a JFFS2 filesystem may
 | 
			
		||||
+	  reside on it.
 | 
			
		||||
+
 | 
			
		||||
+config MTD_RDC3210_SIZE
 | 
			
		||||
+	hex "Amount of flash memory on RDC3210"
 | 
			
		||||
+	depends on MTD_RDC3210
 | 
			
		||||
+	default "0x400000"
 | 
			
		||||
+	help
 | 
			
		||||
+	  Total size in bytes of the RDC-3210 flash device
 | 
			
		||||
+
 | 
			
		||||
+config MTD_RDC3210_BUSWIDTH
 | 
			
		||||
+	int "Width of CFI Flash device mapped on RDC3210"
 | 
			
		||||
+	depends on MTD_RDC3210
 | 
			
		||||
+	default "2"
 | 
			
		||||
+	help
 | 
			
		||||
+	  Number of bytes addressed on the RDC-3210 flash device before
 | 
			
		||||
+	  addressing the same chip again
 | 
			
		||||
+
 | 
			
		||||
 config MTD_SC520CDP
 | 
			
		||||
 	tristate "CFI Flash device mapped on AMD SC520 CDP"
 | 
			
		||||
 	depends on X86 && MTD_CFI && MTD_CONCAT
 | 
			
		||||
--- a/drivers/mtd/maps/Makefile
 | 
			
		||||
+++ b/drivers/mtd/maps/Makefile
 | 
			
		||||
@@ -30,6 +30,7 @@ obj-$(CONFIG_MTD_PMC_MSP_EVM)   += pmcms
 | 
			
		||||
 obj-$(CONFIG_MTD_PMC_MSP_RAMROOT)+= pmcmsp-ramroot.o
 | 
			
		||||
 obj-$(CONFIG_MTD_PNC2000)	+= pnc2000.o
 | 
			
		||||
 obj-$(CONFIG_MTD_PCMCIA)	+= pcmciamtd.o
 | 
			
		||||
+obj-$(CONFIG_MTD_RDC3210)	+= rdc3210.o
 | 
			
		||||
 obj-$(CONFIG_MTD_RPXLITE)	+= rpxlite.o
 | 
			
		||||
 obj-$(CONFIG_MTD_TQM8XXL)	+= tqm8xxl.o
 | 
			
		||||
 obj-$(CONFIG_MTD_SA1100)	+= sa1100-flash.o
 | 
			
		||||
@@ -1,13 +0,0 @@
 | 
			
		||||
--- a/arch/x86/Kconfig
 | 
			
		||||
+++ b/arch/x86/Kconfig
 | 
			
		||||
@@ -81,6 +81,10 @@ config GENERIC_BUG
 | 
			
		||||
 	default y
 | 
			
		||||
 	depends on BUG
 | 
			
		||||
 
 | 
			
		||||
+config GENERIC_GPIO
 | 
			
		||||
+       bool
 | 
			
		||||
+       default n
 | 
			
		||||
+
 | 
			
		||||
 config GENERIC_HWEIGHT
 | 
			
		||||
 	bool
 | 
			
		||||
 	default y
 | 
			
		||||
@@ -1,37 +0,0 @@
 | 
			
		||||
--- a/drivers/net/Kconfig
 | 
			
		||||
+++ b/drivers/net/Kconfig
 | 
			
		||||
@@ -1449,6 +1449,24 @@ config APRICOT
 | 
			
		||||
 	  To compile this driver as a module, choose M here. The module
 | 
			
		||||
 	  will be called apricot.
 | 
			
		||||
 
 | 
			
		||||
+config R6040
 | 
			
		||||
+	tristate "RDC Fast-Ethernet support (EXPERIMENTAL)"
 | 
			
		||||
+	depends on NET_PCI && EXPERIMENTAL
 | 
			
		||||
+	select MII
 | 
			
		||||
+	help
 | 
			
		||||
+	  If you have a network (Ethernet) controller of this type, say Y and
 | 
			
		||||
+	  read the Ethernet-HOWTO, available from
 | 
			
		||||
+          <http://www.tldp.org/docs.html#howto>.
 | 
			
		||||
+
 | 
			
		||||
+          To compile this driver as a module, choose M here and read
 | 
			
		||||
+          <file:Documentation/networking/net-modules.txt>.  The module will be
 | 
			
		||||
+          called r6040.
 | 
			
		||||
+
 | 
			
		||||
+
 | 
			
		||||
+config R6040_NAPI
 | 
			
		||||
+	bool "NAPI support for R6040"
 | 
			
		||||
+	depends on R6040
 | 
			
		||||
+	default y
 | 
			
		||||
 config B44
 | 
			
		||||
 	tristate "Broadcom 440x/47xx ethernet support"
 | 
			
		||||
 	depends on SSB_POSSIBLE
 | 
			
		||||
--- a/drivers/net/Makefile
 | 
			
		||||
+++ b/drivers/net/Makefile
 | 
			
		||||
@@ -116,6 +116,7 @@ obj-$(CONFIG_LNE390) += lne390.o 8390.o
 | 
			
		||||
 obj-$(CONFIG_NE3210) += ne3210.o 8390.o
 | 
			
		||||
 obj-$(CONFIG_SB1250_MAC) += sb1250-mac.o
 | 
			
		||||
 obj-$(CONFIG_B44) += b44.o
 | 
			
		||||
+obj-$(CONFIG_R6040) += r6040.o
 | 
			
		||||
 obj-$(CONFIG_FORCEDETH) += forcedeth.o
 | 
			
		||||
 obj-$(CONFIG_NE_H8300) += ne-h8300.o
 | 
			
		||||
 obj-$(CONFIG_AX88796) += ax88796.o
 | 
			
		||||
@@ -1,11 +0,0 @@
 | 
			
		||||
--- a/init/do_mounts.c
 | 
			
		||||
+++ b/init/do_mounts.c
 | 
			
		||||
@@ -256,6 +256,8 @@ static void __init get_fs_names(char *pa
 | 
			
		||||
 {
 | 
			
		||||
 	char *s = page;
 | 
			
		||||
 
 | 
			
		||||
+	if (!root_fs_names)
 | 
			
		||||
+		root_fs_names = "squashfs,jffs2";
 | 
			
		||||
 	if (root_fs_names) {
 | 
			
		||||
 		strcpy(page, root_fs_names);
 | 
			
		||||
 		while (*s++) {
 | 
			
		||||
@@ -1,73 +0,0 @@
 | 
			
		||||
--- a/arch/x86/Kconfig
 | 
			
		||||
+++ b/arch/x86/Kconfig
 | 
			
		||||
@@ -304,6 +304,17 @@ config X86_VSMP
 | 
			
		||||
 	  supposed to run on these EM64T-based machines.  Only choose this option
 | 
			
		||||
 	  if you have one of these machines.
 | 
			
		||||
 
 | 
			
		||||
+config X86_RDC
 | 
			
		||||
+	bool "Support for RDC 3211 boards"
 | 
			
		||||
+	select GENERIC_GPIO
 | 
			
		||||
+	select LEDS_GPIO
 | 
			
		||||
+	select LEDS_CLASS
 | 
			
		||||
+	help
 | 
			
		||||
+          Support for RDC 3211 systems. Say 'Y' here if the kernel is
 | 
			
		||||
+          supposed to run on an IA-32 RDC R3211 system.
 | 
			
		||||
+          Only choose this option if you have such as system, otherwise you
 | 
			
		||||
+          should say N here.
 | 
			
		||||
+
 | 
			
		||||
 endchoice
 | 
			
		||||
 
 | 
			
		||||
 config SCHED_NO_NO_OMIT_FRAME_POINTER
 | 
			
		||||
--- a/arch/x86/kernel/reboot_fixups_32.c
 | 
			
		||||
+++ b/arch/x86/kernel/reboot_fixups_32.c
 | 
			
		||||
@@ -30,6 +30,17 @@ static void cs5536_warm_reset(struct pci
 | 
			
		||||
 	udelay(50); /* shouldn't get here but be safe and spin a while */
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
+static void r8610_reset(struct pci_dev *dev)
 | 
			
		||||
+{
 | 
			
		||||
+       int i;
 | 
			
		||||
+
 | 
			
		||||
+       outl(0x80003840,0xCF8);
 | 
			
		||||
+       i=inl(0xCFC);
 | 
			
		||||
+       i |= 0x1600;
 | 
			
		||||
+       outl(i,0xCFC);
 | 
			
		||||
+       outb(1,0x92);
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
 struct device_fixup {
 | 
			
		||||
 	unsigned int vendor;
 | 
			
		||||
 	unsigned int device;
 | 
			
		||||
@@ -40,6 +51,7 @@ static struct device_fixup fixups_table[
 | 
			
		||||
 { PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_LEGACY, cs5530a_warm_reset },
 | 
			
		||||
 { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_ISA, cs5536_warm_reset },
 | 
			
		||||
 { PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_SC1100_BRIDGE, cs5530a_warm_reset },
 | 
			
		||||
+{ PCI_VENDOR_ID_RDC, PCI_DEVICE_ID_RDC_R6030, r8610_reset },
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
 /*
 | 
			
		||||
--- a/arch/x86/Makefile_32
 | 
			
		||||
+++ b/arch/x86/Makefile_32
 | 
			
		||||
@@ -99,6 +99,11 @@ mflags-$(CONFIG_X86_ES7000)	:= -Iinclude
 | 
			
		||||
 mcore-$(CONFIG_X86_ES7000)	:= arch/x86/mach-default
 | 
			
		||||
 core-$(CONFIG_X86_ES7000)	:= arch/x86/mach-es7000/
 | 
			
		||||
 
 | 
			
		||||
+# RDC subarch support
 | 
			
		||||
+mflags-$(CONFIG_X86_RDC)       := -Iinclude/asm-x86/mach-rdc
 | 
			
		||||
+mcore-$(CONFIG_X86_RDC)        := arch/x86/mach-default
 | 
			
		||||
+core-$(CONFIG_X86_RDC)         += arch/x86/mach-rdc/
 | 
			
		||||
+
 | 
			
		||||
 # Xen paravirtualization support
 | 
			
		||||
 core-$(CONFIG_XEN)		+= arch/x86/xen/
 | 
			
		||||
 
 | 
			
		||||
--- a/include/asm-x86/timex.h
 | 
			
		||||
+++ b/include/asm-x86/timex.h
 | 
			
		||||
@@ -7,6 +7,8 @@
 | 
			
		||||
 
 | 
			
		||||
 #ifdef CONFIG_X86_ELAN
 | 
			
		||||
 #  define PIT_TICK_RATE 1189200 /* AMD Elan has different frequency! */
 | 
			
		||||
+#elif defined(CONFIG_X86_RDC)
 | 
			
		||||
+#  define PIT_TICK_RATE 1041667 /* Underlying HZ for R8610 */
 | 
			
		||||
 #else
 | 
			
		||||
 #  define PIT_TICK_RATE 1193182 /* Underlying HZ */
 | 
			
		||||
 #endif
 | 
			
		||||
@@ -1,20 +0,0 @@
 | 
			
		||||
--- a/drivers/pcmcia/yenta_socket.c
 | 
			
		||||
+++ b/drivers/pcmcia/yenta_socket.c
 | 
			
		||||
@@ -1171,6 +1171,17 @@ static int __devinit yenta_probe (struct
 | 
			
		||||
 
 | 
			
		||||
 	/* We must finish initialization here */
 | 
			
		||||
 
 | 
			
		||||
+#ifdef CONFIG_X86_RDC
 | 
			
		||||
+/* #define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0044f044 */
 | 
			
		||||
+#define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0844b060
 | 
			
		||||
+/* #define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0044d044 */
 | 
			
		||||
+
 | 
			
		||||
+	config_writel(socket, 32*4, YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK);
 | 
			
		||||
+	config_writel(socket, 35*4, 0x00000022);
 | 
			
		||||
+	config_writel(socket, 36*4, 0x60200000);
 | 
			
		||||
+	config_writel(socket, 40*4, 0x7e020000);
 | 
			
		||||
+#endif
 | 
			
		||||
+
 | 
			
		||||
 	if (!socket->cb_irq || request_irq(socket->cb_irq, yenta_interrupt, IRQF_SHARED, "yenta", socket)) {
 | 
			
		||||
 		/* No IRQ or request_irq failed. Poll */
 | 
			
		||||
 		socket->cb_irq = 0; /* But zero is a valid IRQ number. */
 | 
			
		||||
@@ -1,10 +0,0 @@
 | 
			
		||||
--- a/arch/x86/kernel/setup_32.c
 | 
			
		||||
+++ b/arch/x86/kernel/setup_32.c
 | 
			
		||||
@@ -609,6 +609,7 @@ void __init setup_arch(char **cmdline_p)
 | 
			
		||||
 		print_memory_map("user");
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
+	strcat(boot_command_line, " init=/etc/preinit console=ttyS0,38400");
 | 
			
		||||
 	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
 | 
			
		||||
 	*cmdline_p = command_line;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,40 +0,0 @@
 | 
			
		||||
--- a/arch/x86/boot/boot.h
 | 
			
		||||
+++ b/arch/x86/boot/boot.h
 | 
			
		||||
@@ -60,7 +60,7 @@ static inline void outl(u32 v, u16 port)
 | 
			
		||||
 {
 | 
			
		||||
 	asm volatile("outl %0,%1" : : "a" (v), "dN" (port));
 | 
			
		||||
 }
 | 
			
		||||
-static inline u32 inl(u32 port)
 | 
			
		||||
+static inline u32 inl(u16 port)
 | 
			
		||||
 {
 | 
			
		||||
 	u32 v;
 | 
			
		||||
 	asm volatile("inl %1,%0" : "=a" (v) : "dN" (port));
 | 
			
		||||
--- a/arch/x86/boot/pm.c
 | 
			
		||||
+++ b/arch/x86/boot/pm.c
 | 
			
		||||
@@ -16,6 +16,9 @@
 | 
			
		||||
 
 | 
			
		||||
 #include "boot.h"
 | 
			
		||||
 #include <asm/segment.h>
 | 
			
		||||
+#ifdef CONFIG_X86_RDC
 | 
			
		||||
+#include <asm/mach-rdc/rdc321x_defs.h>
 | 
			
		||||
+#endif
 | 
			
		||||
 
 | 
			
		||||
 /*
 | 
			
		||||
  * Invoke the realmode switch hook if present; otherwise
 | 
			
		||||
@@ -160,6 +163,16 @@ void go_to_protected_mode(void)
 | 
			
		||||
 		die();
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
+#ifdef CONFIG_X86_RDC
 | 
			
		||||
+	{
 | 
			
		||||
+		u32 bootctl;
 | 
			
		||||
+
 | 
			
		||||
+		outl(0x80003840, RDC3210_CFGREG_ADDR);
 | 
			
		||||
+		bootctl = inl(RDC3210_CFGREG_DATA) | 0x07ff0000;
 | 
			
		||||
+		outl(bootctl, RDC3210_CFGREG_DATA);
 | 
			
		||||
+	}
 | 
			
		||||
+#endif
 | 
			
		||||
+
 | 
			
		||||
 	/* Reset coprocessor (IGNNE#) */
 | 
			
		||||
 	reset_coprocessor();
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +0,0 @@
 | 
			
		||||
--- a/include/linux/pci_ids.h
 | 
			
		||||
+++ b/include/linux/pci_ids.h
 | 
			
		||||
@@ -2106,6 +2106,13 @@
 | 
			
		||||
 #define PCI_DEVICE_ID_HERC_WIN		0x5732
 | 
			
		||||
 #define PCI_DEVICE_ID_HERC_UNI		0x5832
 | 
			
		||||
 
 | 
			
		||||
+#define PCI_VENDOR_ID_RDC		0x17f3
 | 
			
		||||
+#define PCI_DEVICE_ID_RDC_R6020		0x6020
 | 
			
		||||
+#define PCI_DEVICE_ID_RDC_R6030		0x6030
 | 
			
		||||
+#define PCI_DEVICE_ID_RDC_R6040		0x6040
 | 
			
		||||
+#define PCI_DEVICE_ID_RDC_R6060		0x6060
 | 
			
		||||
+#define PCI_DEVICE_ID_RDC_R6061		0x6061
 | 
			
		||||
+
 | 
			
		||||
 #define PCI_VENDOR_ID_SITECOM		0x182d
 | 
			
		||||
 #define PCI_DEVICE_ID_SITECOM_DC105V2	0x3069
 | 
			
		||||
 
 | 
			
		||||
@@ -1,62 +0,0 @@
 | 
			
		||||
--- a/scripts/Makefile.lib
 | 
			
		||||
+++ b/scripts/Makefile.lib
 | 
			
		||||
@@ -166,4 +166,9 @@ cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS)
 | 
			
		||||
 quiet_cmd_gzip = GZIP    $@
 | 
			
		||||
 cmd_gzip = gzip -f -9 < $< > $@
 | 
			
		||||
 
 | 
			
		||||
-
 | 
			
		||||
+# LZMA
 | 
			
		||||
+#
 | 
			
		||||
+quiet_cmd_lzma = LZMA $@
 | 
			
		||||
+cmd_lzma = bash -e scripts/lzma_kern $< $@ -lc7 -lp0 -pb0
 | 
			
		||||
+# to use lzmacomp,
 | 
			
		||||
+# cmd_lzma = lzmacomp $< 700 > $@
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ b/scripts/lzma_kern
 | 
			
		||||
@@ -0,0 +1,4 @@
 | 
			
		||||
+get-size() { echo "$5" ;}
 | 
			
		||||
+printf -v len '%.8x' "$(get-size $(ls -l "$1"))"
 | 
			
		||||
+lzma e "$@"
 | 
			
		||||
+echo -ne "\x$(echo $len | cut -c 7,8)\x$(echo $len | cut -c 5,6)\x$(echo $len | cut -c 3,4)\x$(echo $len | cut -c 1,2)" >> "$2"
 | 
			
		||||
--- a/arch/x86/boot/compressed/Makefile_32
 | 
			
		||||
+++ b/arch/x86/boot/compressed/Makefile_32
 | 
			
		||||
@@ -4,8 +4,8 @@
 | 
			
		||||
 # create a compressed vmlinux image from the original vmlinux
 | 
			
		||||
 #
 | 
			
		||||
 
 | 
			
		||||
-targets		:= vmlinux vmlinux.bin vmlinux.bin.gz head_32.o misc_32.o piggy.o \
 | 
			
		||||
-			vmlinux.bin.all vmlinux.relocs
 | 
			
		||||
+targets		:= vmlinux vmlinux.bin vmlinux.bin.lzma head_32.o piggy.o \
 | 
			
		||||
+			vmlinux.bin.all vmlinux.relocs lzma_misc.o
 | 
			
		||||
 EXTRA_AFLAGS	:= -traditional
 | 
			
		||||
 
 | 
			
		||||
 LDFLAGS_vmlinux := -T
 | 
			
		||||
@@ -17,7 +17,7 @@ KBUILD_CFLAGS  := -m32 -D__KERNEL__ $(LI
 | 
			
		||||
 	   $(call cc-option,-fno-stack-protector)
 | 
			
		||||
 LDFLAGS := -m elf_i386
 | 
			
		||||
 
 | 
			
		||||
-$(obj)/vmlinux: $(src)/vmlinux_32.lds $(obj)/head_32.o $(obj)/misc_32.o $(obj)/piggy.o FORCE
 | 
			
		||||
+$(obj)/vmlinux: $(src)/vmlinux_32.lds $(obj)/head_32.o $(obj)/lzma_misc.o $(obj)/piggy.o FORCE
 | 
			
		||||
 	$(call if_changed,ld)
 | 
			
		||||
 	@:
 | 
			
		||||
 
 | 
			
		||||
@@ -37,14 +37,14 @@ $(obj)/vmlinux.bin.all: $(vmlinux.bin.al
 | 
			
		||||
 	$(call if_changed,relocbin)
 | 
			
		||||
 
 | 
			
		||||
 ifdef CONFIG_RELOCATABLE
 | 
			
		||||
-$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin.all FORCE
 | 
			
		||||
-	$(call if_changed,gzip)
 | 
			
		||||
+$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin.all FORCE
 | 
			
		||||
+	$(call if_changed,lzma)
 | 
			
		||||
 else
 | 
			
		||||
-$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE
 | 
			
		||||
-	$(call if_changed,gzip)
 | 
			
		||||
+$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE
 | 
			
		||||
+	$(call if_changed,lzma)
 | 
			
		||||
 endif
 | 
			
		||||
 
 | 
			
		||||
 LDFLAGS_piggy.o := -r --format binary --oformat elf32-i386 -T
 | 
			
		||||
 
 | 
			
		||||
-$(obj)/piggy.o: $(src)/vmlinux_32.scr $(obj)/vmlinux.bin.gz FORCE
 | 
			
		||||
+$(obj)/piggy.o: $(src)/vmlinux_32.scr $(obj)/vmlinux.bin.lzma FORCE
 | 
			
		||||
 	$(call if_changed,ld)
 | 
			
		||||
@@ -1,63 +0,0 @@
 | 
			
		||||
--- a/drivers/mtd/maps/Kconfig
 | 
			
		||||
+++ b/drivers/mtd/maps/Kconfig
 | 
			
		||||
@@ -110,6 +110,50 @@
 | 
			
		||||
 	  Sun Microsystems boardsets.  This driver will require CFI support
 | 
			
		||||
 	  in the kernel, so if you did not enable CFI previously, do that now.
 | 
			
		||||
 
 | 
			
		||||
+config MTD_RDC3210
 | 
			
		||||
+	tristate "CFI Flash device mapped on RDC3210"
 | 
			
		||||
+	depends on X86 && MTD_CFI && MTD_PARTITIONS
 | 
			
		||||
+	help
 | 
			
		||||
+	  RDC-3210 is the flash device we find on Ralink reference board.
 | 
			
		||||
+
 | 
			
		||||
+config MTD_RDC3210_STATIC_MAP
 | 
			
		||||
+	bool "Partitions on RDC3210 mapped statically" if MTD_RDC3210
 | 
			
		||||
+	select MTD_RDC3210_FACTORY_PRESENT
 | 
			
		||||
+	help
 | 
			
		||||
+	  The mapping driver will use the static partition map for the
 | 
			
		||||
+	  RDC-3210 flash device.
 | 
			
		||||
+
 | 
			
		||||
+config MTD_RDC3210_FACTORY_PRESENT
 | 
			
		||||
+	bool "Reserve a partition on RDC3210 for factory presets"
 | 
			
		||||
+	depends on MTD_RDC3210
 | 
			
		||||
+	default y
 | 
			
		||||
+	help
 | 
			
		||||
+	  The mapping driver will reserve a partition on the RDC-3210 flash
 | 
			
		||||
+	  device for resetting flash contents to factory defaults.
 | 
			
		||||
+
 | 
			
		||||
+config MTD_RDC3210_ALLOW_JFFS2
 | 
			
		||||
+	bool "JFFS2 filesystem usable in a partition on RDC3210"
 | 
			
		||||
+	depends on MTD_RDC3210 && !MTD_RDC3210_STATIC_MAP
 | 
			
		||||
+	help
 | 
			
		||||
+	  The mapping driver will align a partition on the RDC-3210 flash
 | 
			
		||||
+	  device to an erase-block boundary so that a JFFS2 filesystem may
 | 
			
		||||
+	  reside on it.
 | 
			
		||||
+
 | 
			
		||||
+config MTD_RDC3210_SIZE
 | 
			
		||||
+	hex "Amount of flash memory on RDC3210"
 | 
			
		||||
+	depends on MTD_RDC3210
 | 
			
		||||
+	default "0x400000"
 | 
			
		||||
+	help
 | 
			
		||||
+	  Total size in bytes of the RDC-3210 flash device
 | 
			
		||||
+
 | 
			
		||||
+config MTD_RDC3210_BUSWIDTH
 | 
			
		||||
+	int "Width of CFI Flash device mapped on RDC3210"
 | 
			
		||||
+	depends on MTD_RDC3210
 | 
			
		||||
+	default "2"
 | 
			
		||||
+	help
 | 
			
		||||
+	  Number of bytes addressed on the RDC-3210 flash device before
 | 
			
		||||
+	  addressing the same chip again
 | 
			
		||||
+
 | 
			
		||||
 config MTD_SC520CDP
 | 
			
		||||
 	tristate "CFI Flash device mapped on AMD SC520 CDP"
 | 
			
		||||
 	depends on X86 && MTD_CFI && MTD_CONCAT
 | 
			
		||||
--- a/drivers/mtd/maps/Makefile
 | 
			
		||||
+++ b/drivers/mtd/maps/Makefile
 | 
			
		||||
@@ -29,6 +29,7 @@
 | 
			
		||||
 obj-$(CONFIG_MTD_PMC_MSP_EVM)   += pmcmsp-flash.o
 | 
			
		||||
 obj-$(CONFIG_MTD_PMC_MSP_RAMROOT)+= pmcmsp-ramroot.o
 | 
			
		||||
 obj-$(CONFIG_MTD_PCMCIA)	+= pcmciamtd.o
 | 
			
		||||
+obj-$(CONFIG_MTD_RDC3210)	+= rdc3210.o
 | 
			
		||||
 obj-$(CONFIG_MTD_RPXLITE)	+= rpxlite.o
 | 
			
		||||
 obj-$(CONFIG_MTD_TQM8XXL)	+= tqm8xxl.o
 | 
			
		||||
 obj-$(CONFIG_MTD_SA1100)	+= sa1100-flash.o
 | 
			
		||||
@@ -1,11 +0,0 @@
 | 
			
		||||
--- a/init/do_mounts.c
 | 
			
		||||
+++ b/init/do_mounts.c
 | 
			
		||||
@@ -163,6 +163,8 @@
 | 
			
		||||
 {
 | 
			
		||||
 	char *s = page;
 | 
			
		||||
 
 | 
			
		||||
+	if (!root_fs_names)
 | 
			
		||||
+		root_fs_names = "squashfs,jffs2";
 | 
			
		||||
 	if (root_fs_names) {
 | 
			
		||||
 		strcpy(page, root_fs_names);
 | 
			
		||||
 		while (*s++) {
 | 
			
		||||
@@ -1,20 +0,0 @@
 | 
			
		||||
--- linux-2.6.24.7.orig/drivers/pcmcia/yenta_socket.c	2008-10-26 08:30:07.000000000 -0700
 | 
			
		||||
+++ linux-2.6.24.7/drivers/pcmcia/yenta_socket.c	2008-10-26 08:54:27.000000000 -0700
 | 
			
		||||
@@ -1171,6 +1171,17 @@
 | 
			
		||||
 
 | 
			
		||||
 	/* We must finish initialization here */
 | 
			
		||||
 
 | 
			
		||||
+#ifdef CONFIG_X86_RDC
 | 
			
		||||
+/* #define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0044f044 */
 | 
			
		||||
+#define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0844b060
 | 
			
		||||
+/* #define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0044d044 */
 | 
			
		||||
+
 | 
			
		||||
+	config_writel(socket, 32*4, YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK);
 | 
			
		||||
+	config_writel(socket, 35*4, 0x00000022);
 | 
			
		||||
+	config_writel(socket, 36*4, 0x60200000);
 | 
			
		||||
+	config_writel(socket, 40*4, 0x7e020000);
 | 
			
		||||
+#endif
 | 
			
		||||
+
 | 
			
		||||
 	if (!socket->cb_irq || request_irq(socket->cb_irq, yenta_interrupt, IRQF_SHARED, "yenta", socket)) {
 | 
			
		||||
 		/* No IRQ or request_irq failed. Poll */
 | 
			
		||||
 		socket->cb_irq = 0; /* But zero is a valid IRQ number. */
 | 
			
		||||
@@ -1,42 +0,0 @@
 | 
			
		||||
diff -ru linux-2.6.24.7.orig/arch/x86/boot/boot.h linux-2.6.24.7/arch/x86/boot/boot.h
 | 
			
		||||
--- linux-2.6.24.7.orig/arch/x86/boot/boot.h	2008-10-26 20:18:14.000000000 -0700
 | 
			
		||||
+++ linux-2.6.24.7/arch/x86/boot/boot.h	2008-10-26 20:18:36.000000000 -0700
 | 
			
		||||
@@ -60,7 +60,7 @@
 | 
			
		||||
 {
 | 
			
		||||
 	asm volatile("outl %0,%1" : : "a" (v), "dN" (port));
 | 
			
		||||
 }
 | 
			
		||||
-static inline u32 inl(u32 port)
 | 
			
		||||
+static inline u32 inl(u16 port)
 | 
			
		||||
 {
 | 
			
		||||
 	u32 v;
 | 
			
		||||
 	asm volatile("inl %1,%0" : "=a" (v) : "dN" (port));
 | 
			
		||||
diff -ru linux-2.6.24.7.orig/arch/x86/boot/pm.c linux-2.6.24.7/arch/x86/boot/pm.c
 | 
			
		||||
--- linux-2.6.24.7.orig/arch/x86/boot/pm.c	2008-10-26 19:55:50.000000000 -0700
 | 
			
		||||
+++ linux-2.6.24.7/arch/x86/boot/pm.c	2008-10-26 21:38:12.000000000 -0700
 | 
			
		||||
@@ -16,6 +16,9 @@
 | 
			
		||||
 
 | 
			
		||||
 #include "boot.h"
 | 
			
		||||
 #include <asm/segment.h>
 | 
			
		||||
+#ifdef CONFIG_X86_RDC
 | 
			
		||||
+#include <asm/mach-rdc/rdc321x_defs.h>
 | 
			
		||||
+#endif
 | 
			
		||||
 
 | 
			
		||||
 /*
 | 
			
		||||
  * Invoke the realmode switch hook if present; otherwise
 | 
			
		||||
@@ -160,6 +163,16 @@
 | 
			
		||||
 		die();
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
+#ifdef CONFIG_X86_RDC
 | 
			
		||||
+	{
 | 
			
		||||
+		u32 bootctl;
 | 
			
		||||
+
 | 
			
		||||
+		outl(0x80003840, RDC3210_CFGREG_ADDR);
 | 
			
		||||
+		bootctl = inl(RDC3210_CFGREG_DATA) | 0x07ff0000;
 | 
			
		||||
+		outl(bootctl, RDC3210_CFGREG_DATA);
 | 
			
		||||
+	}
 | 
			
		||||
+#endif
 | 
			
		||||
+
 | 
			
		||||
 	/* Reset coprocessor (IGNNE#) */
 | 
			
		||||
 	reset_coprocessor();
 | 
			
		||||
 
 | 
			
		||||
@@ -1,63 +0,0 @@
 | 
			
		||||
--- a/scripts/Makefile.lib
 | 
			
		||||
+++ b/scripts/Makefile.lib
 | 
			
		||||
@@ -172,4 +172,9 @@
 | 
			
		||||
 quiet_cmd_gzip = GZIP    $@
 | 
			
		||||
 cmd_gzip = gzip -f -9 < $< > $@
 | 
			
		||||
 
 | 
			
		||||
-
 | 
			
		||||
+# LZMA
 | 
			
		||||
+#
 | 
			
		||||
+quiet_cmd_lzma = LZMA $@
 | 
			
		||||
+cmd_lzma = bash -e scripts/lzma_kern $< $@ -lc7 -lp0 -pb0
 | 
			
		||||
+# to use lzmacomp,
 | 
			
		||||
+# cmd_lzma = lzmacomp $< 700 > $@
 | 
			
		||||
--- /dev/null
 | 
			
		||||
+++ b/scripts/lzma_kern
 | 
			
		||||
@@ -0,0 +1,4 @@
 | 
			
		||||
+get-size() { echo "$5" ;}
 | 
			
		||||
+printf -v len '%.8x' "$(get-size $(ls -l "$1"))"
 | 
			
		||||
+lzma e "$@"
 | 
			
		||||
+echo -ne "\x$(echo $len | cut -c 7,8)\x$(echo $len | cut -c 5,6)\x$(echo $len | cut -c 3,4)\x$(echo $len | cut -c 1,2)" >> "$2"
 | 
			
		||||
--- a/arch/x86/boot/compressed/Makefile
 | 
			
		||||
+++ b/arch/x86/boot/compressed/Makefile
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
 # create a compressed vmlinux image from the original vmlinux
 | 
			
		||||
 #
 | 
			
		||||
 
 | 
			
		||||
-targets := vmlinux vmlinux.bin vmlinux.bin.gz head_$(BITS).o misc.o piggy.o
 | 
			
		||||
+targets := vmlinux vmlinux.bin vmlinux.bin.lzma head_$(BITS).o lzma_misc.o piggy.o
 | 
			
		||||
 
 | 
			
		||||
 KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2
 | 
			
		||||
 KBUILD_CFLAGS += -fno-strict-aliasing -fPIC
 | 
			
		||||
@@ -18,7 +18,7 @@
 | 
			
		||||
 LDFLAGS := -m elf_$(UTS_MACHINE)
 | 
			
		||||
 LDFLAGS_vmlinux := -T
 | 
			
		||||
 
 | 
			
		||||
-$(obj)/vmlinux: $(src)/vmlinux_$(BITS).lds $(obj)/head_$(BITS).o $(obj)/misc.o $(obj)/piggy.o FORCE
 | 
			
		||||
+$(obj)/vmlinux: $(src)/vmlinux_$(BITS).lds $(obj)/head_$(BITS).o $(obj)/lzma_misc.o $(obj)/piggy.o FORCE
 | 
			
		||||
 	$(call if_changed,ld)
 | 
			
		||||
 	@:
 | 
			
		||||
 
 | 
			
		||||
@@ -44,11 +44,11 @@
 | 
			
		||||
 	$(call if_changed,relocbin)
 | 
			
		||||
 
 | 
			
		||||
 ifdef CONFIG_RELOCATABLE
 | 
			
		||||
-$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin.all FORCE
 | 
			
		||||
-	$(call if_changed,gzip)
 | 
			
		||||
+$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin.all FORCE
 | 
			
		||||
+	$(call if_changed,lzma)
 | 
			
		||||
 else
 | 
			
		||||
-$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE
 | 
			
		||||
-	$(call if_changed,gzip)
 | 
			
		||||
+$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE
 | 
			
		||||
+	$(call if_changed,lzma)
 | 
			
		||||
 endif
 | 
			
		||||
 LDFLAGS_piggy.o := -r --format binary --oformat elf32-i386 -T
 | 
			
		||||
 
 | 
			
		||||
@@ -60,5 +60,5 @@
 | 
			
		||||
 endif
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
-$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.gz FORCE
 | 
			
		||||
+$(obj)/piggy.o: $(obj)/vmlinux.scr $(obj)/vmlinux.bin.lzma FORCE
 | 
			
		||||
 	$(call if_changed,ld)
 | 
			
		||||
@@ -1,63 +0,0 @@
 | 
			
		||||
--- a/drivers/mtd/maps/Kconfig
 | 
			
		||||
+++ b/drivers/mtd/maps/Kconfig
 | 
			
		||||
@@ -110,6 +110,50 @@
 | 
			
		||||
 	  Sun Microsystems boardsets.  This driver will require CFI support
 | 
			
		||||
 	  in the kernel, so if you did not enable CFI previously, do that now.
 | 
			
		||||
 
 | 
			
		||||
+config MTD_RDC3210
 | 
			
		||||
+	tristate "CFI Flash device mapped on RDC3210"
 | 
			
		||||
+	depends on X86 && MTD_CFI && MTD_PARTITIONS
 | 
			
		||||
+	help
 | 
			
		||||
+	  RDC-3210 is the flash device we find on Ralink reference board.
 | 
			
		||||
+
 | 
			
		||||
+config MTD_RDC3210_STATIC_MAP
 | 
			
		||||
+	bool "Partitions on RDC3210 mapped statically" if MTD_RDC3210
 | 
			
		||||
+	select MTD_RDC3210_FACTORY_PRESENT
 | 
			
		||||
+	help
 | 
			
		||||
+	  The mapping driver will use the static partition map for the
 | 
			
		||||
+	  RDC-3210 flash device.
 | 
			
		||||
+
 | 
			
		||||
+config MTD_RDC3210_FACTORY_PRESENT
 | 
			
		||||
+	bool "Reserve a partition on RDC3210 for factory presets"
 | 
			
		||||
+	depends on MTD_RDC3210
 | 
			
		||||
+	default y
 | 
			
		||||
+	help
 | 
			
		||||
+	  The mapping driver will reserve a partition on the RDC-3210 flash
 | 
			
		||||
+	  device for resetting flash contents to factory defaults.
 | 
			
		||||
+
 | 
			
		||||
+config MTD_RDC3210_ALLOW_JFFS2
 | 
			
		||||
+	bool "JFFS2 filesystem usable in a partition on RDC3210"
 | 
			
		||||
+	depends on MTD_RDC3210 && !MTD_RDC3210_STATIC_MAP
 | 
			
		||||
+	help
 | 
			
		||||
+	  The mapping driver will align a partition on the RDC-3210 flash
 | 
			
		||||
+	  device to an erase-block boundary so that a JFFS2 filesystem may
 | 
			
		||||
+	  reside on it.
 | 
			
		||||
+
 | 
			
		||||
+config MTD_RDC3210_SIZE
 | 
			
		||||
+	hex "Amount of flash memory on RDC3210"
 | 
			
		||||
+	depends on MTD_RDC3210
 | 
			
		||||
+	default "0x400000"
 | 
			
		||||
+	help
 | 
			
		||||
+	  Total size in bytes of the RDC-3210 flash device
 | 
			
		||||
+
 | 
			
		||||
+config MTD_RDC3210_BUSWIDTH
 | 
			
		||||
+	int "Width of CFI Flash device mapped on RDC3210"
 | 
			
		||||
+	depends on MTD_RDC3210
 | 
			
		||||
+	default "2"
 | 
			
		||||
+	help
 | 
			
		||||
+	  Number of bytes addressed on the RDC-3210 flash device before
 | 
			
		||||
+	  addressing the same chip again
 | 
			
		||||
+
 | 
			
		||||
 config MTD_SC520CDP
 | 
			
		||||
 	tristate "CFI Flash device mapped on AMD SC520 CDP"
 | 
			
		||||
 	depends on X86 && MTD_CFI && MTD_CONCAT
 | 
			
		||||
--- a/drivers/mtd/maps/Makefile
 | 
			
		||||
+++ b/drivers/mtd/maps/Makefile
 | 
			
		||||
@@ -29,6 +29,7 @@
 | 
			
		||||
 obj-$(CONFIG_MTD_PMC_MSP_EVM)   += pmcmsp-flash.o
 | 
			
		||||
 obj-$(CONFIG_MTD_PMC_MSP_RAMROOT)+= pmcmsp-ramroot.o
 | 
			
		||||
 obj-$(CONFIG_MTD_PCMCIA)	+= pcmciamtd.o
 | 
			
		||||
+obj-$(CONFIG_MTD_RDC3210)	+= rdc3210.o
 | 
			
		||||
 obj-$(CONFIG_MTD_RPXLITE)	+= rpxlite.o
 | 
			
		||||
 obj-$(CONFIG_MTD_TQM8XXL)	+= tqm8xxl.o
 | 
			
		||||
 obj-$(CONFIG_MTD_SA1100)	+= sa1100-flash.o
 | 
			
		||||
@@ -1,10 +0,0 @@
 | 
			
		||||
--- a/arch/x86/kernel/setup.c	2009-04-24 11:37:41.000000000 +0200
 | 
			
		||||
+++ b/arch/x86/kernel/setup.c	2009-04-24 11:38:43.000000000 +0200
 | 
			
		||||
@@ -701,6 +701,7 @@
 | 
			
		||||
 	bss_resource.start = virt_to_phys(&__bss_start);
 | 
			
		||||
 	bss_resource.end = virt_to_phys(&__bss_stop)-1;
 | 
			
		||||
 
 | 
			
		||||
+	strcat(boot_command_line, " init=/etc/preinit console=ttyS0,38400");
 | 
			
		||||
 	strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
 | 
			
		||||
 	*cmdline_p = command_line;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +0,0 @@
 | 
			
		||||
--- a/init/do_mounts.c
 | 
			
		||||
+++ b/init/do_mounts.c
 | 
			
		||||
@@ -163,6 +163,8 @@
 | 
			
		||||
 {
 | 
			
		||||
 	char *s = page;
 | 
			
		||||
 
 | 
			
		||||
+	if (!root_fs_names)
 | 
			
		||||
+		root_fs_names = "squashfs,jffs2";
 | 
			
		||||
 	if (root_fs_names) {
 | 
			
		||||
 		strcpy(page, root_fs_names);
 | 
			
		||||
 		while (*s++) {
 | 
			
		||||
@@ -1,20 +0,0 @@
 | 
			
		||||
--- linux-2.6.24.7.orig/drivers/pcmcia/yenta_socket.c	2008-10-26 08:30:07.000000000 -0700
 | 
			
		||||
+++ linux-2.6.24.7/drivers/pcmcia/yenta_socket.c	2008-10-26 08:54:27.000000000 -0700
 | 
			
		||||
@@ -1171,6 +1171,17 @@
 | 
			
		||||
 
 | 
			
		||||
 	/* We must finish initialization here */
 | 
			
		||||
 
 | 
			
		||||
+#ifdef CONFIG_X86_RDC
 | 
			
		||||
+/* #define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0044f044 */
 | 
			
		||||
+#define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0844b060
 | 
			
		||||
+/* #define YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK 0x0044d044 */
 | 
			
		||||
+
 | 
			
		||||
+	config_writel(socket, 32*4, YO_TI1510_DATASHEET_GUY_EXPLAIN_THIS_JUNK);
 | 
			
		||||
+	config_writel(socket, 35*4, 0x00000022);
 | 
			
		||||
+	config_writel(socket, 36*4, 0x60200000);
 | 
			
		||||
+	config_writel(socket, 40*4, 0x7e020000);
 | 
			
		||||
+#endif
 | 
			
		||||
+
 | 
			
		||||
 	if (!socket->cb_irq || request_irq(socket->cb_irq, yenta_interrupt, IRQF_SHARED, "yenta", socket)) {
 | 
			
		||||
 		/* No IRQ or request_irq failed. Poll */
 | 
			
		||||
 		socket->cb_irq = 0; /* But zero is a valid IRQ number. */
 | 
			
		||||
@@ -1,42 +0,0 @@
 | 
			
		||||
diff -ru linux-2.6.24.7.orig/arch/x86/boot/boot.h linux-2.6.24.7/arch/x86/boot/boot.h
 | 
			
		||||
--- linux-2.6.24.7.orig/arch/x86/boot/boot.h	2008-10-26 20:18:14.000000000 -0700
 | 
			
		||||
+++ linux-2.6.24.7/arch/x86/boot/boot.h	2008-10-26 20:18:36.000000000 -0700
 | 
			
		||||
@@ -60,7 +60,7 @@
 | 
			
		||||
 {
 | 
			
		||||
 	asm volatile("outl %0,%1" : : "a" (v), "dN" (port));
 | 
			
		||||
 }
 | 
			
		||||
-static inline u32 inl(u32 port)
 | 
			
		||||
+static inline u32 inl(u16 port)
 | 
			
		||||
 {
 | 
			
		||||
 	u32 v;
 | 
			
		||||
 	asm volatile("inl %1,%0" : "=a" (v) : "dN" (port));
 | 
			
		||||
diff -ru linux-2.6.24.7.orig/arch/x86/boot/pm.c linux-2.6.24.7/arch/x86/boot/pm.c
 | 
			
		||||
--- linux-2.6.24.7.orig/arch/x86/boot/pm.c	2008-10-26 19:55:50.000000000 -0700
 | 
			
		||||
+++ linux-2.6.24.7/arch/x86/boot/pm.c	2008-10-26 21:38:12.000000000 -0700
 | 
			
		||||
@@ -16,6 +16,9 @@
 | 
			
		||||
 
 | 
			
		||||
 #include "boot.h"
 | 
			
		||||
 #include <asm/segment.h>
 | 
			
		||||
+#ifdef CONFIG_X86_RDC
 | 
			
		||||
+#include <asm/mach-rdc/rdc321x_defs.h>
 | 
			
		||||
+#endif
 | 
			
		||||
 
 | 
			
		||||
 /*
 | 
			
		||||
  * Invoke the realmode switch hook if present; otherwise
 | 
			
		||||
@@ -160,6 +163,16 @@
 | 
			
		||||
 		die();
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
+#ifdef CONFIG_X86_RDC
 | 
			
		||||
+	{
 | 
			
		||||
+		u32 bootctl;
 | 
			
		||||
+
 | 
			
		||||
+		outl(0x80003840, RDC3210_CFGREG_ADDR);
 | 
			
		||||
+		bootctl = inl(RDC3210_CFGREG_DATA) | 0x07ff0000;
 | 
			
		||||
+		outl(bootctl, RDC3210_CFGREG_DATA);
 | 
			
		||||
+	}
 | 
			
		||||
+#endif
 | 
			
		||||
+
 | 
			
		||||
 	/* Reset coprocessor (IGNNE#) */
 | 
			
		||||
 	reset_coprocessor();
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user