Merge master.kernel.org:/home/rmk/linux-2.6-arm
This commit is contained in:
commit
9e04099cb9
@ -89,13 +89,6 @@ SECTIONS
|
|||||||
*(.got) /* Global offset table */
|
*(.got) /* Global offset table */
|
||||||
}
|
}
|
||||||
|
|
||||||
. = ALIGN(16);
|
|
||||||
__ex_table : { /* Exception table */
|
|
||||||
__start___ex_table = .;
|
|
||||||
*(__ex_table)
|
|
||||||
__stop___ex_table = .;
|
|
||||||
}
|
|
||||||
|
|
||||||
RODATA
|
RODATA
|
||||||
|
|
||||||
_etext = .; /* End of text and rodata section */
|
_etext = .; /* End of text and rodata section */
|
||||||
@ -137,6 +130,14 @@ SECTIONS
|
|||||||
. = ALIGN(32);
|
. = ALIGN(32);
|
||||||
*(.data.cacheline_aligned)
|
*(.data.cacheline_aligned)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The exception fixup table (might need resorting at runtime)
|
||||||
|
*/
|
||||||
|
. = ALIGN(32);
|
||||||
|
__start___ex_table = .;
|
||||||
|
*(__ex_table)
|
||||||
|
__stop___ex_table = .;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* and the usual data section
|
* and the usual data section
|
||||||
*/
|
*/
|
||||||
|
@ -7,11 +7,17 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
|
#include <linux/device.h>
|
||||||
|
|
||||||
|
#include <asm/types.h>
|
||||||
|
#include <asm/irq.h>
|
||||||
|
#include <asm/mach-types.h>
|
||||||
#include <asm/hardware.h>
|
#include <asm/hardware.h>
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
|
|
||||||
|
#include <asm/mach/arch.h>
|
||||||
#include <asm/mach/map.h>
|
#include <asm/mach/map.h>
|
||||||
|
#include <asm/mach/irq.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* IRQ base register
|
* IRQ base register
|
||||||
@ -48,6 +54,12 @@ static void l7200_unmask_irq(unsigned int irq)
|
|||||||
IRQ_ENABLE = 1 << irq;
|
IRQ_ENABLE = 1 << irq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct irqchip l7200_irq_chip = {
|
||||||
|
.ack = l7200_mask_irq,
|
||||||
|
.mask = l7200_mask_irq,
|
||||||
|
.unmask = l7200_unmask_irq
|
||||||
|
};
|
||||||
|
|
||||||
static void __init l7200_init_irq(void)
|
static void __init l7200_init_irq(void)
|
||||||
{
|
{
|
||||||
int irq;
|
int irq;
|
||||||
@ -56,11 +68,9 @@ static void __init l7200_init_irq(void)
|
|||||||
FIQ_ENABLECLEAR = 0xffffffff; /* clear all fast interrupt enables */
|
FIQ_ENABLECLEAR = 0xffffffff; /* clear all fast interrupt enables */
|
||||||
|
|
||||||
for (irq = 0; irq < NR_IRQS; irq++) {
|
for (irq = 0; irq < NR_IRQS; irq++) {
|
||||||
irq_desc[irq].valid = 1;
|
set_irq_chip(irq, &l7200_irq_chip);
|
||||||
irq_desc[irq].probe_ok = 1;
|
set_irq_flags(irq, IRQF_VALID);
|
||||||
irq_desc[irq].mask_ack = l7200_mask_irq;
|
set_irq_handler(irq, do_level_IRQ);
|
||||||
irq_desc[irq].mask = l7200_mask_irq;
|
|
||||||
irq_desc[irq].unmask = l7200_unmask_irq;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
init_FIQ();
|
init_FIQ();
|
||||||
|
@ -467,6 +467,7 @@ void corgi_put_hsync(void)
|
|||||||
{
|
{
|
||||||
if (get_hsync_time)
|
if (get_hsync_time)
|
||||||
symbol_put(w100fb_get_hsynclen);
|
symbol_put(w100fb_get_hsynclen);
|
||||||
|
get_hsync_time = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void corgi_wait_hsync(void)
|
void corgi_wait_hsync(void)
|
||||||
@ -476,20 +477,37 @@ void corgi_wait_hsync(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_PXA_SHARP_Cxx00
|
#ifdef CONFIG_PXA_SHARP_Cxx00
|
||||||
|
static struct device *spitz_pxafb_dev;
|
||||||
|
|
||||||
|
static int is_pxafb_device(struct device * dev, void * data)
|
||||||
|
{
|
||||||
|
struct platform_device *pdev = container_of(dev, struct platform_device, dev);
|
||||||
|
|
||||||
|
return (strncmp(pdev->name, "pxa2xx-fb", 9) == 0);
|
||||||
|
}
|
||||||
|
|
||||||
unsigned long spitz_get_hsync_len(void)
|
unsigned long spitz_get_hsync_len(void)
|
||||||
{
|
{
|
||||||
|
if (!spitz_pxafb_dev) {
|
||||||
|
spitz_pxafb_dev = bus_find_device(&platform_bus_type, NULL, NULL, is_pxafb_device);
|
||||||
|
if (!spitz_pxafb_dev)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
if (!get_hsync_time)
|
if (!get_hsync_time)
|
||||||
get_hsync_time = symbol_get(pxafb_get_hsync_time);
|
get_hsync_time = symbol_get(pxafb_get_hsync_time);
|
||||||
if (!get_hsync_time)
|
if (!get_hsync_time)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return pxafb_get_hsync_time(&pxafb_device.dev);
|
return pxafb_get_hsync_time(spitz_pxafb_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
void spitz_put_hsync(void)
|
void spitz_put_hsync(void)
|
||||||
{
|
{
|
||||||
|
put_device(spitz_pxafb_dev);
|
||||||
if (get_hsync_time)
|
if (get_hsync_time)
|
||||||
symbol_put(pxafb_get_hsync_time);
|
symbol_put(pxafb_get_hsync_time);
|
||||||
|
spitz_pxafb_dev = NULL;
|
||||||
|
get_hsync_time = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void spitz_wait_hsync(void)
|
void spitz_wait_hsync(void)
|
||||||
|
@ -208,6 +208,11 @@ static struct platform_device pxafb_device = {
|
|||||||
.resource = pxafb_resources,
|
.resource = pxafb_resources,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void __init set_pxa_fb_parent(struct device *parent_dev)
|
||||||
|
{
|
||||||
|
pxafb_device.dev.parent = parent_dev;
|
||||||
|
}
|
||||||
|
|
||||||
static struct platform_device ffuart_device = {
|
static struct platform_device ffuart_device = {
|
||||||
.name = "pxa2xx-uart",
|
.name = "pxa2xx-uart",
|
||||||
.id = 0,
|
.id = 0,
|
||||||
|
@ -36,7 +36,6 @@
|
|||||||
#include <asm/arch/irq.h>
|
#include <asm/arch/irq.h>
|
||||||
#include <asm/arch/mmc.h>
|
#include <asm/arch/mmc.h>
|
||||||
#include <asm/arch/udc.h>
|
#include <asm/arch/udc.h>
|
||||||
#include <asm/arch/ohci.h>
|
|
||||||
#include <asm/arch/pxafb.h>
|
#include <asm/arch/pxafb.h>
|
||||||
#include <asm/arch/akita.h>
|
#include <asm/arch/akita.h>
|
||||||
#include <asm/arch/spitz.h>
|
#include <asm/arch/spitz.h>
|
||||||
@ -304,7 +303,6 @@ static struct platform_device *devices[] __initdata = {
|
|||||||
&spitzkbd_device,
|
&spitzkbd_device,
|
||||||
&spitzts_device,
|
&spitzts_device,
|
||||||
&spitzbl_device,
|
&spitzbl_device,
|
||||||
&spitzbattery_device,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static void __init common_init(void)
|
static void __init common_init(void)
|
||||||
@ -328,7 +326,7 @@ static void __init common_init(void)
|
|||||||
|
|
||||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||||
pxa_set_mci_info(&spitz_mci_platform_data);
|
pxa_set_mci_info(&spitz_mci_platform_data);
|
||||||
pxafb_device.dev.parent = &spitzssp_device.dev;
|
set_pxa_fb_parent(&spitzssp_device.dev);
|
||||||
set_pxa_fb_info(&spitz_pxafb_info);
|
set_pxa_fb_info(&spitz_pxafb_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ config MACH_ANUBIS
|
|||||||
config ARCH_BAST
|
config ARCH_BAST
|
||||||
bool "Simtec Electronics BAST (EB2410ITX)"
|
bool "Simtec Electronics BAST (EB2410ITX)"
|
||||||
select CPU_S3C2410
|
select CPU_S3C2410
|
||||||
|
select ISA
|
||||||
help
|
help
|
||||||
Say Y here if you are using the Simtec Electronics EB2410ITX
|
Say Y here if you are using the Simtec Electronics EB2410ITX
|
||||||
development board (also known as BAST)
|
development board (also known as BAST)
|
||||||
|
@ -53,7 +53,7 @@ static unsigned char spitzkbd_keycode[NR_SCANCODES] = {
|
|||||||
KEY_LEFTCTRL, KEY_1, KEY_3, KEY_5, KEY_6, KEY_7, KEY_9, KEY_0, KEY_BACKSPACE, SPITZ_KEY_EXOK, SPITZ_KEY_EXCANCEL, 0, 0, 0, 0, 0, /* 1-16 */
|
KEY_LEFTCTRL, KEY_1, KEY_3, KEY_5, KEY_6, KEY_7, KEY_9, KEY_0, KEY_BACKSPACE, SPITZ_KEY_EXOK, SPITZ_KEY_EXCANCEL, 0, 0, 0, 0, 0, /* 1-16 */
|
||||||
0, KEY_2, KEY_4, KEY_R, KEY_Y, KEY_8, KEY_I, KEY_O, KEY_P, SPITZ_KEY_EXJOGDOWN, SPITZ_KEY_EXJOGUP, 0, 0, 0, 0, 0, /* 17-32 */
|
0, KEY_2, KEY_4, KEY_R, KEY_Y, KEY_8, KEY_I, KEY_O, KEY_P, SPITZ_KEY_EXJOGDOWN, SPITZ_KEY_EXJOGUP, 0, 0, 0, 0, 0, /* 17-32 */
|
||||||
KEY_TAB, KEY_Q, KEY_E, KEY_T, KEY_G, KEY_U, KEY_J, KEY_K, 0, 0, 0, 0, 0, 0, 0, 0, /* 33-48 */
|
KEY_TAB, KEY_Q, KEY_E, KEY_T, KEY_G, KEY_U, KEY_J, KEY_K, 0, 0, 0, 0, 0, 0, 0, 0, /* 33-48 */
|
||||||
SPITZ_KEY_CALENDER, KEY_W, KEY_S, KEY_F, KEY_V, KEY_H, KEY_M, KEY_L, 0, 0, KEY_RIGHTSHIFT, 0, 0, 0, 0, 0, /* 49-64 */
|
SPITZ_KEY_CALENDER, KEY_W, KEY_S, KEY_F, KEY_V, KEY_H, KEY_M, KEY_L, 0, KEY_RIGHTSHIFT, 0, 0, 0, 0, 0, 0, /* 49-64 */
|
||||||
SPITZ_KEY_ADDRESS, KEY_A, KEY_D, KEY_C, KEY_B, KEY_N, KEY_DOT, 0, KEY_ENTER, KEY_LEFTSHIFT, 0, 0, 0, 0, 0, 0, /* 65-80 */
|
SPITZ_KEY_ADDRESS, KEY_A, KEY_D, KEY_C, KEY_B, KEY_N, KEY_DOT, 0, KEY_ENTER, KEY_LEFTSHIFT, 0, 0, 0, 0, 0, 0, /* 65-80 */
|
||||||
SPITZ_KEY_MAIL, KEY_Z, KEY_X, KEY_MINUS, KEY_SPACE, KEY_COMMA, 0, KEY_UP, 0, 0, SPITZ_KEY_FN, 0, 0, 0, 0, 0, /* 81-96 */
|
SPITZ_KEY_MAIL, KEY_Z, KEY_X, KEY_MINUS, KEY_SPACE, KEY_COMMA, 0, KEY_UP, 0, 0, SPITZ_KEY_FN, 0, 0, 0, 0, 0, /* 81-96 */
|
||||||
KEY_SYSRQ, SPITZ_KEY_JAP1, SPITZ_KEY_JAP2, SPITZ_KEY_CANCEL, SPITZ_KEY_OK, SPITZ_KEY_MENU, KEY_LEFT, KEY_DOWN, KEY_RIGHT, 0, 0, 0, 0, 0, 0, 0 /* 97-112 */
|
KEY_SYSRQ, SPITZ_KEY_JAP1, SPITZ_KEY_JAP2, SPITZ_KEY_CANCEL, SPITZ_KEY_OK, SPITZ_KEY_MENU, KEY_LEFT, KEY_DOWN, KEY_RIGHT, 0, 0, 0, 0, 0, 0, 0 /* 97-112 */
|
||||||
|
@ -66,4 +66,5 @@ struct pxafb_mach_info {
|
|||||||
|
|
||||||
};
|
};
|
||||||
void set_pxa_fb_info(struct pxafb_mach_info *hard_pxa_fb_info);
|
void set_pxa_fb_info(struct pxafb_mach_info *hard_pxa_fb_info);
|
||||||
|
void set_pxa_fb_parent(struct device *parent_dev);
|
||||||
unsigned long pxafb_get_hsync_time(struct device *dev);
|
unsigned long pxafb_get_hsync_time(struct device *dev);
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
* 06-Dec-1997 RMK Created.
|
* 06-Dec-1997 RMK Created.
|
||||||
* 02-Sep-2003 BJD Modified for S3C2410
|
* 02-Sep-2003 BJD Modified for S3C2410
|
||||||
* 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA
|
* 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA
|
||||||
*
|
* 13-Oct-2005 BJD Fixed problems with LDRH/STRH offset range
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __ASM_ARM_ARCH_IO_H
|
#ifndef __ASM_ARM_ARCH_IO_H
|
||||||
@ -117,11 +117,23 @@ DECLARE_IO(int,l,"")
|
|||||||
#define __outwc(value,port) \
|
#define __outwc(value,port) \
|
||||||
({ \
|
({ \
|
||||||
unsigned long v = value; \
|
unsigned long v = value; \
|
||||||
if (__PORT_PCIO((port))) \
|
if (__PORT_PCIO((port))) { \
|
||||||
|
if ((port) < 256 && (port) > -256) \
|
||||||
__asm__ __volatile__( \
|
__asm__ __volatile__( \
|
||||||
"strh %0, [%1, %2] @ outwc" \
|
"strh %0, [%1, %2] @ outwc" \
|
||||||
: : "r" (v), "r" (PCIO_BASE), "Jr" ((port))); \
|
: : "r" (v), "r" (PCIO_BASE), "Jr" ((port))); \
|
||||||
|
else if ((port) > 0) \
|
||||||
|
__asm__ __volatile__( \
|
||||||
|
"strh %0, [%1, %2] @ outwc" \
|
||||||
|
: : "r" (v), \
|
||||||
|
"r" (PCIO_BASE + ((port) & ~0xff)), \
|
||||||
|
"Jr" (((port) & 0xff))); \
|
||||||
else \
|
else \
|
||||||
|
__asm__ __volatile__( \
|
||||||
|
"strh %0, [%1, #0] @ outwc" \
|
||||||
|
: : "r" (v), \
|
||||||
|
"r" (PCIO_BASE + (port))); \
|
||||||
|
} else \
|
||||||
__asm__ __volatile__( \
|
__asm__ __volatile__( \
|
||||||
"strh %0, [%1, #0] @ outwc" \
|
"strh %0, [%1, #0] @ outwc" \
|
||||||
: : "r" (v), "r" ((port))); \
|
: : "r" (v), "r" ((port))); \
|
||||||
@ -130,11 +142,25 @@ DECLARE_IO(int,l,"")
|
|||||||
#define __inwc(port) \
|
#define __inwc(port) \
|
||||||
({ \
|
({ \
|
||||||
unsigned short result; \
|
unsigned short result; \
|
||||||
if (__PORT_PCIO((port))) \
|
if (__PORT_PCIO((port))) { \
|
||||||
|
if ((port) < 256 && (port) > -256 ) \
|
||||||
__asm__ __volatile__( \
|
__asm__ __volatile__( \
|
||||||
"ldrh %0, [%1, %2] @ inwc" \
|
"ldrh %0, [%1, %2] @ inwc" \
|
||||||
: "=r" (result) : "r" (PCIO_BASE), "Jr" ((port))); \
|
: "=r" (result) \
|
||||||
|
: "r" (PCIO_BASE), \
|
||||||
|
"Jr" ((port))); \
|
||||||
|
else if ((port) > 0) \
|
||||||
|
__asm__ __volatile__( \
|
||||||
|
"ldrh %0, [%1, %2] @ inwc" \
|
||||||
|
: "=r" (result) \
|
||||||
|
: "r" (PCIO_BASE + ((port) & ~0xff)), \
|
||||||
|
"Jr" (((port) & 0xff))); \
|
||||||
else \
|
else \
|
||||||
|
__asm__ __volatile__( \
|
||||||
|
"ldrh %0, [%1, #0] @ inwc" \
|
||||||
|
: "=r" (result) \
|
||||||
|
: "r" (PCIO_BASE + ((port)))); \
|
||||||
|
} else \
|
||||||
__asm__ __volatile__( \
|
__asm__ __volatile__( \
|
||||||
"ldrh %0, [%1, #0] @ inwc" \
|
"ldrh %0, [%1, #0] @ inwc" \
|
||||||
: "=r" (result) : "r" ((port))); \
|
: "=r" (result) : "r" ((port))); \
|
||||||
|
Loading…
Reference in New Issue
Block a user