Commit 591eb85e authored by Linus Torvalds's avatar Linus Torvalds

Merge master.kernel.org:/home/rmk/linux-2.6-arm

* master.kernel.org:/home/rmk/linux-2.6-arm: (45 commits)
  [ARM] 3389/1: typo and grammar fix
  [ARM] 3386/1: AT91RM9200 Clock update
  [ARM] 3384/1: AT91RM9200: Timer
  [ARM] 3382/1: ixp2000: unify defconfigs
  [ARM] 3381/1: ixp2000: fix slowport write timing control register fields
  [ARM] 3380/1: ixp2000: simplify ixdp2x00_master_npu() check
  [ARM] 3379/1: ixp2000: use generic 8250 debug macros
  [ARM] 3378/1: ixp2000: fix gpio interrupt handling
  [ARM] Quieten spurious IRQ detection
  [ARM] Use kcalloc to allocate counter_config array rather than kmalloc
  [ARM] Oprofile: dynamically allocate counter_config
  [ARM] Oprofile: Convert semaphore to mutex
  [ARM] 3376/2: S3C2410 - update defconfig
  [ARM] 3375/1: S3C2440 - fix osiris machine build
  [ARM] 3374/1: ep93xx: gpio interrupt support
  [ARM] 3361/1: S3C24XX - add USB bus clock source
  [ARM] 3360/1: S3C2440 - add set rate methods and camera clock
  [ARM] 3359/1: S3C24XX - add support for clk_set_rate
  [ARM] Convert kmalloc+memset to kzalloc
  [ARM] 3373/1: move uengine loader to arch/arm/common
  ...
parents 4658f79b 3a2916aa
...@@ -10,6 +10,8 @@ Introduction ...@@ -10,6 +10,8 @@ Introduction
by the 's3c2410' architecture of ARM Linux. Currently the S3C2410 and by the 's3c2410' architecture of ARM Linux. Currently the S3C2410 and
the S3C2440 are supported CPUs. the S3C2440 are supported CPUs.
Support for the S3C2400 series is in progress.
Configuration Configuration
------------- -------------
...@@ -32,6 +34,11 @@ Machines ...@@ -32,6 +34,11 @@ Machines
A general purpose development board, see EB2410ITX.txt for further A general purpose development board, see EB2410ITX.txt for further
details details
Simtec Electronics IM2440D20 (Osiris)
CPU Module from Simtec Electronics, with a S3C2440A CPU, nand flash
and a PCMCIA controller.
Samsung SMDK2410 Samsung SMDK2410
Samsung's own development board, geared for PDA work. Samsung's own development board, geared for PDA work.
...@@ -85,6 +92,26 @@ Adding New Machines ...@@ -85,6 +92,26 @@ Adding New Machines
mailing list information. mailing list information.
I2C
---
The hardware I2C core in the CPU is supported in single master
mode, and can be configured via platform data.
RTC
---
Support for the onboard RTC unit, including alarm function.
Watchdog
--------
The onchip watchdog is available via the standard watchdog
interface.
NAND NAND
---- ----
...@@ -121,6 +148,15 @@ Clock Management ...@@ -121,6 +148,15 @@ Clock Management
various clock units various clock units
Suspend to RAM
--------------
For boards that provide support for suspend to RAM, the
system can be placed into low power suspend.
See Suspend.txt for more information.
Platform Data Platform Data
------------- -------------
...@@ -158,6 +194,7 @@ Platform Data ...@@ -158,6 +194,7 @@ Platform Data
exported outside arch/arm/mach-s3c2410/, or exported to exported outside arch/arm/mach-s3c2410/, or exported to
modules via EXPORT_SYMBOL() and related functions. modules via EXPORT_SYMBOL() and related functions.
Port Contributors Port Contributors
----------------- -----------------
...@@ -188,8 +225,11 @@ Document Changes ...@@ -188,8 +225,11 @@ Document Changes
08 Mar 2005 - BJD - Added LCVR to list of people, updated introduction 08 Mar 2005 - BJD - Added LCVR to list of people, updated introduction
08 Mar 2005 - BJD - Added section on adding machines 08 Mar 2005 - BJD - Added section on adding machines
09 Sep 2005 - BJD - Added section on platform data 09 Sep 2005 - BJD - Added section on platform data
11 Feb 2006 - BJD - Added I2C, RTC and Watchdog sections
11 Feb 2006 - BJD - Added Osiris machine, and S3C2400 information
Document Author Document Author
--------------- ---------------
Ben Dooks, (c) 2004-2005 Simtec Electronics Ben Dooks, (c) 2004-2005,2006 Simtec Electronics
...@@ -108,6 +108,13 @@ config ARCH_EBSA110 ...@@ -108,6 +108,13 @@ config ARCH_EBSA110
Ethernet interface, two PCMCIA sockets, two serial ports and a Ethernet interface, two PCMCIA sockets, two serial ports and a
parallel port. parallel port.
config ARCH_EP93XX
bool "EP93xx-based"
select ARM_AMBA
select ARM_VIC
help
This enables support for the Cirrus EP93xx series of CPUs.
config ARCH_FOOTBRIDGE config ARCH_FOOTBRIDGE
bool "FootBridge" bool "FootBridge"
select FOOTBRIDGE select FOOTBRIDGE
...@@ -250,6 +257,8 @@ endchoice ...@@ -250,6 +257,8 @@ endchoice
source "arch/arm/mach-clps711x/Kconfig" source "arch/arm/mach-clps711x/Kconfig"
source "arch/arm/mach-ep93xx/Kconfig"
source "arch/arm/mach-footbridge/Kconfig" source "arch/arm/mach-footbridge/Kconfig"
source "arch/arm/mach-integrator/Kconfig" source "arch/arm/mach-integrator/Kconfig"
...@@ -434,6 +443,13 @@ config NO_IDLE_HZ ...@@ -434,6 +443,13 @@ config NO_IDLE_HZ
Currently at least OMAP, PXA2xx and SA11x0 platforms are known Currently at least OMAP, PXA2xx and SA11x0 platforms are known
to have accurate timekeeping with dynamic tick. to have accurate timekeeping with dynamic tick.
config HZ
int
default 128 if ARCH_L7200
default 200 if ARCH_EBSA110 || ARCH_S3C2410
default OMAP_32K_TIMER_HZ if ARCH_OMAP && OMAP_32K_TIMER
default 100
config AEABI config AEABI
bool "Use the ARM EABI to compile the kernel" bool "Use the ARM EABI to compile the kernel"
help help
......
...@@ -105,6 +105,7 @@ endif ...@@ -105,6 +105,7 @@ endif
machine-$(CONFIG_ARCH_AAEC2000) := aaec2000 machine-$(CONFIG_ARCH_AAEC2000) := aaec2000
machine-$(CONFIG_ARCH_REALVIEW) := realview machine-$(CONFIG_ARCH_REALVIEW) := realview
machine-$(CONFIG_ARCH_AT91RM9200) := at91rm9200 machine-$(CONFIG_ARCH_AT91RM9200) := at91rm9200
machine-$(CONFIG_ARCH_EP93XX) := ep93xx
ifeq ($(CONFIG_ARCH_EBSA110),y) ifeq ($(CONFIG_ARCH_EBSA110),y)
# This is what happens if you forget the IOCS16 line. # This is what happens if you forget the IOCS16 line.
......
...@@ -15,3 +15,4 @@ obj-$(CONFIG_SHARP_LOCOMO) += locomo.o ...@@ -15,3 +15,4 @@ obj-$(CONFIG_SHARP_LOCOMO) += locomo.o
obj-$(CONFIG_SHARP_PARAM) += sharpsl_param.o obj-$(CONFIG_SHARP_PARAM) += sharpsl_param.o
obj-$(CONFIG_SHARPSL_PM) += sharpsl_pm.o obj-$(CONFIG_SHARPSL_PM) += sharpsl_pm.o
obj-$(CONFIG_SHARP_SCOOP) += scoop.o obj-$(CONFIG_SHARP_SCOOP) += scoop.o
obj-$(CONFIG_ARCH_IXP2000) += uengine.o
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
* limited DMA windows. These functions utilize bounce buffers to * limited DMA windows. These functions utilize bounce buffers to
* copy data to/from buffers located outside the DMA region. This * copy data to/from buffers located outside the DMA region. This
* only works for systems in which DMA memory is at the bottom of * only works for systems in which DMA memory is at the bottom of
* RAM and the remainder of memory is at the top an the DMA memory * RAM, the remainder of memory is at the top and the DMA memory
* can be marked as ZONE_DMA. Anything beyond that such as discontigous * can be marked as ZONE_DMA. Anything beyond that such as discontigous
* DMA windows will require custom implementations that reserve memory * DMA windows will require custom implementations that reserve memory
* areas at early bootup. * areas at early bootup.
......
...@@ -60,7 +60,7 @@ struct locomo { ...@@ -60,7 +60,7 @@ struct locomo {
unsigned long phys; unsigned long phys;
unsigned int irq; unsigned int irq;
spinlock_t lock; spinlock_t lock;
void *base; void __iomem *base;
}; };
struct locomo_dev_info { struct locomo_dev_info {
...@@ -162,7 +162,7 @@ static void locomo_handler(unsigned int irq, struct irqdesc *desc, ...@@ -162,7 +162,7 @@ static void locomo_handler(unsigned int irq, struct irqdesc *desc,
{ {
int req, i; int req, i;
struct irqdesc *d; struct irqdesc *d;
void *mapbase = get_irq_chipdata(irq); void __iomem *mapbase = get_irq_chipdata(irq);
/* Acknowledge the parent IRQ */ /* Acknowledge the parent IRQ */
desc->chip->ack(irq); desc->chip->ack(irq);
...@@ -189,7 +189,7 @@ static void locomo_ack_irq(unsigned int irq) ...@@ -189,7 +189,7 @@ static void locomo_ack_irq(unsigned int irq)
static void locomo_mask_irq(unsigned int irq) static void locomo_mask_irq(unsigned int irq)
{ {
void *mapbase = get_irq_chipdata(irq); void __iomem *mapbase = get_irq_chipdata(irq);
unsigned int r; unsigned int r;
r = locomo_readl(mapbase + LOCOMO_ICR); r = locomo_readl(mapbase + LOCOMO_ICR);
r &= ~(0x0010 << (irq - LOCOMO_IRQ_START)); r &= ~(0x0010 << (irq - LOCOMO_IRQ_START));
...@@ -198,7 +198,7 @@ static void locomo_mask_irq(unsigned int irq) ...@@ -198,7 +198,7 @@ static void locomo_mask_irq(unsigned int irq)
static void locomo_unmask_irq(unsigned int irq) static void locomo_unmask_irq(unsigned int irq)
{ {
void *mapbase = get_irq_chipdata(irq); void __iomem *mapbase = get_irq_chipdata(irq);
unsigned int r; unsigned int r;
r = locomo_readl(mapbase + LOCOMO_ICR); r = locomo_readl(mapbase + LOCOMO_ICR);
r |= (0x0010 << (irq - LOCOMO_IRQ_START)); r |= (0x0010 << (irq - LOCOMO_IRQ_START));
...@@ -215,7 +215,7 @@ static void locomo_key_handler(unsigned int irq, struct irqdesc *desc, ...@@ -215,7 +215,7 @@ static void locomo_key_handler(unsigned int irq, struct irqdesc *desc,
struct pt_regs *regs) struct pt_regs *regs)
{ {
struct irqdesc *d; struct irqdesc *d;
void *mapbase = get_irq_chipdata(irq); void __iomem *mapbase = get_irq_chipdata(irq);
if (locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC) & 0x0001) { if (locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC) & 0x0001) {
d = irq_desc + LOCOMO_IRQ_KEY_START; d = irq_desc + LOCOMO_IRQ_KEY_START;
...@@ -225,7 +225,7 @@ static void locomo_key_handler(unsigned int irq, struct irqdesc *desc, ...@@ -225,7 +225,7 @@ static void locomo_key_handler(unsigned int irq, struct irqdesc *desc,
static void locomo_key_ack_irq(unsigned int irq) static void locomo_key_ack_irq(unsigned int irq)
{ {
void *mapbase = get_irq_chipdata(irq); void __iomem *mapbase = get_irq_chipdata(irq);
unsigned int r; unsigned int r;
r = locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC); r = locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC);
r &= ~(0x0100 << (irq - LOCOMO_IRQ_KEY_START)); r &= ~(0x0100 << (irq - LOCOMO_IRQ_KEY_START));
...@@ -234,7 +234,7 @@ static void locomo_key_ack_irq(unsigned int irq) ...@@ -234,7 +234,7 @@ static void locomo_key_ack_irq(unsigned int irq)
static void locomo_key_mask_irq(unsigned int irq) static void locomo_key_mask_irq(unsigned int irq)
{ {
void *mapbase = get_irq_chipdata(irq); void __iomem *mapbase = get_irq_chipdata(irq);
unsigned int r; unsigned int r;
r = locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC); r = locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC);
r &= ~(0x0010 << (irq - LOCOMO_IRQ_KEY_START)); r &= ~(0x0010 << (irq - LOCOMO_IRQ_KEY_START));
...@@ -243,7 +243,7 @@ static void locomo_key_mask_irq(unsigned int irq) ...@@ -243,7 +243,7 @@ static void locomo_key_mask_irq(unsigned int irq)
static void locomo_key_unmask_irq(unsigned int irq) static void locomo_key_unmask_irq(unsigned int irq)
{ {
void *mapbase = get_irq_chipdata(irq); void __iomem *mapbase = get_irq_chipdata(irq);
unsigned int r; unsigned int r;
r = locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC); r = locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC);
r |= (0x0010 << (irq - LOCOMO_IRQ_KEY_START)); r |= (0x0010 << (irq - LOCOMO_IRQ_KEY_START));
...@@ -261,7 +261,7 @@ static void locomo_gpio_handler(unsigned int irq, struct irqdesc *desc, ...@@ -261,7 +261,7 @@ static void locomo_gpio_handler(unsigned int irq, struct irqdesc *desc,
{ {
int req, i; int req, i;
struct irqdesc *d; struct irqdesc *d;
void *mapbase = get_irq_chipdata(irq); void __iomem *mapbase = get_irq_chipdata(irq);
req = locomo_readl(mapbase + LOCOMO_GIR) & req = locomo_readl(mapbase + LOCOMO_GIR) &
locomo_readl(mapbase + LOCOMO_GPD) & locomo_readl(mapbase + LOCOMO_GPD) &
...@@ -280,7 +280,7 @@ static void locomo_gpio_handler(unsigned int irq, struct irqdesc *desc, ...@@ -280,7 +280,7 @@ static void locomo_gpio_handler(unsigned int irq, struct irqdesc *desc,
static void locomo_gpio_ack_irq(unsigned int irq) static void locomo_gpio_ack_irq(unsigned int irq)
{ {
void *mapbase = get_irq_chipdata(irq); void __iomem *mapbase = get_irq_chipdata(irq);
unsigned int r; unsigned int r;
r = locomo_readl(mapbase + LOCOMO_GWE); r = locomo_readl(mapbase + LOCOMO_GWE);
r |= (0x0001 << (irq - LOCOMO_IRQ_GPIO_START)); r |= (0x0001 << (irq - LOCOMO_IRQ_GPIO_START));
...@@ -297,7 +297,7 @@ static void locomo_gpio_ack_irq(unsigned int irq) ...@@ -297,7 +297,7 @@ static void locomo_gpio_ack_irq(unsigned int irq)
static void locomo_gpio_mask_irq(unsigned int irq) static void locomo_gpio_mask_irq(unsigned int irq)
{ {
void *mapbase = get_irq_chipdata(irq); void __iomem *mapbase = get_irq_chipdata(irq);
unsigned int r; unsigned int r;
r = locomo_readl(mapbase + LOCOMO_GIE); r = locomo_readl(mapbase + LOCOMO_GIE);
r &= ~(0x0001 << (irq - LOCOMO_IRQ_GPIO_START)); r &= ~(0x0001 << (irq - LOCOMO_IRQ_GPIO_START));
...@@ -306,7 +306,7 @@ static void locomo_gpio_mask_irq(unsigned int irq) ...@@ -306,7 +306,7 @@ static void locomo_gpio_mask_irq(unsigned int irq)
static void locomo_gpio_unmask_irq(unsigned int irq) static void locomo_gpio_unmask_irq(unsigned int irq)
{ {
void *mapbase = get_irq_chipdata(irq); void __iomem *mapbase = get_irq_chipdata(irq);
unsigned int r; unsigned int r;
r = locomo_readl(mapbase + LOCOMO_GIE); r = locomo_readl(mapbase + LOCOMO_GIE);
r |= (0x0001 << (irq - LOCOMO_IRQ_GPIO_START)); r |= (0x0001 << (irq - LOCOMO_IRQ_GPIO_START));
...@@ -323,7 +323,7 @@ static void locomo_lt_handler(unsigned int irq, struct irqdesc *desc, ...@@ -323,7 +323,7 @@ static void locomo_lt_handler(unsigned int irq, struct irqdesc *desc,
struct pt_regs *regs) struct pt_regs *regs)
{ {
struct irqdesc *d; struct irqdesc *d;
void *mapbase = get_irq_chipdata(irq); void __iomem *mapbase = get_irq_chipdata(irq);
if (locomo_readl(mapbase + LOCOMO_LTINT) & 0x0001) { if (locomo_readl(mapbase + LOCOMO_LTINT) & 0x0001) {
d = irq_desc + LOCOMO_IRQ_LT_START; d = irq_desc + LOCOMO_IRQ_LT_START;
...@@ -333,7 +333,7 @@ static void locomo_lt_handler(unsigned int irq, struct irqdesc *desc, ...@@ -333,7 +333,7 @@ static void locomo_lt_handler(unsigned int irq, struct irqdesc *desc,
static void locomo_lt_ack_irq(unsigned int irq) static void locomo_lt_ack_irq(unsigned int irq)
{ {
void *mapbase = get_irq_chipdata(irq); void __iomem *mapbase = get_irq_chipdata(irq);
unsigned int r; unsigned int r;
r = locomo_readl(mapbase + LOCOMO_LTINT); r = locomo_readl(mapbase + LOCOMO_LTINT);
r &= ~(0x0100 << (irq - LOCOMO_IRQ_LT_START)); r &= ~(0x0100 << (irq - LOCOMO_IRQ_LT_START));
...@@ -342,7 +342,7 @@ static void locomo_lt_ack_irq(unsigned int irq) ...@@ -342,7 +342,7 @@ static void locomo_lt_ack_irq(unsigned int irq)
static void locomo_lt_mask_irq(unsigned int irq) static void locomo_lt_mask_irq(unsigned int irq)
{ {
void *mapbase = get_irq_chipdata(irq); void __iomem *mapbase = get_irq_chipdata(irq);
unsigned int r; unsigned int r;
r = locomo_readl(mapbase + LOCOMO_LTINT); r = locomo_readl(mapbase + LOCOMO_LTINT);
r &= ~(0x0010 << (irq - LOCOMO_IRQ_LT_START)); r &= ~(0x0010 << (irq - LOCOMO_IRQ_LT_START));
...@@ -351,7 +351,7 @@ static void locomo_lt_mask_irq(unsigned int irq) ...@@ -351,7 +351,7 @@ static void locomo_lt_mask_irq(unsigned int irq)
static void locomo_lt_unmask_irq(unsigned int irq) static void locomo_lt_unmask_irq(unsigned int irq)
{ {
void *mapbase = get_irq_chipdata(irq); void __iomem *mapbase = get_irq_chipdata(irq);
unsigned int r; unsigned int r;
r = locomo_readl(mapbase + LOCOMO_LTINT); r = locomo_readl(mapbase + LOCOMO_LTINT);
r |= (0x0010 << (irq - LOCOMO_IRQ_LT_START)); r |= (0x0010 << (irq - LOCOMO_IRQ_LT_START));
...@@ -369,7 +369,7 @@ static void locomo_spi_handler(unsigned int irq, struct irqdesc *desc, ...@@ -369,7 +369,7 @@ static void locomo_spi_handler(unsigned int irq, struct irqdesc *desc,
{ {
int req, i; int req, i;
struct irqdesc *d; struct irqdesc *d;
void *mapbase = get_irq_chipdata(irq); void __iomem *mapbase = get_irq_chipdata(irq);
req = locomo_readl(mapbase + LOCOMO_SPIIR) & 0x000F; req = locomo_readl(mapbase + LOCOMO_SPIIR) & 0x000F;
if (req) { if (req) {
...@@ -386,7 +386,7 @@ static void locomo_spi_handler(unsigned int irq, struct irqdesc *desc, ...@@ -386,7 +386,7 @@ static void locomo_spi_handler(unsigned int irq, struct irqdesc *desc,
static void locomo_spi_ack_irq(unsigned int irq) static void locomo_spi_ack_irq(unsigned int irq)
{ {
void *mapbase = get_irq_chipdata(irq); void __iomem *mapbase = get_irq_chipdata(irq);
unsigned int r; unsigned int r;
r = locomo_readl(mapbase + LOCOMO_SPIWE); r = locomo_readl(mapbase + LOCOMO_SPIWE);
r |= (0x0001 << (irq - LOCOMO_IRQ_SPI_START)); r |= (0x0001 << (irq - LOCOMO_IRQ_SPI_START));
...@@ -403,7 +403,7 @@ static void locomo_spi_ack_irq(unsigned int irq) ...@@ -403,7 +403,7 @@ static void locomo_spi_ack_irq(unsigned int irq)
static void locomo_spi_mask_irq(unsigned int irq) static void locomo_spi_mask_irq(unsigned int irq)
{ {
void *mapbase = get_irq_chipdata(irq); void __iomem *mapbase = get_irq_chipdata(irq);
unsigned int r; unsigned int r;
r = locomo_readl(mapbase + LOCOMO_SPIIE); r = locomo_readl(mapbase + LOCOMO_SPIIE);
r &= ~(0x0001 << (irq - LOCOMO_IRQ_SPI_START)); r &= ~(0x0001 << (irq - LOCOMO_IRQ_SPI_START));
...@@ -412,7 +412,7 @@ static void locomo_spi_mask_irq(unsigned int irq) ...@@ -412,7 +412,7 @@ static void locomo_spi_mask_irq(unsigned int irq)
static void locomo_spi_unmask_irq(unsigned int irq) static void locomo_spi_unmask_irq(unsigned int irq)
{ {
void *mapbase = get_irq_chipdata(irq); void __iomem *mapbase = get_irq_chipdata(irq);
unsigned int r; unsigned int r;
r = locomo_readl(mapbase + LOCOMO_SPIIE); r = locomo_readl(mapbase + LOCOMO_SPIIE);
r |= (0x0001 << (irq - LOCOMO_IRQ_SPI_START)); r |= (0x0001 << (irq - LOCOMO_IRQ_SPI_START));
...@@ -428,7 +428,7 @@ static struct irqchip locomo_spi_chip = { ...@@ -428,7 +428,7 @@ static struct irqchip locomo_spi_chip = {
static void locomo_setup_irq(struct locomo *lchip) static void locomo_setup_irq(struct locomo *lchip)
{ {
int irq; int irq;
void *irqbase = lchip->base; void __iomem *irqbase = lchip->base;
/* /*
* Install handler for IRQ_LOCOMO_HW. * Install handler for IRQ_LOCOMO_HW.
...@@ -501,12 +501,11 @@ locomo_init_one_child(struct locomo *lchip, struct locomo_dev_info *info) ...@@ -501,12 +501,11 @@ locomo_init_one_child(struct locomo *lchip, struct locomo_dev_info *info)
struct locomo_dev *dev; struct locomo_dev *dev;
int ret; int ret;
dev = kmalloc(sizeof(struct locomo_dev), GFP_KERNEL); dev = kzalloc(sizeof(struct locomo_dev), GFP_KERNEL);
if (!dev) { if (!dev) {
ret = -ENOMEM; ret = -ENOMEM;
goto out; goto out;
} }
memset(dev, 0, sizeof(struct locomo_dev));
strncpy(dev->dev.bus_id,info->name,sizeof(dev->dev.bus_id)); strncpy(dev->dev.bus_id,info->name,sizeof(dev->dev.bus_id));
/* /*
...@@ -664,12 +663,10 @@ __locomo_probe(struct device *me, struct resource *mem, int irq) ...@@ -664,12 +663,10 @@ __locomo_probe(struct device *me, struct resource *mem, int irq)
unsigned long r; unsigned long r;
int i, ret = -ENODEV; int i, ret = -ENODEV;
lchip = kmalloc(sizeof(struct locomo), GFP_KERNEL); lchip = kzalloc(sizeof(struct locomo), GFP_KERNEL);
if (!lchip) if (!lchip)
return -ENOMEM; return -ENOMEM;
memset(lchip, 0, sizeof(struct locomo));
spin_lock_init(&lchip->lock); spin_lock_init(&lchip->lock);
lchip->dev = me; lchip->dev = me;
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/clk.h>
#include <asm/hardware.h> #include <asm/hardware.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
...@@ -36,10 +37,6 @@ ...@@ -36,10 +37,6 @@
#include <asm/hardware/sa1111.h> #include <asm/hardware/sa1111.h>
#ifdef CONFIG_ARCH_PXA
#include <asm/arch/pxa-regs.h>
#endif
extern void __init sa1110_mb_enable(void); extern void __init sa1110_mb_enable(void);
/* /*
...@@ -51,6 +48,7 @@ extern void __init sa1110_mb_enable(void); ...@@ -51,6 +48,7 @@ extern void __init sa1110_mb_enable(void);
*/ */
struct sa1111 { struct sa1111 {
struct device *dev; struct device *dev;
struct clk *clk;
unsigned long phys; unsigned long phys;
int irq; int irq;
spinlock_t lock; spinlock_t lock;
...@@ -451,19 +449,7 @@ static void sa1111_wake(struct sa1111 *sachip) ...@@ -451,19 +449,7 @@ static void sa1111_wake(struct sa1111 *sachip)
spin_lock_irqsave(&sachip->lock, flags); spin_lock_irqsave(&sachip->lock, flags);
#ifdef CONFIG_ARCH_SA1100 clk_enable(sachip->clk);
/*
* First, set up the 3.6864MHz clock on GPIO 27 for the SA-1111:
* (SA-1110 Developer's Manual, section 9.1.2.1)
*/
GAFR |= GPIO_32_768kHz;
GPDR |= GPIO_32_768kHz;
TUCR = TUCR_3_6864MHz;
#elif CONFIG_ARCH_PXA
pxa_gpio_mode(GPIO11_3_6MHz_MD);
#else
#error missing clock setup
#endif
/* /*
* Turn VCO on, and disable PLL Bypass. * Turn VCO on, and disable PLL Bypass.
...@@ -555,12 +541,11 @@ sa1111_init_one_child(struct sa1111 *sachip, struct resource *parent, ...@@ -555,12 +541,11 @@ sa1111_init_one_child(struct sa1111 *sachip, struct resource *parent,
struct sa1111_dev *dev; struct sa1111_dev *dev;
int ret; int ret;
dev = kmalloc(sizeof(struct sa1111_dev), GFP_KERNEL); dev = kzalloc(sizeof(struct sa1111_dev), GFP_KERNEL);
if (!dev) { if (!dev) {
ret = -ENOMEM; ret = -ENOMEM;
goto out; goto out;
} }
memset(dev, 0, sizeof(struct sa1111_dev));
snprintf(dev->dev.bus_id, sizeof(dev->dev.bus_id), snprintf(dev->dev.bus_id, sizeof(dev->dev.bus_id),
"%4.4lx", info->offset); "%4.4lx", info->offset);
...@@ -635,11 +620,15 @@ __sa1111_probe(struct device *me, struct resource *mem, int irq) ...@@ -635,11 +620,15 @@ __sa1111_probe(struct device *me, struct resource *mem, int irq)
unsigned int has_devs, val; unsigned int has_devs, val;
int i, ret = -ENODEV; int i, ret = -ENODEV;
sachip = kmalloc(sizeof(struct sa1111), GFP_KERNEL); sachip = kzalloc(sizeof(struct sa1111), GFP_KERNEL);
if (!sachip) if (!sachip)
return -ENOMEM; return -ENOMEM;
memset(sachip, 0, sizeof(struct sa1111)); sachip->clk = clk_get(me, "GPIO27_CLK");
if (!sachip->clk) {
ret = PTR_ERR(sachip->clk);
goto err_free;
}
spin_lock_init(&sachip->lock); spin_lock_init(&sachip->lock);
...@@ -656,7 +645,7 @@ __sa1111_probe(struct device *me, struct resource *mem, int irq) ...@@ -656,7 +645,7 @@ __sa1111_probe(struct device *me, struct resource *mem, int irq)
sachip->base = ioremap(mem->start, PAGE_SIZE * 2); sachip->base = ioremap(mem->start, PAGE_SIZE * 2);
if (!sachip->base) { if (!sachip->base) {
ret = -ENOMEM; ret = -ENOMEM;
goto out; goto err_clkput;
} }
/* /*
...@@ -666,7 +655,7 @@ __sa1111_probe(struct device *me, struct resource *mem, int irq) ...@@ -666,7 +655,7 @@ __sa1111_probe(struct device *me, struct resource *mem, int irq)
if ((id & SKID_ID_MASK) != SKID_SA1111_ID) { if ((id & SKID_ID_MASK) != SKID_SA1111_ID) {
printk(KERN_DEBUG "SA1111 not detected: ID = %08lx\n", id); printk(KERN_DEBUG "SA1111 not detected: ID = %08lx\n", id);
ret = -ENODEV; ret = -ENODEV;
goto unmap; goto err_unmap;
} }
printk(KERN_INFO "SA1111 Microprocessor Companion Chip: " printk(KERN_INFO "SA1111 Microprocessor Companion Chip: "
...@@ -726,9 +715,11 @@ __sa1111_probe(struct device *me, struct resource *mem, int irq) ...@@ -726,9 +715,11 @@ __sa1111_probe(struct device *me, struct resource *mem, int irq)
return 0; return 0;
unmap: err_unmap:
iounmap(sachip->base); iounmap(sachip->base);
out: err_clkput:
clk_put(sachip->clk);
err_free:
kfree(sachip); kfree(sachip);
return ret; return ret;
} }
...@@ -751,6 +742,8 @@ static void __sa1111_remove(struct sa1111 *sachip) ...@@ -751,6 +742,8 @@ static void __sa1111_remove(struct sa1111 *sachip)
sa1111_writel(0, irqbase + SA1111_WAKEEN0); sa1111_writel(0, irqbase + SA1111_WAKEEN0);
sa1111_writel(0, irqbase + SA1111_WAKEEN1); sa1111_writel(0, irqbase + SA1111_WAKEEN1);
clk_disable(sachip->clk);
if (sachip->irq != NO_IRQ) { if (sachip->irq != NO_IRQ) {
set_irq_chained_handler(sachip->irq, NULL); set_irq_chained_handler(sachip->irq, NULL);
set_irq_data(sachip->irq, NULL); set_irq_data(sachip->irq, NULL);
...@@ -759,6 +752,7 @@ static void __sa1111_remove(struct sa1111 *sachip) ...@@ -759,6 +752,7 @@ static void __sa1111_remove(struct sa1111 *sachip)
} }
iounmap(sachip->base); iounmap(sachip->base);
clk_put(sachip->clk);
kfree(sachip); kfree(sachip);
} }
...@@ -857,6 +851,8 @@ static int sa1111_suspend(struct platform_device *dev, pm_message_t state) ...@@ -857,6 +851,8 @@ static int sa1111_suspend(struct platform_device *dev, pm_message_t state)
sa1111_writel(0, sachip->base + SA1111_SKPWM0); sa1111_writel(0, sachip->base + SA1111_SKPWM0);
sa1111_writel(0, sachip->base + SA1111_SKPWM1); sa1111_writel(0, sachip->base + SA1111_SKPWM1);
clk_disable(sachip->clk);
spin_unlock_irqrestore(&sachip->lock, flags); spin_unlock_irqrestore(&sachip->lock, flags);
return 0; return 0;
......
...@@ -132,12 +132,10 @@ int __init scoop_probe(struct platform_device *pdev) ...@@ -132,12 +132,10 @@ int __init scoop_probe(struct platform_device *pdev)
if (!mem) if (!mem)
return -EINVAL; return -EINVAL;
devptr = kmalloc(sizeof(struct scoop_dev), GFP_KERNEL); devptr = kzalloc(sizeof(struct scoop_dev), GFP_KERNEL);
if (!devptr) if (!devptr)
return -ENOMEM; return -ENOMEM;
memset(devptr, 0, sizeof(struct scoop_dev));
spin_lock_init(&devptr->scoop_lock); spin_lock_init(&devptr->scoop_lock);
inf = pdev->dev.platform_data; inf = pdev->dev.platform_data;
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
#include <linux/string.h> #include <linux/string.h>
#include <asm/hardware.h> #include <asm/hardware.h>
#include <asm/arch/ixp2000-regs.h> #include <asm/arch/ixp2000-regs.h>
#include <asm/arch/uengine.h> #include <asm/hardware/uengine.h>
#include <asm/io.h> #include <asm/io.h>
#define USTORE_ADDRESS 0x000 #define USTORE_ADDRESS 0x000
......
...@@ -22,22 +22,21 @@ ...@@ -22,22 +22,21 @@
#include <linux/list.h> #include <linux/list.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/irq.h>
#include <asm/mach/irq.h> #include <asm/mach/irq.h>
#include <asm/hardware/vic.h> #include <asm/hardware/vic.h>
static void __iomem *vic_base;
static void vic_mask_irq(unsigned int irq) static void vic_mask_irq(unsigned int irq)
{ {
irq -= IRQ_VIC_START; void __iomem *base = get_irq_chipdata(irq);
writel(1 << irq, vic_base + VIC_INT_ENABLE_CLEAR); irq &= 31;
writel(1 << irq, base + VIC_INT_ENABLE_CLEAR);
} }
static void vic_unmask_irq(unsigned int irq) static void vic_unmask_irq(unsigned int irq)
{ {
irq -= IRQ_VIC_START; void __iomem *base = get_irq_chipdata(irq);
writel(1 << irq, vic_base + VIC_INT_ENABLE); irq &= 31;
writel(1 << irq, base + VIC_INT_ENABLE);
} }
static struct irqchip vic_chip = { static struct irqchip vic_chip = {
...@@ -46,43 +45,49 @@ static struct irqchip vic_chip = { ...@@ -46,43 +45,49 @@ static struct irqchip vic_chip = {
.unmask = vic_unmask_irq, .unmask = vic_unmask_irq,
}; };
void __init vic_init(void __iomem *base, u32 vic_sources) /**
* vic_init - initialise a vectored interrupt controller
* @base: iomem base address
* @irq_start: starting interrupt number, must be muliple of 32
* @vic_sources: bitmask of interrupt sources to allow
*/
void __init vic_init(void __iomem *base, unsigned int irq_start,
u32 vic_sources)
{ {
unsigned int i; unsigned int i;
vic_base = base;
/* Disable all interrupts initially. */ /* Disable all interrupts initially. */
writel(0, vic_base + VIC_INT_SELECT); writel(0, base + VIC_INT_SELECT);
writel(0, vic_base + VIC_INT_ENABLE); writel(0, base + VIC_INT_ENABLE);
writel(~0, vic_base + VIC_INT_ENABLE_CLEAR); writel(~0, base + VIC_INT_ENABLE_CLEAR);
writel(0, vic_base + VIC_IRQ_STATUS); writel(0, base + VIC_IRQ_STATUS);
writel(0, vic_base + VIC_ITCR); writel(0, base + VIC_ITCR);
writel(~0, vic_base + VIC_INT_SOFT_CLEAR); writel(~0, base + VIC_INT_SOFT_CLEAR);
/* /*
* Make sure we clear all existing interrupts * Make sure we clear all existing interrupts
*/ */
writel(0, vic_base + VIC_VECT_ADDR); writel(0, base + VIC_VECT_ADDR);
for (i = 0; i < 19; i++) { for (i = 0; i < 19; i++) {
unsigned int value; unsigned int value;
value = readl(vic_base + VIC_VECT_ADDR); value = readl(base + VIC_VECT_ADDR);
writel(value, vic_base + VIC_VECT_ADDR); writel(value, base + VIC_VECT_ADDR);
} }
for (i = 0; i < 16; i++) { for (i = 0; i < 16; i++) {
void __iomem *reg = vic_base + VIC_VECT_CNTL0 + (i * 4); void __iomem *reg = base + VIC_VECT_CNTL0 + (i * 4);
writel(VIC_VECT_CNTL_ENABLE | i, reg); writel(VIC_VECT_CNTL_ENABLE | i, reg);
} }
writel(32, vic_base + VIC_DEF_VECT_ADDR); writel(32, base + VIC_DEF_VECT_ADDR);
for (i = 0; i < 32; i++) { for (i = 0; i < 32; i++) {
unsigned int irq = IRQ_VIC_START + i; unsigned int irq = irq_start + i;
set_irq_chip(irq, &vic_chip); set_irq_chip(irq, &vic_chip);
set_irq_chipdata(irq, base);
if (vic_sources & (1 << i)) { if (vic_sources & (1 << i)) {
set_irq_handler(irq, do_level_IRQ); set_irq_handler(irq, do_level_IRQ);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.14-git13 # Linux kernel version: 2.6.16-rc2
# Thu Nov 10 15:14:13 2005 # Wed Feb 8 04:49:11 2006
# #
CONFIG_ARM=y CONFIG_ARM=y
CONFIG_MMU=y CONFIG_MMU=y
CONFIG_UID16=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_CALIBRATE_DELAY=y
...@@ -29,27 +28,31 @@ CONFIG_BSD_PROCESS_ACCT=y ...@@ -29,27 +28,31 @@ CONFIG_BSD_PROCESS_ACCT=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set # CONFIG_BSD_PROCESS_ACCT_V3 is not set
CONFIG_SYSCTL=y CONFIG_SYSCTL=y
# CONFIG_AUDIT is not set # CONFIG_AUDIT is not set
# CONFIG_HOTPLUG is not set
CONFIG_KOBJECT_UEVENT=y
# CONFIG_IKCONFIG is not set # CONFIG_IKCONFIG is not set
CONFIG_INITRAMFS_SOURCE="" CONFIG_INITRAMFS_SOURCE=""
CONFIG_UID16=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_EMBEDDED=y CONFIG_EMBEDDED=y
CONFIG_KALLSYMS=y CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set # CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set # CONFIG_KALLSYMS_EXTRA_PASS is not set
# CONFIG_HOTPLUG is not set
CONFIG_PRINTK=y CONFIG_PRINTK=y
CONFIG_BUG=y CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y CONFIG_BASE_FULL=y
CONFIG_FUTEX=y CONFIG_FUTEX=y
CONFIG_EPOLL=y CONFIG_EPOLL=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SHMEM=y CONFIG_SHMEM=y
CONFIG_CC_ALIGN_FUNCTIONS=0 CONFIG_CC_ALIGN_FUNCTIONS=0
CONFIG_CC_ALIGN_LABELS=0 CONFIG_CC_ALIGN_LABELS=0
CONFIG_CC_ALIGN_LOOPS=0 CONFIG_CC_ALIGN_LOOPS=0
CONFIG_CC_ALIGN_JUMPS=0 CONFIG_CC_ALIGN_JUMPS=0
CONFIG_SLAB=y
# CONFIG_TINY_SHMEM is not set # CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0 CONFIG_BASE_SMALL=0
# CONFIG_SLOB is not set
CONFIG_OBSOLETE_INTERMODULE=y
# #
# Loadable module support # Loadable module support
...@@ -104,6 +107,7 @@ CONFIG_ARCH_IXP2000=y ...@@ -104,6 +107,7 @@ CONFIG_ARCH_IXP2000=y
# CONFIG_ARCH_IMX is not set # CONFIG_ARCH_IMX is not set
# CONFIG_ARCH_H720X is not set # CONFIG_ARCH_H720X is not set
# CONFIG_ARCH_AAEC2000 is not set # CONFIG_ARCH_AAEC2000 is not set
# CONFIG_ARCH_AT91RM9200 is not set
CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
# #
...@@ -113,12 +117,13 @@ CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y ...@@ -113,12 +117,13 @@ CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
# #
# IXP2400/2800 Platforms # IXP2400/2800 Platforms
# #
# CONFIG_ARCH_ENP2611 is not set CONFIG_ARCH_ENP2611=y
CONFIG_ARCH_IXDP2400=y CONFIG_ARCH_IXDP2400=y
# CONFIG_ARCH_IXDP2800 is not set CONFIG_ARCH_IXDP2800=y
CONFIG_ARCH_IXDP2X00=y CONFIG_ARCH_IXDP2X00=y
# CONFIG_ARCH_IXDP2401 is not set CONFIG_ARCH_IXDP2401=y
# CONFIG_ARCH_IXDP2801 is not set CONFIG_ARCH_IXDP2801=y
CONFIG_ARCH_IXDP2X01=y
# CONFIG_IXP2000_SUPPORT_BROKEN_PCI_IO is not set # CONFIG_IXP2000_SUPPORT_BROKEN_PCI_IO is not set
# #
...@@ -141,7 +146,6 @@ CONFIG_XSCALE_PMU=y ...@@ -141,7 +146,6 @@ CONFIG_XSCALE_PMU=y
# #
# Bus support # Bus support
# #
CONFIG_ISA_DMA_API=y
CONFIG_PCI=y CONFIG_PCI=y
CONFIG_PCI_LEGACY_PROC=y CONFIG_PCI_LEGACY_PROC=y
# CONFIG_PCI_DEBUG is not set # CONFIG_PCI_DEBUG is not set
...@@ -156,6 +160,7 @@ CONFIG_PCI_LEGACY_PROC=y ...@@ -156,6 +160,7 @@ CONFIG_PCI_LEGACY_PROC=y
# #
# CONFIG_PREEMPT is not set # CONFIG_PREEMPT is not set
# CONFIG_NO_IDLE_HZ is not set # CONFIG_NO_IDLE_HZ is not set
# CONFIG_AEABI is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y CONFIG_FLATMEM_MANUAL=y
...@@ -198,6 +203,7 @@ CONFIG_BINFMT_ELF=y ...@@ -198,6 +203,7 @@ CONFIG_BINFMT_ELF=y
# Power management options # Power management options
# #
# CONFIG_PM is not set # CONFIG_PM is not set
# CONFIG_APM is not set
# #
# Networking # Networking
...@@ -243,6 +249,11 @@ CONFIG_TCP_CONG_BIC=y ...@@ -243,6 +249,11 @@ CONFIG_TCP_CONG_BIC=y
# SCTP Configuration (EXPERIMENTAL) # SCTP Configuration (EXPERIMENTAL)
# #
# CONFIG_IP_SCTP is not set # CONFIG_IP_SCTP is not set
#
# TIPC Configuration (EXPERIMENTAL)
#
# CONFIG_TIPC is not set
# CONFIG_ATM is not set # CONFIG_ATM is not set
# CONFIG_BRIDGE is not set # CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set # CONFIG_VLAN_8021Q is not set
...@@ -260,7 +271,6 @@ CONFIG_TCP_CONG_BIC=y ...@@ -260,7 +271,6 @@ CONFIG_TCP_CONG_BIC=y
# QoS and/or fair queueing # QoS and/or fair queueing
# #
# CONFIG_NET_SCHED is not set # CONFIG_NET_SCHED is not set
# CONFIG_NET_CLS_ROUTE is not set
# #
# Network testing # Network testing
...@@ -283,6 +293,11 @@ CONFIG_STANDALONE=y ...@@ -283,6 +293,11 @@ CONFIG_STANDALONE=y
# CONFIG_FW_LOADER is not set # CONFIG_FW_LOADER is not set
# CONFIG_DEBUG_DRIVER is not set # CONFIG_DEBUG_DRIVER is not set
#
# Connector - unified userspace <-> kernelspace linker
#
# CONFIG_CONNECTOR is not set
# #
# Memory Technology Devices (MTD) # Memory Technology Devices (MTD)
# #
...@@ -331,6 +346,7 @@ CONFIG_MTD_CFI_UTIL=y ...@@ -331,6 +346,7 @@ CONFIG_MTD_CFI_UTIL=y
# CONFIG_MTD_RAM is not set # CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set # CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set # CONFIG_MTD_ABSENT is not set
# CONFIG_MTD_OBSOLETE_CHIPS is not set
# CONFIG_MTD_XIP is not set # CONFIG_MTD_XIP is not set
# #
...@@ -466,6 +482,7 @@ CONFIG_NET_PCI=y ...@@ -466,6 +482,7 @@ CONFIG_NET_PCI=y
# CONFIG_ADAPTEC_STARFIRE is not set # CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_B44 is not set # CONFIG_B44 is not set
# CONFIG_FORCEDETH is not set # CONFIG_FORCEDETH is not set
CONFIG_CS89x0=y
# CONFIG_DGRS is not set # CONFIG_DGRS is not set
CONFIG_EEPRO100=y CONFIG_EEPRO100=y
# CONFIG_E100 is not set # CONFIG_E100 is not set
...@@ -486,12 +503,14 @@ CONFIG_EEPRO100=y ...@@ -486,12 +503,14 @@ CONFIG_EEPRO100=y
# CONFIG_ACENIC is not set # CONFIG_ACENIC is not set
# CONFIG_DL2K is not set # CONFIG_DL2K is not set
# CONFIG_E1000 is not set # CONFIG_E1000 is not set
CONFIG_ENP2611_MSF_NET=y
# CONFIG_NS83820 is not set # CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set # CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set # CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set # CONFIG_R8169 is not set
# CONFIG_SIS190 is not set # CONFIG_SIS190 is not set
# CONFIG_SKGE is not set # CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
# CONFIG_SK98LIN is not set # CONFIG_SK98LIN is not set
# CONFIG_VIA_VELOCITY is not set # CONFIG_VIA_VELOCITY is not set
# CONFIG_TIGON3 is not set # CONFIG_TIGON3 is not set
...@@ -595,7 +614,8 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 ...@@ -595,7 +614,8 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# #
CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=1 CONFIG_SERIAL_8250_NR_UARTS=3
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
# CONFIG_SERIAL_8250_EXTENDED is not set # CONFIG_SERIAL_8250_EXTENDED is not set
# #
...@@ -603,7 +623,6 @@ CONFIG_SERIAL_8250_NR_UARTS=1 ...@@ -603,7 +623,6 @@ CONFIG_SERIAL_8250_NR_UARTS=1
# #
CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256 CONFIG_LEGACY_PTY_COUNT=256
...@@ -704,6 +723,12 @@ CONFIG_SENSORS_EEPROM=y ...@@ -704,6 +723,12 @@ CONFIG_SENSORS_EEPROM=y
# CONFIG_I2C_DEBUG_BUS is not set # CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set # CONFIG_I2C_DEBUG_CHIP is not set
#
# SPI support
#
# CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set
# #
# Hardware Monitoring support # Hardware Monitoring support
# #
...@@ -738,6 +763,7 @@ CONFIG_HWMON=y ...@@ -738,6 +763,7 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_SMSC47M1 is not set # CONFIG_SENSORS_SMSC47M1 is not set
# CONFIG_SENSORS_SMSC47B397 is not set # CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_VIA686A is not set # CONFIG_SENSORS_VIA686A is not set
# CONFIG_SENSORS_VT8231 is not set
# CONFIG_SENSORS_W83781D is not set # CONFIG_SENSORS_W83781D is not set
# CONFIG_SENSORS_W83792D is not set # CONFIG_SENSORS_W83792D is not set
# CONFIG_SENSORS_W83L785TS is not set # CONFIG_SENSORS_W83L785TS is not set
...@@ -813,6 +839,7 @@ CONFIG_FS_MBCACHE=y ...@@ -813,6 +839,7 @@ CONFIG_FS_MBCACHE=y
# CONFIG_JFS_FS is not set # CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set # CONFIG_XFS_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set # CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set # CONFIG_ROMFS_FS is not set
CONFIG_INOTIFY=y CONFIG_INOTIFY=y
...@@ -844,6 +871,7 @@ CONFIG_TMPFS=y ...@@ -844,6 +871,7 @@ CONFIG_TMPFS=y
# CONFIG_HUGETLB_PAGE is not set # CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y CONFIG_RAMFS=y
# CONFIG_RELAYFS_FS is not set # CONFIG_RELAYFS_FS is not set
# CONFIG_CONFIGFS_FS is not set
# #
# Miscellaneous filesystems # Miscellaneous filesystems
...@@ -912,6 +940,7 @@ CONFIG_MSDOS_PARTITION=y ...@@ -912,6 +940,7 @@ CONFIG_MSDOS_PARTITION=y
# CONFIG_SGI_PARTITION is not set # CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set # CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set # CONFIG_SUN_PARTITION is not set
# CONFIG_KARMA_PARTITION is not set
# CONFIG_EFI_PARTITION is not set # CONFIG_EFI_PARTITION is not set
# #
...@@ -928,12 +957,13 @@ CONFIG_MSDOS_PARTITION=y ...@@ -928,12 +957,13 @@ CONFIG_MSDOS_PARTITION=y
# Kernel hacking # Kernel hacking
# #
# CONFIG_PRINTK_TIME is not set # CONFIG_PRINTK_TIME is not set
CONFIG_DEBUG_KERNEL=y
CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_KERNEL=y
CONFIG_LOG_BUF_SHIFT=14 CONFIG_LOG_BUF_SHIFT=14
CONFIG_DETECT_SOFTLOCKUP=y CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set # CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_MUTEXES=y
# CONFIG_DEBUG_SPINLOCK is not set # CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_KOBJECT is not set # CONFIG_DEBUG_KOBJECT is not set
...@@ -942,6 +972,7 @@ CONFIG_DEBUG_BUGVERBOSE=y ...@@ -942,6 +972,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_FS is not set # CONFIG_DEBUG_FS is not set
# CONFIG_DEBUG_VM is not set # CONFIG_DEBUG_VM is not set
CONFIG_FRAME_POINTER=y CONFIG_FRAME_POINTER=y
CONFIG_FORCED_INLINING=y
# CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_TORTURE_TEST is not set
CONFIG_DEBUG_USER=y CONFIG_DEBUG_USER=y
# CONFIG_DEBUG_WAITQ is not set # CONFIG_DEBUG_WAITQ is not set
......
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.16-rc2 # Linux kernel version: 2.6.16
# Mon Feb 6 11:17:23 2006 # Mon Mar 20 20:36:02 2006
# #
CONFIG_ARM=y CONFIG_ARM=y
CONFIG_MMU=y CONFIG_MMU=y
...@@ -12,7 +12,6 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y ...@@ -12,7 +12,6 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y
# Code maturity level options # Code maturity level options
# #
CONFIG_EXPERIMENTAL=y CONFIG_EXPERIMENTAL=y
CONFIG_CLEAN_COMPILE=y
CONFIG_BROKEN_ON_SMP=y CONFIG_BROKEN_ON_SMP=y
CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_INIT_ENV_ARG_LIMIT=32
...@@ -87,6 +86,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" ...@@ -87,6 +86,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
# CONFIG_ARCH_CLPS711X is not set # CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_CO285 is not set # CONFIG_ARCH_CO285 is not set
# CONFIG_ARCH_EBSA110 is not set # CONFIG_ARCH_EBSA110 is not set
# CONFIG_ARCH_EP93XX is not set
# CONFIG_ARCH_FOOTBRIDGE is not set # CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_INTEGRATOR is not set # CONFIG_ARCH_INTEGRATOR is not set
# CONFIG_ARCH_IOP3XX is not set # CONFIG_ARCH_IOP3XX is not set
...@@ -111,6 +111,7 @@ CONFIG_ARCH_S3C2410=y ...@@ -111,6 +111,7 @@ CONFIG_ARCH_S3C2410=y
# S3C24XX Implementations # S3C24XX Implementations
# #
CONFIG_MACH_ANUBIS=y CONFIG_MACH_ANUBIS=y
CONFIG_MACH_OSIRIS=y
CONFIG_ARCH_BAST=y CONFIG_ARCH_BAST=y
CONFIG_BAST_PC104_IRQ=y CONFIG_BAST_PC104_IRQ=y
CONFIG_ARCH_H1940=y CONFIG_ARCH_H1940=y
...@@ -175,6 +176,7 @@ CONFIG_ISA=y ...@@ -175,6 +176,7 @@ CONFIG_ISA=y
# #
# CONFIG_PREEMPT is not set # CONFIG_PREEMPT is not set
# CONFIG_NO_IDLE_HZ is not set # CONFIG_NO_IDLE_HZ is not set
CONFIG_HZ=200
# CONFIG_AEABI is not set # CONFIG_AEABI is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y CONFIG_SELECT_MEMORY_MODEL=y
...@@ -230,6 +232,7 @@ CONFIG_NET=y ...@@ -230,6 +232,7 @@ CONFIG_NET=y
# #
# Networking options # Networking options
# #
# CONFIG_NETDEBUG is not set
# CONFIG_PACKET is not set # CONFIG_PACKET is not set
CONFIG_UNIX=y CONFIG_UNIX=y
# CONFIG_NET_KEY is not set # CONFIG_NET_KEY is not set
...@@ -364,7 +367,6 @@ CONFIG_MTD_CFI_UTIL=y ...@@ -364,7 +367,6 @@ CONFIG_MTD_CFI_UTIL=y
CONFIG_MTD_ROM=y CONFIG_MTD_ROM=y
# CONFIG_MTD_ABSENT is not set # CONFIG_MTD_ABSENT is not set
# CONFIG_MTD_OBSOLETE_CHIPS is not set # CONFIG_MTD_OBSOLETE_CHIPS is not set
# CONFIG_MTD_XIP is not set
# #
# Mapping drivers for chip access # Mapping drivers for chip access
...@@ -431,6 +433,7 @@ CONFIG_PARPORT_1284=y ...@@ -431,6 +433,7 @@ CONFIG_PARPORT_1284=y
CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set # CONFIG_BLK_DEV_CRYPTOLOOP is not set
CONFIG_BLK_DEV_NBD=m CONFIG_BLK_DEV_NBD=m
# CONFIG_BLK_DEV_UB is not set
CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=4096 CONFIG_BLK_DEV_RAM_SIZE=4096
...@@ -623,7 +626,6 @@ CONFIG_SERIAL_NONSTANDARD=y ...@@ -623,7 +626,6 @@ CONFIG_SERIAL_NONSTANDARD=y
# CONFIG_MOXA_SMARTIO is not set # CONFIG_MOXA_SMARTIO is not set
# CONFIG_ISI is not set # CONFIG_ISI is not set
# CONFIG_SYNCLINKMP is not set # CONFIG_SYNCLINKMP is not set
# CONFIG_SYNCLINK_GT is not set
# CONFIG_N_HDLC is not set # CONFIG_N_HDLC is not set
# CONFIG_RISCOM8 is not set # CONFIG_RISCOM8 is not set
# CONFIG_SPECIALIX is not set # CONFIG_SPECIALIX is not set
...@@ -686,6 +688,11 @@ CONFIG_S3C2410_WATCHDOG=y ...@@ -686,6 +688,11 @@ CONFIG_S3C2410_WATCHDOG=y
# CONFIG_PCWATCHDOG is not set # CONFIG_PCWATCHDOG is not set
# CONFIG_MIXCOMWD is not set # CONFIG_MIXCOMWD is not set
# CONFIG_WDT is not set # CONFIG_WDT is not set
#
# USB-based Watchdog Cards
#
# CONFIG_USBPCWATCHDOG is not set
# CONFIG_NVRAM is not set # CONFIG_NVRAM is not set
# CONFIG_RTC is not set # CONFIG_RTC is not set
CONFIG_S3C2410_RTC=y CONFIG_S3C2410_RTC=y
...@@ -750,6 +757,11 @@ CONFIG_SENSORS_EEPROM=m ...@@ -750,6 +757,11 @@ CONFIG_SENSORS_EEPROM=m
# CONFIG_SPI is not set # CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set # CONFIG_SPI_MASTER is not set
#
# Dallas's 1-wire bus
#
# CONFIG_W1 is not set
# #
# Hardware Monitoring support # Hardware Monitoring support
# #
...@@ -763,6 +775,7 @@ CONFIG_HWMON_VID=m ...@@ -763,6 +775,7 @@ CONFIG_HWMON_VID=m
# CONFIG_SENSORS_ASB100 is not set # CONFIG_SENSORS_ASB100 is not set
# CONFIG_SENSORS_ATXP1 is not set # CONFIG_SENSORS_ATXP1 is not set
# CONFIG_SENSORS_DS1621 is not set # CONFIG_SENSORS_DS1621 is not set
# CONFIG_SENSORS_F71805F is not set
# CONFIG_SENSORS_FSCHER is not set # CONFIG_SENSORS_FSCHER is not set
# CONFIG_SENSORS_FSCPOS is not set # CONFIG_SENSORS_FSCPOS is not set
# CONFIG_SENSORS_GL518SM is not set # CONFIG_SENSORS_GL518SM is not set
...@@ -850,16 +863,138 @@ CONFIG_FONT_8x16=y ...@@ -850,16 +863,138 @@ CONFIG_FONT_8x16=y
# #
CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y CONFIG_USB_ARCH_HAS_OHCI=y
# CONFIG_USB is not set CONFIG_USB=y
# CONFIG_USB_DEBUG is not set
#
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_BANDWIDTH is not set
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_SUSPEND is not set
# CONFIG_USB_OTG is not set
#
# USB Host Controller Drivers
#
# CONFIG_USB_ISP116X_HCD is not set
CONFIG_USB_OHCI_HCD=y
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
# CONFIG_USB_SL811_HCD is not set
#
# USB Device Class drivers
#
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set
# #
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
# #
#
# may also be needed; see USB_STORAGE Help for more information
#
# CONFIG_USB_STORAGE is not set
# CONFIG_USB_LIBUSUAL is not set
#
# USB Input Devices
#
# CONFIG_USB_HID is not set
#
# USB HID Boot Protocol drivers
#
# CONFIG_USB_KBD is not set
# CONFIG_USB_MOUSE is not set
# CONFIG_USB_AIPTEK is not set
# CONFIG_USB_WACOM is not set
# CONFIG_USB_ACECAD is not set
# CONFIG_USB_KBTAB is not set
# CONFIG_USB_POWERMATE is not set
# CONFIG_USB_MTOUCH is not set
# CONFIG_USB_ITMTOUCH is not set
# CONFIG_USB_EGALAX is not set
# CONFIG_USB_YEALINK is not set
# CONFIG_USB_XPAD is not set
# CONFIG_USB_ATI_REMOTE is not set
# CONFIG_USB_ATI_REMOTE2 is not set
# CONFIG_USB_KEYSPAN_REMOTE is not set
# CONFIG_USB_APPLETOUCH is not set
#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
#
# USB Multimedia devices
#
# CONFIG_USB_DABUSB is not set
#
# Video4Linux support is needed for USB Multimedia device support
#
#
# USB Network Adapters
#
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_USBNET is not set
CONFIG_USB_MON=y
#
# USB port drivers
#
# CONFIG_USB_USS720 is not set
#
# USB Serial Converter support
#
# CONFIG_USB_SERIAL is not set
#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set
# CONFIG_USB_AUERSWALD is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_LED is not set
# CONFIG_USB_CYTHERM is not set
# CONFIG_USB_PHIDGETKIT is not set
# CONFIG_USB_PHIDGETSERVO is not set
# CONFIG_USB_IDMOUSE is not set
# CONFIG_USB_LD is not set
# CONFIG_USB_TEST is not set
#
# USB DSL modem support
#
# #
# USB Gadget Support # USB Gadget Support
# #
# CONFIG_USB_GADGET is not set # CONFIG_USB_GADGET is not set
# CONFIG_USB_GADGET_NET2280 is not set
# CONFIG_USB_GADGET_PXA2XX is not set
# CONFIG_USB_GADGET_GOKU is not set
# CONFIG_USB_GADGET_LH7A40X is not set
# CONFIG_USB_GADGET_OMAP is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_ZERO is not set
# CONFIG_USB_ETH is not set
# CONFIG_USB_GADGETFS is not set
# CONFIG_USB_FILE_STORAGE is not set
# CONFIG_USB_G_SERIAL is not set
# #
# MMC/SD Card support # MMC/SD Card support
......
...@@ -357,10 +357,8 @@ static int apm_open(struct inode * inode, struct file * filp) ...@@ -357,10 +357,8 @@ static int apm_open(struct inode * inode, struct file * filp)
{ {
struct apm_user *as; struct apm_user *as;
as = (struct apm_user *)kmalloc(sizeof(*as), GFP_KERNEL); as = (struct apm_user *)kzalloc(sizeof(*as), GFP_KERNEL);
if (as) { if (as) {
memset(as, 0, sizeof(*as));
/* /*
* XXX - this is a tiny bit broken, when we consider BSD * XXX - this is a tiny bit broken, when we consider BSD
* process accounting. If the device is opened by root, we * process accounting. If the device is opened by root, we
......
...@@ -540,12 +540,10 @@ static void __init pcibios_init_hw(struct hw_pci *hw) ...@@ -540,12 +540,10 @@ static void __init pcibios_init_hw(struct hw_pci *hw)
int nr, busnr; int nr, busnr;
for (nr = busnr = 0; nr < hw->nr_controllers; nr++) { for (nr = busnr = 0; nr < hw->nr_controllers; nr++) {
sys = kmalloc(sizeof(struct pci_sys_data), GFP_KERNEL); sys = kzalloc(sizeof(struct pci_sys_data), GFP_KERNEL);
if (!sys) if (!sys)
panic("PCI: unable to allocate sys data!"); panic("PCI: unable to allocate sys data!");
memset(sys, 0, sizeof(struct pci_sys_data));
sys->hw = hw; sys->hw = hw;
sys->busnr = busnr; sys->busnr = busnr;
sys->swizzle = hw->swizzle; sys->swizzle = hw->swizzle;
......
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
*/ */
#include <linux/config.h> #include <linux/config.h>
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/hardware.h>
.text .text
......
...@@ -807,14 +807,12 @@ static struct expansion_card *__init ecard_alloc_card(int type, int slot) ...@@ -807,14 +807,12 @@ static struct expansion_card *__init ecard_alloc_card(int type, int slot)
unsigned long base; unsigned long base;
int i; int i;
ec = kmalloc(sizeof(ecard_t), GFP_KERNEL); ec = kzalloc(sizeof(ecard_t), GFP_KERNEL);
if (!ec) { if (!ec) {
ec = ERR_PTR(-ENOMEM); ec = ERR_PTR(-ENOMEM);
goto nomem; goto nomem;
} }
memset(ec, 0, sizeof(ecard_t));
ec->slot_no = slot; ec->slot_no = slot;
ec->type = type; ec->type = type;
ec->irq = NO_IRQ; ec->irq = NO_IRQ;
......
...@@ -484,7 +484,6 @@ call_fpe: ...@@ -484,7 +484,6 @@ call_fpe:
movcss r7, r5, lsr #(TIF_USING_IWMMXT + 1) movcss r7, r5, lsr #(TIF_USING_IWMMXT + 1)
bcs iwmmxt_task_enable bcs iwmmxt_task_enable
#endif #endif
enable_irq
add pc, pc, r8, lsr #6 add pc, pc, r8, lsr #6
mov r0, r0 mov r0, r0
...@@ -511,6 +510,7 @@ call_fpe: ...@@ -511,6 +510,7 @@ call_fpe:
mov pc, lr @ CP#15 (Control) mov pc, lr @ CP#15 (Control)
do_fpe: do_fpe:
enable_irq
ldr r4, .LCfp ldr r4, .LCfp
add r10, r10, #TI_FPSTATE @ r10 = workspace add r10, r10, #TI_FPSTATE @ r10 = workspace
ldr pc, [r4] @ Call FP module USR entry point ldr pc, [r4] @ Call FP module USR entry point
......
...@@ -28,10 +28,9 @@ ...@@ -28,10 +28,9 @@
#define PROCINFO_INITFUNC 12 #define PROCINFO_INITFUNC 12
#define MACHINFO_TYPE 0 #define MACHINFO_TYPE 0
#define MACHINFO_PHYSRAM 4 #define MACHINFO_PHYSIO 4
#define MACHINFO_PHYSIO 8 #define MACHINFO_PGOFFIO 8
#define MACHINFO_PGOFFIO 12 #define MACHINFO_NAME 12
#define MACHINFO_NAME 16
#define KERNEL_RAM_ADDR (PAGE_OFFSET + TEXT_OFFSET) #define KERNEL_RAM_ADDR (PAGE_OFFSET + TEXT_OFFSET)
......
...@@ -305,14 +305,19 @@ report_bad_irq(unsigned int irq, struct pt_regs *regs, struct irqdesc *desc, int ...@@ -305,14 +305,19 @@ report_bad_irq(unsigned int irq, struct pt_regs *regs, struct irqdesc *desc, int
static int count = 100; static int count = 100;
struct irqaction *action; struct irqaction *action;
if (!count || noirqdebug) if (noirqdebug)
return; return;
count--;
if (ret != IRQ_HANDLED && ret != IRQ_NONE) { if (ret != IRQ_HANDLED && ret != IRQ_NONE) {
if (!count)
return;
count--;
printk("irq%u: bogus retval mask %x\n", irq, ret); printk("irq%u: bogus retval mask %x\n", irq, ret);
} else { } else {
desc->irqs_unhandled++;
if (desc->irqs_unhandled <= 99900)
return;
desc->irqs_unhandled = 0;
printk("irq%u: nobody cared\n", irq); printk("irq%u: nobody cared\n", irq);
} }
show_regs(regs); show_regs(regs);
......
This diff is collapsed.
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
*/ */
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/assembler.h> #include <asm/assembler.h>
#include <asm/hardware.h>
.text .text
.align .align
......
This diff is collapsed.
This diff is collapsed.
...@@ -71,11 +71,11 @@ static irqreturn_t at91rm9200_timer_interrupt(int irq, void *dev_id, struct pt_r ...@@ -71,11 +71,11 @@ static irqreturn_t at91rm9200_timer_interrupt(int irq, void *dev_id, struct pt_r
if (at91_sys_read(AT91_ST_SR) & AT91_ST_PITS) { /* This is a shared interrupt */ if (at91_sys_read(AT91_ST_SR) & AT91_ST_PITS) { /* This is a shared interrupt */
write_seqlock(&xtime_lock); write_seqlock(&xtime_lock);
do { while (((read_CRTR() - at91_sys_read(AT91_ST_RTAR)) & AT91_ST_ALMV) >= LATCH) {
timer_tick(regs); timer_tick(regs);
rtar = (at91_sys_read(AT91_ST_RTAR) + LATCH) & AT91_ST_ALMV; rtar = (at91_sys_read(AT91_ST_RTAR) + LATCH) & AT91_ST_ALMV;
at91_sys_write(AT91_ST_RTAR, rtar); at91_sys_write(AT91_ST_RTAR, rtar);
} while (((read_CRTR() - at91_sys_read(AT91_ST_RTAR)) & AT91_ST_ALMV) >= LATCH); }
write_sequnlock(&xtime_lock); write_sequnlock(&xtime_lock);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment