mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-12-25 15:35:30 +02:00
[rdc] nuke old files
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@15402 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
edc8d2dd34
commit
7cacceb8ca
@ -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
Loading…
Reference in New Issue
Block a user