mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm
* 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm: (130 commits) [ARM] 3856/1: Add clocksource for Intel IXP4xx platforms [ARM] 3855/1: Add generic time support [ARM] 3873/1: S3C24XX: Add irq_chip names [ARM] 3872/1: S3C24XX: Apply consistant tabbing to irq_chips [ARM] 3871/1: S3C24XX: Fix ordering of EINT4..23 [ARM] nommu: confirms the CR_V bit in nommu mode [ARM] nommu: abort handler fixup for !CPU_CP15_MMU cores. [ARM] 3870/1: AT91: Start removing static memory mappings [ARM] 3869/1: AT91: NAND support for DK and KB9202 boards [ARM] 3868/1: AT91 hardware header update [ARM] 3867/1: AT91 GPIO update [ARM] 3866/1: AT91 clock update [ARM] 3865/1: AT91RM9200 header updates [ARM] 3862/2: S3C2410 - add basic power management support for AML M5900 series [ARM] kthread: switch arch/arm/kernel/apm.c [ARM] Off-by-one in arch/arm/common/icst* [ARM] 3864/1: Refactore sharpsl_pm [ARM] 3863/1: Add Locomo SPI Device [ARM] 3847/2: Convert LOMOMO to use struct device for GPIOs [ARM] Use CPU_CACHE_* where possible in asm/cacheflush.h ...
This commit is contained in:
@@ -17,6 +17,10 @@ config ARM
|
||||
Europe. There is an ARM Linux project with a web page at
|
||||
<http://www.arm.linux.org.uk/>.
|
||||
|
||||
config GENERIC_TIME
|
||||
bool
|
||||
default n
|
||||
|
||||
config MMU
|
||||
bool
|
||||
default y
|
||||
@@ -51,6 +55,10 @@ config GENERIC_HARDIRQS
|
||||
bool
|
||||
default y
|
||||
|
||||
config TRACE_IRQFLAGS_SUPPORT
|
||||
bool
|
||||
default y
|
||||
|
||||
config HARDIRQS_SW_RESEND
|
||||
bool
|
||||
default y
|
||||
@@ -91,7 +99,7 @@ config ARCH_MTD_XIP
|
||||
|
||||
config VECTORS_BASE
|
||||
hex
|
||||
default 0xffff0000 if MMU
|
||||
default 0xffff0000 if MMU || CPU_HIGH_VECTOR
|
||||
default DRAM_BASE if REMAP_VECTORS_TO_RAM
|
||||
default 0x00000000
|
||||
help
|
||||
@@ -198,16 +206,27 @@ config ARCH_IMX
|
||||
help
|
||||
Support for Motorola's i.MX family of processors (MX1, MXL).
|
||||
|
||||
config ARCH_IOP3XX
|
||||
bool "IOP3xx-based"
|
||||
config ARCH_IOP32X
|
||||
bool "IOP32x-based"
|
||||
depends on MMU
|
||||
select PLAT_IOP
|
||||
select PCI
|
||||
help
|
||||
Support for Intel's IOP3XX (XScale) family of processors.
|
||||
Support for Intel's 80219 and IOP32X (XScale) family of
|
||||
processors.
|
||||
|
||||
config ARCH_IOP33X
|
||||
bool "IOP33x-based"
|
||||
depends on MMU
|
||||
select PLAT_IOP
|
||||
select PCI
|
||||
help
|
||||
Support for Intel's IOP33X (XScale) family of processors.
|
||||
|
||||
config ARCH_IXP4XX
|
||||
bool "IXP4xx-based"
|
||||
depends on MMU
|
||||
select GENERIC_TIME
|
||||
help
|
||||
Support for Intel's IXP4XX (XScale) family of processors.
|
||||
|
||||
@@ -308,7 +327,9 @@ source "arch/arm/mach-footbridge/Kconfig"
|
||||
|
||||
source "arch/arm/mach-integrator/Kconfig"
|
||||
|
||||
source "arch/arm/mach-iop3xx/Kconfig"
|
||||
source "arch/arm/mach-iop32x/Kconfig"
|
||||
|
||||
source "arch/arm/mach-iop33x/Kconfig"
|
||||
|
||||
source "arch/arm/mach-ixp4xx/Kconfig"
|
||||
|
||||
@@ -348,6 +369,9 @@ source "arch/arm/mach-netx/Kconfig"
|
||||
config ARCH_ACORN
|
||||
bool
|
||||
|
||||
config PLAT_IOP
|
||||
bool
|
||||
|
||||
source arch/arm/mm/Kconfig
|
||||
|
||||
# bool 'Use XScale PMU as timer source' CONFIG_XSCALE_PMU_TIMER
|
||||
@@ -602,6 +626,7 @@ config LEDS_CPU
|
||||
|
||||
config ALIGNMENT_TRAP
|
||||
bool
|
||||
depends on CPU_CP15_MMU
|
||||
default y if !ARCH_EBSA110
|
||||
help
|
||||
ARM processors can not fetch/store information which is not
|
||||
@@ -633,11 +658,12 @@ config ZBOOT_ROM_BSS
|
||||
hex "Compressed ROM boot loader BSS address"
|
||||
default "0"
|
||||
help
|
||||
The base address of 64KiB of read/write memory in the target
|
||||
for the ROM-able zImage, which must be available while the
|
||||
decompressor is running. Platforms which normally make use of
|
||||
ROM-able zImage formats normally set this to a suitable
|
||||
value in their defconfig file.
|
||||
The base address of an area of read/write memory in the target
|
||||
for the ROM-able zImage which must be available while the
|
||||
decompressor is running. It must be large enough to hold the
|
||||
entire decompressed kernel plus an additional 128 KiB.
|
||||
Platforms which normally make use of ROM-able zImage formats
|
||||
normally set this to a suitable value in their defconfig file.
|
||||
|
||||
If ZBOOT_ROM is not enabled, this has no effect.
|
||||
|
||||
@@ -832,7 +858,7 @@ source "drivers/base/Kconfig"
|
||||
|
||||
source "drivers/connector/Kconfig"
|
||||
|
||||
if ALIGNMENT_TRAP
|
||||
if ALIGNMENT_TRAP || !CPU_CP15_MMU
|
||||
source "drivers/mtd/Kconfig"
|
||||
endif
|
||||
|
||||
@@ -844,7 +870,7 @@ source "drivers/block/Kconfig"
|
||||
|
||||
source "drivers/acorn/block/Kconfig"
|
||||
|
||||
if PCMCIA || ARCH_CLPS7500 || ARCH_IOP3XX || ARCH_IXP4XX \
|
||||
if PCMCIA || ARCH_CLPS7500 || ARCH_IOP32X || ARCH_IOP33X || ARCH_IXP4XX \
|
||||
|| ARCH_L7200 || ARCH_LH7A40X || ARCH_PXA || ARCH_RPC \
|
||||
|| ARCH_S3C2410 || ARCH_SA1100 || ARCH_SHARK || FOOTBRIDGE \
|
||||
|| ARCH_IXP23XX
|
||||
|
||||
@@ -25,6 +25,14 @@ config FLASH_SIZE
|
||||
hex 'FLASH Size' if SET_MEM_PARAM
|
||||
default 0x00400000
|
||||
|
||||
config PROCESSOR_ID
|
||||
hex
|
||||
default 0x00007700
|
||||
depends on !CPU_CP15
|
||||
help
|
||||
If processor has no CP15 register, this processor ID is
|
||||
used instead of the auto-probing which utilizes the register.
|
||||
|
||||
config REMAP_VECTORS_TO_RAM
|
||||
bool 'Install vectors to the begining of RAM' if DRAM_BASE
|
||||
depends on DRAM_BASE
|
||||
|
||||
@@ -55,7 +55,12 @@ arch-$(CONFIG_CPU_32v3) :=-D__LINUX_ARM_ARCH__=3 -march=armv3
|
||||
# This selects how we optimise for the processor.
|
||||
tune-$(CONFIG_CPU_ARM610) :=-mtune=arm610
|
||||
tune-$(CONFIG_CPU_ARM710) :=-mtune=arm710
|
||||
tune-$(CONFIG_CPU_ARM7TDMI) :=-mtune=arm7tdmi
|
||||
tune-$(CONFIG_CPU_ARM720T) :=-mtune=arm7tdmi
|
||||
tune-$(CONFIG_CPU_ARM740T) :=-mtune=arm7tdmi
|
||||
tune-$(CONFIG_CPU_ARM9TDMI) :=-mtune=arm9tdmi
|
||||
tune-$(CONFIG_CPU_ARM940T) :=-mtune=arm9tdmi
|
||||
tune-$(CONFIG_CPU_ARM946T) :=$(call cc-option,-mtune=arm9e,-mtune=arm9tdmi)
|
||||
tune-$(CONFIG_CPU_ARM920T) :=-mtune=arm9tdmi
|
||||
tune-$(CONFIG_CPU_ARM922T) :=-mtune=arm9tdmi
|
||||
tune-$(CONFIG_CPU_ARM925T) :=-mtune=arm9tdmi
|
||||
@@ -101,7 +106,8 @@ endif
|
||||
machine-$(CONFIG_ARCH_INTEGRATOR) := integrator
|
||||
textofs-$(CONFIG_ARCH_CLPS711X) := 0x00028000
|
||||
machine-$(CONFIG_ARCH_CLPS711X) := clps711x
|
||||
machine-$(CONFIG_ARCH_IOP3XX) := iop3xx
|
||||
machine-$(CONFIG_ARCH_IOP32X) := iop32x
|
||||
machine-$(CONFIG_ARCH_IOP33X) := iop33x
|
||||
machine-$(CONFIG_ARCH_IXP4XX) := ixp4xx
|
||||
machine-$(CONFIG_ARCH_IXP2000) := ixp2000
|
||||
machine-$(CONFIG_ARCH_IXP23XX) := ixp23xx
|
||||
@@ -157,6 +163,7 @@ core-$(CONFIG_FPE_FASTFPE) += $(FASTFPE_OBJ)
|
||||
core-$(CONFIG_VFP) += arch/arm/vfp/
|
||||
|
||||
# If we have a common platform directory, then include it in the build.
|
||||
core-$(CONFIG_PLAT_IOP) += arch/arm/plat-iop/
|
||||
core-$(CONFIG_ARCH_OMAP) += arch/arm/plat-omap/
|
||||
|
||||
drivers-$(CONFIG_OPROFILE) += arch/arm/oprofile/
|
||||
|
||||
@@ -51,7 +51,11 @@ OBJS += head-at91rm9200.o
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_CPU_BIG_ENDIAN),y)
|
||||
ifeq ($(CONFIG_CPU_CP15),y)
|
||||
OBJS += big-endian.o
|
||||
else
|
||||
# The endian should be set by h/w design.
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
|
||||
@@ -20,11 +20,21 @@
|
||||
#ifdef DEBUG
|
||||
|
||||
#if defined(CONFIG_DEBUG_ICEDCC)
|
||||
|
||||
#ifdef CONFIG_CPU_V6
|
||||
.macro loadsp, rb
|
||||
.endm
|
||||
.macro writeb, ch, rb
|
||||
mcr p14, 0, \ch, c0, c5, 0
|
||||
.endm
|
||||
#else
|
||||
.macro loadsp, rb
|
||||
.endm
|
||||
.macro writeb, ch, rb
|
||||
mcr p14, 0, \ch, c0, c1, 0
|
||||
.endm
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#include <asm/arch/debug-macro.S>
|
||||
@@ -42,12 +52,6 @@
|
||||
add \rb, \rb, #0x00010000 @ Ser1
|
||||
#endif
|
||||
.endm
|
||||
#elif defined(CONFIG_ARCH_IOP331)
|
||||
.macro loadsp, rb
|
||||
mov \rb, #0xff000000
|
||||
orr \rb, \rb, #0x00ff0000
|
||||
orr \rb, \rb, #0x0000f700 @ location of the UART
|
||||
.endm
|
||||
#elif defined(CONFIG_ARCH_S3C2410)
|
||||
.macro loadsp, rb
|
||||
mov \rb, #0x50000000
|
||||
@@ -78,9 +82,11 @@
|
||||
kphex r6, 8 /* processor id */
|
||||
kputc #':'
|
||||
kphex r7, 8 /* architecture id */
|
||||
#ifdef CONFIG_CPU_CP15
|
||||
kputc #':'
|
||||
mrc p15, 0, r0, c1, c0
|
||||
kphex r0, 8 /* control reg */
|
||||
#endif
|
||||
kputc #'\n'
|
||||
kphex r5, 8 /* decompressed kernel start */
|
||||
kputc #'-'
|
||||
@@ -503,7 +509,11 @@ call_kernel: bl cache_clean_flush
|
||||
*/
|
||||
|
||||
call_cache_fn: adr r12, proc_types
|
||||
#ifdef CONFIG_CPU_CP15
|
||||
mrc p15, 0, r6, c0, c0 @ get processor ID
|
||||
#else
|
||||
ldr r6, =CONFIG_PROCESSOR_ID
|
||||
#endif
|
||||
1: ldr r1, [r12, #0] @ get value
|
||||
ldr r2, [r12, #4] @ get mask
|
||||
eor r1, r1, r6 @ (real ^ match)
|
||||
|
||||
@@ -30,6 +30,25 @@ static void putstr(const char *ptr);
|
||||
#include <asm/arch/uncompress.h>
|
||||
|
||||
#ifdef CONFIG_DEBUG_ICEDCC
|
||||
|
||||
#ifdef CONFIG_CPU_V6
|
||||
|
||||
static void icedcc_putc(int ch)
|
||||
{
|
||||
int status, i = 0x4000000;
|
||||
|
||||
do {
|
||||
if (--i < 0)
|
||||
return;
|
||||
|
||||
asm volatile ("mrc p14, 0, %0, c0, c1, 0" : "=r" (status));
|
||||
} while (status & (1 << 29));
|
||||
|
||||
asm("mcr p14, 0, %0, c0, c5, 0" : : "r" (ch));
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static void icedcc_putc(int ch)
|
||||
{
|
||||
int status, i = 0x4000000;
|
||||
@@ -44,6 +63,8 @@ static void icedcc_putc(int ch)
|
||||
asm("mcr p14, 0, %0, c1, c0, 0" : : "r" (ch));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#define putc(ch) icedcc_putc(ch)
|
||||
#define flush() do { } while (0)
|
||||
#endif
|
||||
|
||||
@@ -57,7 +57,7 @@ icst307_khz_to_vco(const struct icst307_params *p, unsigned long freq)
|
||||
break;
|
||||
} while (i < ARRAY_SIZE(idx2s));
|
||||
|
||||
if (i > ARRAY_SIZE(idx2s))
|
||||
if (i >= ARRAY_SIZE(idx2s))
|
||||
return vco;
|
||||
|
||||
vco.s = idx2s[i];
|
||||
@@ -119,7 +119,7 @@ icst307_ps_to_vco(const struct icst307_params *p, unsigned long period)
|
||||
break;
|
||||
} while (i < ARRAY_SIZE(idx2s));
|
||||
|
||||
if (i > ARRAY_SIZE(idx2s))
|
||||
if (i >= ARRAY_SIZE(idx2s))
|
||||
return vco;
|
||||
|
||||
vco.s = idx2s[i];
|
||||
|
||||
@@ -55,7 +55,7 @@ icst525_khz_to_vco(const struct icst525_params *p, unsigned long freq)
|
||||
break;
|
||||
} while (i < ARRAY_SIZE(idx2s));
|
||||
|
||||
if (i > ARRAY_SIZE(idx2s))
|
||||
if (i >= ARRAY_SIZE(idx2s))
|
||||
return vco;
|
||||
|
||||
vco.s = idx2s[i];
|
||||
@@ -118,7 +118,7 @@ icst525_ps_to_vco(const struct icst525_params *p, unsigned long period)
|
||||
break;
|
||||
} while (i < ARRAY_SIZE(idx2s));
|
||||
|
||||
if (i > ARRAY_SIZE(idx2s))
|
||||
if (i >= ARRAY_SIZE(idx2s))
|
||||
return vco;
|
||||
|
||||
vco.s = idx2s[i];
|
||||
|
||||
@@ -121,6 +121,13 @@ static struct locomo_dev_info locomo_devices[] = {
|
||||
.offset = 0,
|
||||
.length = 0,
|
||||
},
|
||||
{
|
||||
.devid = LOCOMO_DEVID_SPI,
|
||||
.irq = {},
|
||||
.name = "locomo-spi",
|
||||
.offset = LOCOMO_SPI,
|
||||
.length = 0x30,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -374,7 +381,7 @@ static void locomo_spi_handler(unsigned int irq, struct irqdesc *desc,
|
||||
struct irqdesc *d;
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
|
||||
req = locomo_readl(mapbase + LOCOMO_SPIIR) & 0x000F;
|
||||
req = locomo_readl(mapbase + LOCOMO_SPI + LOCOMO_SPIIR) & 0x000F;
|
||||
if (req) {
|
||||
irq = LOCOMO_IRQ_SPI_START;
|
||||
d = irq_desc + irq;
|
||||
@@ -391,35 +398,35 @@ static void locomo_spi_ack_irq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
unsigned int r;
|
||||
r = locomo_readl(mapbase + LOCOMO_SPIWE);
|
||||
r = locomo_readl(mapbase + LOCOMO_SPI + LOCOMO_SPIWE);
|
||||
r |= (0x0001 << (irq - LOCOMO_IRQ_SPI_START));
|
||||
locomo_writel(r, mapbase + LOCOMO_SPIWE);
|
||||
locomo_writel(r, mapbase + LOCOMO_SPI + LOCOMO_SPIWE);
|
||||
|
||||
r = locomo_readl(mapbase + LOCOMO_SPIIS);
|
||||
r = locomo_readl(mapbase + LOCOMO_SPI + LOCOMO_SPIIS);
|
||||
r &= ~(0x0001 << (irq - LOCOMO_IRQ_SPI_START));
|
||||
locomo_writel(r, mapbase + LOCOMO_SPIIS);
|
||||
locomo_writel(r, mapbase + LOCOMO_SPI + LOCOMO_SPIIS);
|
||||
|
||||
r = locomo_readl(mapbase + LOCOMO_SPIWE);
|
||||
r = locomo_readl(mapbase + LOCOMO_SPI + LOCOMO_SPIWE);
|
||||
r &= ~(0x0001 << (irq - LOCOMO_IRQ_SPI_START));
|
||||
locomo_writel(r, mapbase + LOCOMO_SPIWE);
|
||||
locomo_writel(r, mapbase + LOCOMO_SPI + LOCOMO_SPIWE);
|
||||
}
|
||||
|
||||
static void locomo_spi_mask_irq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
unsigned int r;
|
||||
r = locomo_readl(mapbase + LOCOMO_SPIIE);
|
||||
r = locomo_readl(mapbase + LOCOMO_SPI + LOCOMO_SPIIE);
|
||||
r &= ~(0x0001 << (irq - LOCOMO_IRQ_SPI_START));
|
||||
locomo_writel(r, mapbase + LOCOMO_SPIIE);
|
||||
locomo_writel(r, mapbase + LOCOMO_SPI + LOCOMO_SPIIE);
|
||||
}
|
||||
|
||||
static void locomo_spi_unmask_irq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
unsigned int r;
|
||||
r = locomo_readl(mapbase + LOCOMO_SPIIE);
|
||||
r = locomo_readl(mapbase + LOCOMO_SPI + LOCOMO_SPIIE);
|
||||
r |= (0x0001 << (irq - LOCOMO_IRQ_SPI_START));
|
||||
locomo_writel(r, mapbase + LOCOMO_SPIIE);
|
||||
locomo_writel(r, mapbase + LOCOMO_SPI + LOCOMO_SPIIE);
|
||||
}
|
||||
|
||||
static struct irq_chip locomo_spi_chip = {
|
||||
@@ -814,12 +821,15 @@ static inline struct locomo *locomo_chip_driver(struct locomo_dev *ldev)
|
||||
return (struct locomo *)dev_get_drvdata(ldev->dev.parent);
|
||||
}
|
||||
|
||||
void locomo_gpio_set_dir(struct locomo_dev *ldev, unsigned int bits, unsigned int dir)
|
||||
void locomo_gpio_set_dir(struct device *dev, unsigned int bits, unsigned int dir)
|
||||
{
|
||||
struct locomo *lchip = locomo_chip_driver(ldev);
|
||||
struct locomo *lchip = dev_get_drvdata(dev);
|
||||
unsigned long flags;
|
||||
unsigned int r;
|
||||
|
||||
if (!lchip)
|
||||
return;
|
||||
|
||||
spin_lock_irqsave(&lchip->lock, flags);
|
||||
|
||||
r = locomo_readl(lchip->base + LOCOMO_GPD);
|
||||
@@ -836,12 +846,15 @@ void locomo_gpio_set_dir(struct locomo_dev *ldev, unsigned int bits, unsigned in
|
||||
spin_unlock_irqrestore(&lchip->lock, flags);
|
||||
}
|
||||
|
||||
unsigned int locomo_gpio_read_level(struct locomo_dev *ldev, unsigned int bits)
|
||||
int locomo_gpio_read_level(struct device *dev, unsigned int bits)
|
||||
{
|
||||
struct locomo *lchip = locomo_chip_driver(ldev);
|
||||
struct locomo *lchip = dev_get_drvdata(dev);
|
||||
unsigned long flags;
|
||||
unsigned int ret;
|
||||
|
||||
if (!lchip)
|
||||
return -ENODEV;
|
||||
|
||||
spin_lock_irqsave(&lchip->lock, flags);
|
||||
ret = locomo_readl(lchip->base + LOCOMO_GPL);
|
||||
spin_unlock_irqrestore(&lchip->lock, flags);
|
||||
@@ -850,12 +863,15 @@ unsigned int locomo_gpio_read_level(struct locomo_dev *ldev, unsigned int bits)
|
||||
return ret;
|
||||
}
|
||||
|
||||
unsigned int locomo_gpio_read_output(struct locomo_dev *ldev, unsigned int bits)
|
||||
int locomo_gpio_read_output(struct device *dev, unsigned int bits)
|
||||
{
|
||||
struct locomo *lchip = locomo_chip_driver(ldev);
|
||||
struct locomo *lchip = dev_get_drvdata(dev);
|
||||
unsigned long flags;
|
||||
unsigned int ret;
|
||||
|
||||
if (!lchip)
|
||||
return -ENODEV;
|
||||
|
||||
spin_lock_irqsave(&lchip->lock, flags);
|
||||
ret = locomo_readl(lchip->base + LOCOMO_GPO);
|
||||
spin_unlock_irqrestore(&lchip->lock, flags);
|
||||
@@ -864,12 +880,15 @@ unsigned int locomo_gpio_read_output(struct locomo_dev *ldev, unsigned int bits)
|
||||
return ret;
|
||||
}
|
||||
|
||||
void locomo_gpio_write(struct locomo_dev *ldev, unsigned int bits, unsigned int set)
|
||||
void locomo_gpio_write(struct device *dev, unsigned int bits, unsigned int set)
|
||||
{
|
||||
struct locomo *lchip = locomo_chip_driver(ldev);
|
||||
struct locomo *lchip = dev_get_drvdata(dev);
|
||||
unsigned long flags;
|
||||
unsigned int r;
|
||||
|
||||
if (!lchip)
|
||||
return;
|
||||
|
||||
spin_lock_irqsave(&lchip->lock, flags);
|
||||
|
||||
r = locomo_readl(lchip->base + LOCOMO_GPO);
|
||||
@@ -1058,9 +1077,9 @@ void locomo_frontlight_set(struct locomo_dev *dev, int duty, int vr, int bpwf)
|
||||
struct locomo *lchip = locomo_chip_driver(dev);
|
||||
|
||||
if (vr)
|
||||
locomo_gpio_write(dev, LOCOMO_GPIO_FL_VR, 1);
|
||||
locomo_gpio_write(dev->dev.parent, LOCOMO_GPIO_FL_VR, 1);
|
||||
else
|
||||
locomo_gpio_write(dev, LOCOMO_GPIO_FL_VR, 0);
|
||||
locomo_gpio_write(dev->dev.parent, LOCOMO_GPIO_FL_VR, 0);
|
||||
|
||||
spin_lock_irqsave(&lchip->lock, flags);
|
||||
locomo_writel(bpwf, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS);
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
#define SHARPSL_CHARGE_FINISH_TIME (msecs_to_jiffies(10*60*1000)) /* 10 min */
|
||||
#define SHARPSL_BATCHK_TIME (msecs_to_jiffies(15*1000)) /* 15 sec */
|
||||
#define SHARPSL_BATCHK_TIME_SUSPEND (60*10) /* 10 min */
|
||||
|
||||
#define SHARPSL_WAIT_CO_TIME 15 /* 15 sec */
|
||||
#define SHARPSL_WAIT_DISCHARGE_ON 100 /* 100 msec */
|
||||
#define SHARPSL_CHECK_BATTERY_WAIT_TIME_TEMP 10 /* 10 msec */
|
||||
@@ -575,6 +576,9 @@ static int corgi_pxa_pm_enter(suspend_state_t state)
|
||||
while (corgi_enter_suspend(alarm_time,alarm_status,state))
|
||||
{}
|
||||
|
||||
if (sharpsl_pm.machinfo->earlyresume)
|
||||
sharpsl_pm.machinfo->earlyresume();
|
||||
|
||||
dev_dbg(sharpsl_pm.dev, "SharpSL resuming...\n");
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -126,6 +126,7 @@ CONFIG_CRUNCH=y
|
||||
# EP93xx Platforms
|
||||
#
|
||||
CONFIG_MACH_EDB9302=y
|
||||
CONFIG_MACH_EDB9312=y
|
||||
CONFIG_MACH_EDB9315=y
|
||||
CONFIG_MACH_EDB9315A=y
|
||||
CONFIG_MACH_GESBC9312=y
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,14 +1,19 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.17-git9
|
||||
# Sun Jun 25 23:56:32 2006
|
||||
# Linux kernel version: 2.6.18
|
||||
# Wed Sep 20 20:27:31 2006
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
||||
CONFIG_HARDIRQS_SW_RESEND=y
|
||||
CONFIG_GENERIC_IRQ_PROBE=y
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_VECTORS_BASE=0xffff0000
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
||||
#
|
||||
# Code maturity level options
|
||||
@@ -26,14 +31,15 @@ CONFIG_SWAP=y
|
||||
CONFIG_SYSVIPC=y
|
||||
# CONFIG_POSIX_MQUEUE is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
# CONFIG_RELAY is not set
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_UID16=y
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
# CONFIG_EMBEDDED is not set
|
||||
CONFIG_UID16=y
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
@@ -46,6 +52,8 @@ CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
# CONFIG_SLOB is not set
|
||||
@@ -84,7 +92,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
# CONFIG_ARCH_INTEGRATOR is not set
|
||||
# CONFIG_ARCH_REALVIEW is not set
|
||||
# CONFIG_ARCH_VERSATILE is not set
|
||||
# CONFIG_ARCH_AT91RM9200 is not set
|
||||
# CONFIG_ARCH_AT91 is not set
|
||||
# CONFIG_ARCH_CLPS7500 is not set
|
||||
# CONFIG_ARCH_CLPS711X is not set
|
||||
# CONFIG_ARCH_CO285 is not set
|
||||
@@ -94,7 +102,8 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
# CONFIG_ARCH_NETX is not set
|
||||
# CONFIG_ARCH_H720X is not set
|
||||
# CONFIG_ARCH_IMX is not set
|
||||
# CONFIG_ARCH_IOP3XX is not set
|
||||
# CONFIG_ARCH_IOP32X is not set
|
||||
# CONFIG_ARCH_IOP33X is not set
|
||||
# CONFIG_ARCH_IXP4XX is not set
|
||||
# CONFIG_ARCH_IXP2000 is not set
|
||||
# CONFIG_ARCH_IXP23XX is not set
|
||||
@@ -122,13 +131,18 @@ CONFIG_ARCH_SMDK2410=y
|
||||
CONFIG_ARCH_S3C2440=y
|
||||
CONFIG_SMDK2440_CPU2440=y
|
||||
CONFIG_SMDK2440_CPU2442=y
|
||||
CONFIG_MACH_S3C2413=y
|
||||
CONFIG_MACH_SMDK2413=y
|
||||
CONFIG_MACH_VR1000=y
|
||||
CONFIG_MACH_RX3715=y
|
||||
CONFIG_MACH_OTOM=y
|
||||
CONFIG_MACH_NEXCODER_2440=y
|
||||
CONFIG_MACH_VSTMS=y
|
||||
CONFIG_S3C2410_CLOCK=y
|
||||
CONFIG_S3C2410_PM=y
|
||||
CONFIG_CPU_S3C2410_DMA=y
|
||||
CONFIG_CPU_S3C2410=y
|
||||
CONFIG_S3C2412_PM=y
|
||||
CONFIG_CPU_S3C2412=y
|
||||
CONFIG_CPU_S3C244X=y
|
||||
CONFIG_CPU_S3C2440=y
|
||||
@@ -156,7 +170,7 @@ CONFIG_S3C2410_LOWLEVEL_UART_PORT=0
|
||||
CONFIG_CPU_32=y
|
||||
CONFIG_CPU_ARM920T=y
|
||||
CONFIG_CPU_ARM926T=y
|
||||
CONFIG_CPU_32v4=y
|
||||
CONFIG_CPU_32v4T=y
|
||||
CONFIG_CPU_32v5=y
|
||||
CONFIG_CPU_ABRT_EV4T=y
|
||||
CONFIG_CPU_ABRT_EV5TJ=y
|
||||
@@ -200,6 +214,7 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
CONFIG_ALIGNMENT_TRAP=y
|
||||
|
||||
#
|
||||
@@ -304,7 +319,6 @@ CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_ATALK is not set
|
||||
# CONFIG_X25 is not set
|
||||
# CONFIG_LAPB is not set
|
||||
# CONFIG_NET_DIVERT is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
|
||||
@@ -460,6 +474,7 @@ CONFIG_BLK_DEV_NBD=m
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
CONFIG_ATA_OVER_ETH=m
|
||||
@@ -640,6 +655,7 @@ CONFIG_SERIO_LIBPS2=y
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
CONFIG_HW_CONSOLE=y
|
||||
# CONFIG_VT_HW_CONSOLE_BINDING is not set
|
||||
CONFIG_SERIAL_NONSTANDARD=y
|
||||
# CONFIG_COMPUTONE is not set
|
||||
# CONFIG_ROCKETPORT is not set
|
||||
@@ -716,6 +732,7 @@ CONFIG_S3C2410_WATCHDOG=y
|
||||
# USB-based Watchdog Cards
|
||||
#
|
||||
# CONFIG_USBPCWATCHDOG is not set
|
||||
CONFIG_HW_RANDOM=y
|
||||
# CONFIG_NVRAM is not set
|
||||
CONFIG_S3C2410_RTC=y
|
||||
# CONFIG_DTLK is not set
|
||||
@@ -857,12 +874,12 @@ CONFIG_VIDEO_V4L2=y
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
CONFIG_FIRMWARE_EDID=y
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
# CONFIG_FB_MACMODES is not set
|
||||
CONFIG_FB_FIRMWARE_EDID=y
|
||||
# CONFIG_FB_BACKLIGHT is not set
|
||||
CONFIG_FB_MODE_HELPERS=y
|
||||
# CONFIG_FB_TILEBLITTING is not set
|
||||
@@ -995,7 +1012,7 @@ CONFIG_USB_MON=y
|
||||
# CONFIG_USB_LEGOTOWER is not set
|
||||
# CONFIG_USB_LCD is not set
|
||||
# CONFIG_USB_LED is not set
|
||||
# CONFIG_USB_CY7C63 is not set
|
||||
# CONFIG_USB_CYPRESS_CY7C63 is not set
|
||||
# CONFIG_USB_CYTHERM is not set
|
||||
# CONFIG_USB_PHIDGETKIT is not set
|
||||
# CONFIG_USB_PHIDGETSERVO is not set
|
||||
@@ -1095,6 +1112,7 @@ CONFIG_JFFS2_FS=y
|
||||
CONFIG_JFFS2_FS_DEBUG=0
|
||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||
# CONFIG_JFFS2_SUMMARY is not set
|
||||
# CONFIG_JFFS2_FS_XATTR is not set
|
||||
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
||||
CONFIG_JFFS2_ZLIB=y
|
||||
CONFIG_JFFS2_RTIME=y
|
||||
@@ -1202,14 +1220,19 @@ CONFIG_NLS_DEFAULT="iso8859-1"
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_UNUSED_SYMBOLS is not set
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_LOG_BUF_SHIFT=16
|
||||
CONFIG_DETECT_SOFTLOCKUP=y
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
CONFIG_DEBUG_MUTEXES=y
|
||||
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||
# CONFIG_RT_MUTEX_TESTER is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
CONFIG_DEBUG_MUTEXES=y
|
||||
# CONFIG_DEBUG_RWSEMS is not set
|
||||
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
||||
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
@@ -1251,3 +1274,4 @@ CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZLIB_DEFLATE=y
|
||||
CONFIG_PLIST=y
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include <linux/list.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/completion.h>
|
||||
#include <linux/kthread.h>
|
||||
|
||||
#include <asm/apm.h> /* apm_power_info */
|
||||
#include <asm/system.h>
|
||||
@@ -80,7 +81,7 @@ struct apm_user {
|
||||
*/
|
||||
static int suspends_pending;
|
||||
static int apm_disabled;
|
||||
static int arm_apm_active;
|
||||
static struct task_struct *kapmd_tsk;
|
||||
|
||||
static DECLARE_WAIT_QUEUE_HEAD(apm_waitqueue);
|
||||
static DECLARE_WAIT_QUEUE_HEAD(apm_suspend_waitqueue);
|
||||
@@ -97,7 +98,6 @@ static LIST_HEAD(apm_user_list);
|
||||
* to be suspending the system.
|
||||
*/
|
||||
static DECLARE_WAIT_QUEUE_HEAD(kapmd_wait);
|
||||
static DECLARE_COMPLETION(kapmd_exit);
|
||||
static DEFINE_SPINLOCK(kapmd_queue_lock);
|
||||
static struct apm_queue kapmd_queue;
|
||||
|
||||
@@ -468,16 +468,13 @@ static int apm_get_info(char *buf, char **start, off_t fpos, int length)
|
||||
|
||||
static int kapmd(void *arg)
|
||||
{
|
||||
daemonize("kapmd");
|
||||
current->flags |= PF_NOFREEZE;
|
||||
|
||||
do {
|
||||
apm_event_t event;
|
||||
|
||||
wait_event_interruptible(kapmd_wait,
|
||||
!queue_empty(&kapmd_queue) || !arm_apm_active);
|
||||
!queue_empty(&kapmd_queue) || kthread_should_stop());
|
||||
|
||||
if (!arm_apm_active)
|
||||
if (kthread_should_stop())
|
||||
break;
|
||||
|
||||
spin_lock_irq(&kapmd_queue_lock);
|
||||
@@ -508,7 +505,7 @@ static int kapmd(void *arg)
|
||||
}
|
||||
} while (1);
|
||||
|
||||
complete_and_exit(&kapmd_exit, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __init apm_init(void)
|
||||
@@ -520,13 +517,14 @@ static int __init apm_init(void)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
arm_apm_active = 1;
|
||||
|
||||
ret = kernel_thread(kapmd, NULL, CLONE_KERNEL);
|
||||
if (ret < 0) {
|
||||
arm_apm_active = 0;
|
||||
kapmd_tsk = kthread_create(kapmd, NULL, "kapmd");
|
||||
if (IS_ERR(kapmd_tsk)) {
|
||||
ret = PTR_ERR(kapmd_tsk);
|
||||
kapmd_tsk = NULL;
|
||||
return ret;
|
||||
}
|
||||
kapmd_tsk->flags |= PF_NOFREEZE;
|
||||
wake_up_process(kapmd_tsk);
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
create_proc_info_entry("apm", 0, NULL, apm_get_info);
|
||||
@@ -535,10 +533,7 @@ static int __init apm_init(void)
|
||||
ret = misc_register(&apm_device);
|
||||
if (ret != 0) {
|
||||
remove_proc_entry("apm", NULL);
|
||||
|
||||
arm_apm_active = 0;
|
||||
wake_up(&kapmd_wait);
|
||||
wait_for_completion(&kapmd_exit);
|
||||
kthread_stop(kapmd_tsk);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -549,9 +544,7 @@ static void __exit apm_exit(void)
|
||||
misc_deregister(&apm_device);
|
||||
remove_proc_entry("apm", NULL);
|
||||
|
||||
arm_apm_active = 0;
|
||||
wake_up(&kapmd_wait);
|
||||
wait_for_completion(&kapmd_exit);
|
||||
kthread_stop(kapmd_tsk);
|
||||
}
|
||||
|
||||
module_init(apm_init);
|
||||
|
||||
@@ -21,6 +21,36 @@
|
||||
|
||||
#if defined(CONFIG_DEBUG_ICEDCC)
|
||||
@@ debug using ARM EmbeddedICE DCC channel
|
||||
|
||||
#if defined(CONFIG_CPU_V6)
|
||||
|
||||
.macro addruart, rx
|
||||
.endm
|
||||
|
||||
.macro senduart, rd, rx
|
||||
mcr p14, 0, \rd, c0, c5, 0
|
||||
.endm
|
||||
|
||||
.macro busyuart, rd, rx
|
||||
1001:
|
||||
mrc p14, 0, \rx, c0, c1, 0
|
||||
tst \rx, #0x20000000
|
||||
beq 1001b
|
||||
.endm
|
||||
|
||||
.macro waituart, rd, rx
|
||||
mov \rd, #0x2000000
|
||||
1001:
|
||||
subs \rd, \rd, #1
|
||||
bmi 1002f
|
||||
mrc p14, 0, \rx, c0, c1, 0
|
||||
tst \rx, #0x20000000
|
||||
bne 1001b
|
||||
1002:
|
||||
.endm
|
||||
|
||||
#else
|
||||
|
||||
.macro addruart, rx
|
||||
.endm
|
||||
|
||||
@@ -46,9 +76,12 @@
|
||||
bne 1001b
|
||||
1002:
|
||||
.endm
|
||||
|
||||
#endif /* CONFIG_CPU_V6 */
|
||||
|
||||
#else
|
||||
#include <asm/arch/debug-macro.S>
|
||||
#endif
|
||||
#endif /* CONFIG_DEBUG_ICEDCC */
|
||||
|
||||
/*
|
||||
* Useful debugging routines
|
||||
|
||||
@@ -191,6 +191,9 @@ __dabt_svc:
|
||||
__irq_svc:
|
||||
svc_entry
|
||||
|
||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||
bl trace_hardirqs_off
|
||||
#endif
|
||||
#ifdef CONFIG_PREEMPT
|
||||
get_thread_info tsk
|
||||
ldr r8, [tsk, #TI_PREEMPT] @ get preempt count
|
||||
@@ -211,6 +214,10 @@ preempt_return:
|
||||
#endif
|
||||
ldr r0, [sp, #S_PSR] @ irqs are already disabled
|
||||
msr spsr_cxsf, r0
|
||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||
tst r0, #PSR_I_BIT
|
||||
bleq trace_hardirqs_on
|
||||
#endif
|
||||
ldmia sp, {r0 - pc}^ @ load r0 - pc, cpsr
|
||||
|
||||
.ltorg
|
||||
@@ -398,6 +405,9 @@ __dabt_usr:
|
||||
__irq_usr:
|
||||
usr_entry
|
||||
|
||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||
bl trace_hardirqs_off
|
||||
#endif
|
||||
get_thread_info tsk
|
||||
#ifdef CONFIG_PREEMPT
|
||||
ldr r8, [tsk, #TI_PREEMPT] @ get preempt count
|
||||
@@ -412,6 +422,9 @@ __irq_usr:
|
||||
teq r0, r7
|
||||
strne r0, [r0, -r0]
|
||||
#endif
|
||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||
bl trace_hardirqs_on
|
||||
#endif
|
||||
|
||||
mov why, #0
|
||||
b ret_to_user
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user