Merge master.kernel.org:/home/rmk/linux-2.6-arm
This commit is contained in:
commit
c931488cc4
20 changed files with 116 additions and 64 deletions
|
@ -53,7 +53,7 @@ tune-$(CONFIG_CPU_ARM926T) :=-mtune=arm9tdmi
|
||||||
tune-$(CONFIG_CPU_SA110) :=-mtune=strongarm110
|
tune-$(CONFIG_CPU_SA110) :=-mtune=strongarm110
|
||||||
tune-$(CONFIG_CPU_SA1100) :=-mtune=strongarm1100
|
tune-$(CONFIG_CPU_SA1100) :=-mtune=strongarm1100
|
||||||
tune-$(CONFIG_CPU_XSCALE) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale
|
tune-$(CONFIG_CPU_XSCALE) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale
|
||||||
tune-$(CONFIG_CPU_V6) :=-mtune=strongarm
|
tune-$(CONFIG_CPU_V6) :=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm)
|
||||||
|
|
||||||
# Need -Uarm for gcc < 3.x
|
# Need -Uarm for gcc < 3.x
|
||||||
CFLAGS_ABI :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,)
|
CFLAGS_ABI :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,)
|
||||||
|
|
|
@ -45,8 +45,8 @@ extern void fp_enter(void);
|
||||||
|
|
||||||
#define EXPORT_SYMBOL_ALIAS(sym,orig) \
|
#define EXPORT_SYMBOL_ALIAS(sym,orig) \
|
||||||
EXPORT_CRC_ALIAS(sym) \
|
EXPORT_CRC_ALIAS(sym) \
|
||||||
const struct kernel_symbol __ksymtab_##sym \
|
static const struct kernel_symbol __ksymtab_##sym \
|
||||||
__attribute__((section("__ksymtab"))) = \
|
__attribute_used__ __attribute__((section("__ksymtab"))) = \
|
||||||
{ (unsigned long)&orig, #sym };
|
{ (unsigned long)&orig, #sym };
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -106,15 +106,10 @@ ENTRY(ret_from_fork)
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.Larm700bug:
|
.Larm700bug:
|
||||||
ldr r0, [sp, #S_PSR] @ Get calling cpsr
|
|
||||||
sub lr, lr, #4
|
|
||||||
str lr, [r8]
|
|
||||||
msr spsr_cxsf, r0
|
|
||||||
ldmia sp, {r0 - lr}^ @ Get calling r0 - lr
|
ldmia sp, {r0 - lr}^ @ Get calling r0 - lr
|
||||||
mov r0, r0
|
mov r0, r0
|
||||||
ldr lr, [sp, #S_PC] @ Get PC
|
|
||||||
add sp, sp, #S_FRAME_SIZE
|
add sp, sp, #S_FRAME_SIZE
|
||||||
movs pc, lr
|
subs pc, lr, #4
|
||||||
#else
|
#else
|
||||||
.macro arm710_bug_check, instr, temp
|
.macro arm710_bug_check, instr, temp
|
||||||
.endm
|
.endm
|
||||||
|
|
|
@ -125,7 +125,7 @@ static int external_map[] = { 2 };
|
||||||
static int chip0_map[] = { 0 };
|
static int chip0_map[] = { 0 };
|
||||||
static int chip1_map[] = { 1 };
|
static int chip1_map[] = { 1 };
|
||||||
|
|
||||||
struct mtd_partition anubis_default_nand_part[] = {
|
static struct mtd_partition anubis_default_nand_part[] = {
|
||||||
[0] = {
|
[0] = {
|
||||||
.name = "Boot Agent",
|
.name = "Boot Agent",
|
||||||
.size = SZ_16K,
|
.size = SZ_16K,
|
||||||
|
|
|
@ -230,7 +230,7 @@ static int chip0_map[] = { 1 };
|
||||||
static int chip1_map[] = { 2 };
|
static int chip1_map[] = { 2 };
|
||||||
static int chip2_map[] = { 3 };
|
static int chip2_map[] = { 3 };
|
||||||
|
|
||||||
struct mtd_partition bast_default_nand_part[] = {
|
static struct mtd_partition bast_default_nand_part[] = {
|
||||||
[0] = {
|
[0] = {
|
||||||
.name = "Boot Agent",
|
.name = "Boot Agent",
|
||||||
.size = SZ_16K,
|
.size = SZ_16K,
|
||||||
|
@ -340,7 +340,7 @@ static struct resource bast_dm9k_resource[] = {
|
||||||
* better IO routines can be written and tested
|
* better IO routines can be written and tested
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct dm9000_plat_data bast_dm9k_platdata = {
|
static struct dm9000_plat_data bast_dm9k_platdata = {
|
||||||
.flags = DM9000_PLATF_16BITONLY
|
.flags = DM9000_PLATF_16BITONLY
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -288,7 +288,7 @@ static struct resource vr1000_dm9k1_resource[] = {
|
||||||
* better IO routines can be written and tested
|
* better IO routines can be written and tested
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct dm9000_plat_data vr1000_dm9k_platdata = {
|
static struct dm9000_plat_data vr1000_dm9k_platdata = {
|
||||||
.flags = DM9000_PLATF_16BITONLY,
|
.flags = DM9000_PLATF_16BITONLY,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -125,9 +125,6 @@ static struct platform_device *uart_devices[] __initdata = {
|
||||||
&s3c_uart2
|
&s3c_uart2
|
||||||
};
|
};
|
||||||
|
|
||||||
/* store our uart devices for the serial driver console */
|
|
||||||
struct platform_device *s3c2410_uart_devices[3];
|
|
||||||
|
|
||||||
static int s3c2410_uart_count = 0;
|
static int s3c2410_uart_count = 0;
|
||||||
|
|
||||||
/* uart registration process */
|
/* uart registration process */
|
||||||
|
|
|
@ -151,7 +151,7 @@ void __init s3c2440_init_uarts(struct s3c2410_uartcfg *cfg, int no)
|
||||||
|
|
||||||
#ifdef CONFIG_PM
|
#ifdef CONFIG_PM
|
||||||
|
|
||||||
struct sleep_save s3c2440_sleep[] = {
|
static struct sleep_save s3c2440_sleep[] = {
|
||||||
SAVE_ITEM(S3C2440_DSC0),
|
SAVE_ITEM(S3C2440_DSC0),
|
||||||
SAVE_ITEM(S3C2440_DSC1),
|
SAVE_ITEM(S3C2440_DSC1),
|
||||||
SAVE_ITEM(S3C2440_GPJDAT),
|
SAVE_ITEM(S3C2440_GPJDAT),
|
||||||
|
@ -260,7 +260,7 @@ void __init s3c2440_init_clocks(int xtal)
|
||||||
* as a driver which may support both 2410 and 2440 may try and use it.
|
* as a driver which may support both 2410 and 2440 may try and use it.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int __init s3c2440_core_init(void)
|
static int __init s3c2440_core_init(void)
|
||||||
{
|
{
|
||||||
return sysdev_class_register(&s3c2440_sysclass);
|
return sysdev_class_register(&s3c2440_sysclass);
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
#include <asm/hardware/clock.h>
|
#include <asm/hardware/clock.h>
|
||||||
|
|
||||||
#include "clock.h"
|
#include "clock.h"
|
||||||
|
#include "cpu.h"
|
||||||
|
|
||||||
static unsigned long timer_startval;
|
static unsigned long timer_startval;
|
||||||
static unsigned long timer_usec_ticks;
|
static unsigned long timer_usec_ticks;
|
||||||
|
|
|
@ -111,7 +111,7 @@ proc_alignment_read(char *page, char **start, off_t off, int count, int *eof,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int proc_alignment_write(struct file *file, const char __user *buffer,
|
static int proc_alignment_write(struct file *file, const char __user *buffer,
|
||||||
unsigned long count, void *data)
|
unsigned long count, void *data)
|
||||||
{
|
{
|
||||||
char mode;
|
char mode;
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ static int proc_alignment_write(struct file *file, const char __user *buffer,
|
||||||
if (get_user(mode, buffer))
|
if (get_user(mode, buffer))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
if (mode >= '0' && mode <= '5')
|
if (mode >= '0' && mode <= '5')
|
||||||
ai_usermode = mode - '0';
|
ai_usermode = mode - '0';
|
||||||
}
|
}
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
@ -262,7 +262,7 @@ union offset_union {
|
||||||
goto fault; \
|
goto fault; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define put32_unaligned_check(val,addr) \
|
#define put32_unaligned_check(val,addr) \
|
||||||
__put32_unaligned_check("strb", val, addr)
|
__put32_unaligned_check("strb", val, addr)
|
||||||
|
|
||||||
#define put32t_unaligned_check(val,addr) \
|
#define put32t_unaligned_check(val,addr) \
|
||||||
|
@ -306,19 +306,19 @@ do_alignment_ldrhstrh(unsigned long addr, unsigned long instr, struct pt_regs *r
|
||||||
return TYPE_LDST;
|
return TYPE_LDST;
|
||||||
|
|
||||||
user:
|
user:
|
||||||
if (LDST_L_BIT(instr)) {
|
if (LDST_L_BIT(instr)) {
|
||||||
unsigned long val;
|
unsigned long val;
|
||||||
get16t_unaligned_check(val, addr);
|
get16t_unaligned_check(val, addr);
|
||||||
|
|
||||||
/* signed half-word? */
|
/* signed half-word? */
|
||||||
if (instr & 0x40)
|
if (instr & 0x40)
|
||||||
val = (signed long)((signed short) val);
|
val = (signed long)((signed short) val);
|
||||||
|
|
||||||
regs->uregs[rd] = val;
|
regs->uregs[rd] = val;
|
||||||
} else
|
} else
|
||||||
put16t_unaligned_check(regs->uregs[rd], addr);
|
put16t_unaligned_check(regs->uregs[rd], addr);
|
||||||
|
|
||||||
return TYPE_LDST;
|
return TYPE_LDST;
|
||||||
|
|
||||||
fault:
|
fault:
|
||||||
return TYPE_FAULT;
|
return TYPE_FAULT;
|
||||||
|
@ -342,11 +342,11 @@ do_alignment_ldrdstrd(unsigned long addr, unsigned long instr,
|
||||||
unsigned long val;
|
unsigned long val;
|
||||||
get32_unaligned_check(val, addr);
|
get32_unaligned_check(val, addr);
|
||||||
regs->uregs[rd] = val;
|
regs->uregs[rd] = val;
|
||||||
get32_unaligned_check(val, addr+4);
|
get32_unaligned_check(val, addr + 4);
|
||||||
regs->uregs[rd+1] = val;
|
regs->uregs[rd + 1] = val;
|
||||||
} else {
|
} else {
|
||||||
put32_unaligned_check(regs->uregs[rd], addr);
|
put32_unaligned_check(regs->uregs[rd], addr);
|
||||||
put32_unaligned_check(regs->uregs[rd+1], addr+4);
|
put32_unaligned_check(regs->uregs[rd + 1], addr + 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
return TYPE_LDST;
|
return TYPE_LDST;
|
||||||
|
@ -356,11 +356,11 @@ do_alignment_ldrdstrd(unsigned long addr, unsigned long instr,
|
||||||
unsigned long val;
|
unsigned long val;
|
||||||
get32t_unaligned_check(val, addr);
|
get32t_unaligned_check(val, addr);
|
||||||
regs->uregs[rd] = val;
|
regs->uregs[rd] = val;
|
||||||
get32t_unaligned_check(val, addr+4);
|
get32t_unaligned_check(val, addr + 4);
|
||||||
regs->uregs[rd+1] = val;
|
regs->uregs[rd + 1] = val;
|
||||||
} else {
|
} else {
|
||||||
put32t_unaligned_check(regs->uregs[rd], addr);
|
put32t_unaligned_check(regs->uregs[rd], addr);
|
||||||
put32t_unaligned_check(regs->uregs[rd+1], addr+4);
|
put32t_unaligned_check(regs->uregs[rd + 1], addr + 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
return TYPE_LDST;
|
return TYPE_LDST;
|
||||||
|
@ -443,7 +443,7 @@ do_alignment_ldmstm(unsigned long addr, unsigned long instr, struct pt_regs *reg
|
||||||
if (LDST_P_EQ_U(instr)) /* U = P */
|
if (LDST_P_EQ_U(instr)) /* U = P */
|
||||||
eaddr += 4;
|
eaddr += 4;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For alignment faults on the ARM922T/ARM920T the MMU makes
|
* For alignment faults on the ARM922T/ARM920T the MMU makes
|
||||||
* the FSR (and hence addr) equal to the updated base address
|
* the FSR (and hence addr) equal to the updated base address
|
||||||
* of the multiple access rather than the restored value.
|
* of the multiple access rather than the restored value.
|
||||||
|
@ -570,7 +570,7 @@ thumb2arm(u16 tinstr)
|
||||||
/* 6.5.1 Format 3: */
|
/* 6.5.1 Format 3: */
|
||||||
case 0x4800 >> 11: /* 7.1.28 LDR(3) */
|
case 0x4800 >> 11: /* 7.1.28 LDR(3) */
|
||||||
/* NOTE: This case is not technically possible. We're
|
/* NOTE: This case is not technically possible. We're
|
||||||
* loading 32-bit memory data via PC relative
|
* loading 32-bit memory data via PC relative
|
||||||
* addressing mode. So we can and should eliminate
|
* addressing mode. So we can and should eliminate
|
||||||
* this case. But I'll leave it here for now.
|
* this case. But I'll leave it here for now.
|
||||||
*/
|
*/
|
||||||
|
@ -642,7 +642,7 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
|
||||||
|
|
||||||
if (fault) {
|
if (fault) {
|
||||||
type = TYPE_FAULT;
|
type = TYPE_FAULT;
|
||||||
goto bad_or_fault;
|
goto bad_or_fault;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (user_mode(regs))
|
if (user_mode(regs))
|
||||||
|
|
|
@ -31,11 +31,6 @@
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <asm/system.h>
|
#include <asm/system.h>
|
||||||
|
|
||||||
/* forward declarations */
|
|
||||||
unsigned int EmulateCPDO(const unsigned int);
|
|
||||||
unsigned int EmulateCPDT(const unsigned int);
|
|
||||||
unsigned int EmulateCPRT(const unsigned int);
|
|
||||||
|
|
||||||
/* Reset the FPA11 chip. Called to initialize and reset the emulator. */
|
/* Reset the FPA11 chip. Called to initialize and reset the emulator. */
|
||||||
static void resetFPA11(void)
|
static void resetFPA11(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -95,4 +95,24 @@ extern int8 SetRoundingMode(const unsigned int);
|
||||||
extern int8 SetRoundingPrecision(const unsigned int);
|
extern int8 SetRoundingPrecision(const unsigned int);
|
||||||
extern void nwfpe_init_fpa(union fp_state *fp);
|
extern void nwfpe_init_fpa(union fp_state *fp);
|
||||||
|
|
||||||
|
extern unsigned int EmulateAll(unsigned int opcode);
|
||||||
|
|
||||||
|
extern unsigned int EmulateCPDT(const unsigned int opcode);
|
||||||
|
extern unsigned int EmulateCPDO(const unsigned int opcode);
|
||||||
|
extern unsigned int EmulateCPRT(const unsigned int opcode);
|
||||||
|
|
||||||
|
/* fpa11_cpdt.c */
|
||||||
|
extern unsigned int PerformLDF(const unsigned int opcode);
|
||||||
|
extern unsigned int PerformSTF(const unsigned int opcode);
|
||||||
|
extern unsigned int PerformLFM(const unsigned int opcode);
|
||||||
|
extern unsigned int PerformSFM(const unsigned int opcode);
|
||||||
|
|
||||||
|
/* single_cpdo.c */
|
||||||
|
|
||||||
|
extern unsigned int SingleCPDO(struct roundingData *roundData,
|
||||||
|
const unsigned int opcode, FPREG * rFd);
|
||||||
|
/* double_cpdo.c */
|
||||||
|
extern unsigned int DoubleCPDO(struct roundingData *roundData,
|
||||||
|
const unsigned int opcode, FPREG * rFd);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -26,12 +26,11 @@
|
||||||
#include "fpa11.inl"
|
#include "fpa11.inl"
|
||||||
#include "fpmodule.h"
|
#include "fpmodule.h"
|
||||||
#include "fpmodule.inl"
|
#include "fpmodule.inl"
|
||||||
|
#include "softfloat.h"
|
||||||
|
|
||||||
#ifdef CONFIG_FPE_NWFPE_XP
|
#ifdef CONFIG_FPE_NWFPE_XP
|
||||||
extern flag floatx80_is_nan(floatx80);
|
extern flag floatx80_is_nan(floatx80);
|
||||||
#endif
|
#endif
|
||||||
extern flag float64_is_nan(float64);
|
|
||||||
extern flag float32_is_nan(float32);
|
|
||||||
|
|
||||||
unsigned int PerformFLT(const unsigned int opcode);
|
unsigned int PerformFLT(const unsigned int opcode);
|
||||||
unsigned int PerformFIX(const unsigned int opcode);
|
unsigned int PerformFIX(const unsigned int opcode);
|
||||||
|
|
|
@ -476,4 +476,10 @@ static inline unsigned int getDestinationSize(const unsigned int opcode)
|
||||||
return (nRc);
|
return (nRc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern unsigned int checkCondition(const unsigned int opcode,
|
||||||
|
const unsigned int ccodes);
|
||||||
|
|
||||||
|
extern const float64 float64Constant[];
|
||||||
|
extern const float32 float32Constant[];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -265,4 +265,7 @@ static inline flag float64_lt_nocheck(float64 a, float64 b)
|
||||||
return (a != b) && (aSign ^ (a < b));
|
return (a != b) && (aSign ^ (a < b));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern flag float32_is_nan( float32 a );
|
||||||
|
extern flag float64_is_nan( float64 a );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -73,7 +73,7 @@ struct imx_port {
|
||||||
struct uart_port port;
|
struct uart_port port;
|
||||||
struct timer_list timer;
|
struct timer_list timer;
|
||||||
unsigned int old_status;
|
unsigned int old_status;
|
||||||
int txirq,rxirq;
|
int txirq,rxirq,rtsirq;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -181,6 +181,22 @@ static void imx_start_tx(struct uart_port *port)
|
||||||
imx_transmit_buffer(sport);
|
imx_transmit_buffer(sport);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static irqreturn_t imx_rtsint(int irq, void *dev_id, struct pt_regs *regs)
|
||||||
|
{
|
||||||
|
struct imx_port *sport = (struct imx_port *)dev_id;
|
||||||
|
unsigned int val = USR1((u32)sport->port.membase)&USR1_RTSS;
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
|
spin_lock_irqsave(&sport->port.lock, flags);
|
||||||
|
|
||||||
|
USR1((u32)sport->port.membase) = USR1_RTSD;
|
||||||
|
uart_handle_cts_change(&sport->port, !!val);
|
||||||
|
wake_up_interruptible(&sport->port.info->delta_msr_wait);
|
||||||
|
|
||||||
|
spin_unlock_irqrestore(&sport->port.lock, flags);
|
||||||
|
return IRQ_HANDLED;
|
||||||
|
}
|
||||||
|
|
||||||
static irqreturn_t imx_txint(int irq, void *dev_id, struct pt_regs *regs)
|
static irqreturn_t imx_txint(int irq, void *dev_id, struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
struct imx_port *sport = (struct imx_port *)dev_id;
|
struct imx_port *sport = (struct imx_port *)dev_id;
|
||||||
|
@ -386,15 +402,21 @@ static int imx_startup(struct uart_port *port)
|
||||||
if (retval) goto error_out1;
|
if (retval) goto error_out1;
|
||||||
|
|
||||||
retval = request_irq(sport->txirq, imx_txint, 0,
|
retval = request_irq(sport->txirq, imx_txint, 0,
|
||||||
"imx-uart", sport);
|
DRIVER_NAME, sport);
|
||||||
if (retval) goto error_out2;
|
if (retval) goto error_out2;
|
||||||
|
|
||||||
|
retval = request_irq(sport->rtsirq, imx_rtsint, 0,
|
||||||
|
DRIVER_NAME, sport);
|
||||||
|
if (retval) goto error_out3;
|
||||||
|
set_irq_type(sport->rtsirq, IRQT_BOTHEDGE);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Finally, clear and enable interrupts
|
* Finally, clear and enable interrupts
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
USR1((u32)sport->port.membase) = USR1_RTSD;
|
||||||
UCR1((u32)sport->port.membase) |=
|
UCR1((u32)sport->port.membase) |=
|
||||||
(UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_UARTEN);
|
(UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_RTSDEN | UCR1_UARTEN);
|
||||||
|
|
||||||
UCR2((u32)sport->port.membase) |= (UCR2_RXEN | UCR2_TXEN);
|
UCR2((u32)sport->port.membase) |= (UCR2_RXEN | UCR2_TXEN);
|
||||||
/*
|
/*
|
||||||
|
@ -406,6 +428,8 @@ static int imx_startup(struct uart_port *port)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
error_out3:
|
||||||
|
free_irq(sport->txirq, sport);
|
||||||
error_out2:
|
error_out2:
|
||||||
free_irq(sport->rxirq, sport);
|
free_irq(sport->rxirq, sport);
|
||||||
error_out1:
|
error_out1:
|
||||||
|
@ -424,6 +448,7 @@ static void imx_shutdown(struct uart_port *port)
|
||||||
/*
|
/*
|
||||||
* Free the interrupts
|
* Free the interrupts
|
||||||
*/
|
*/
|
||||||
|
free_irq(sport->rtsirq, sport);
|
||||||
free_irq(sport->txirq, sport);
|
free_irq(sport->txirq, sport);
|
||||||
free_irq(sport->rxirq, sport);
|
free_irq(sport->rxirq, sport);
|
||||||
|
|
||||||
|
@ -432,7 +457,7 @@ static void imx_shutdown(struct uart_port *port)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
UCR1((u32)sport->port.membase) &=
|
UCR1((u32)sport->port.membase) &=
|
||||||
~(UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_UARTEN);
|
~(UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_RTSDEN | UCR1_UARTEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -522,7 +547,7 @@ imx_set_termios(struct uart_port *port, struct termios *termios,
|
||||||
* disable interrupts and drain transmitter
|
* disable interrupts and drain transmitter
|
||||||
*/
|
*/
|
||||||
old_ucr1 = UCR1((u32)sport->port.membase);
|
old_ucr1 = UCR1((u32)sport->port.membase);
|
||||||
UCR1((u32)sport->port.membase) &= ~(UCR1_TXMPTYEN | UCR1_RRDYEN);
|
UCR1((u32)sport->port.membase) &= ~(UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_RTSDEN);
|
||||||
|
|
||||||
while ( !(USR2((u32)sport->port.membase) & USR2_TXDC))
|
while ( !(USR2((u32)sport->port.membase) & USR2_TXDC))
|
||||||
barrier();
|
barrier();
|
||||||
|
@ -643,6 +668,7 @@ static struct imx_port imx_ports[] = {
|
||||||
{
|
{
|
||||||
.txirq = UART1_MINT_TX,
|
.txirq = UART1_MINT_TX,
|
||||||
.rxirq = UART1_MINT_RX,
|
.rxirq = UART1_MINT_RX,
|
||||||
|
.rtsirq = UART1_MINT_RTS,
|
||||||
.port = {
|
.port = {
|
||||||
.type = PORT_IMX,
|
.type = PORT_IMX,
|
||||||
.iotype = SERIAL_IO_MEM,
|
.iotype = SERIAL_IO_MEM,
|
||||||
|
@ -658,6 +684,7 @@ static struct imx_port imx_ports[] = {
|
||||||
}, {
|
}, {
|
||||||
.txirq = UART2_MINT_TX,
|
.txirq = UART2_MINT_TX,
|
||||||
.rxirq = UART2_MINT_RX,
|
.rxirq = UART2_MINT_RX,
|
||||||
|
.rtsirq = UART2_MINT_RTS,
|
||||||
.port = {
|
.port = {
|
||||||
.type = PORT_IMX,
|
.type = PORT_IMX,
|
||||||
.iotype = SERIAL_IO_MEM,
|
.iotype = SERIAL_IO_MEM,
|
||||||
|
@ -737,7 +764,7 @@ imx_console_write(struct console *co, const char *s, unsigned int count)
|
||||||
|
|
||||||
UCR1((u32)sport->port.membase) =
|
UCR1((u32)sport->port.membase) =
|
||||||
(old_ucr1 | UCR1_UARTCLKEN | UCR1_UARTEN)
|
(old_ucr1 | UCR1_UARTCLKEN | UCR1_UARTEN)
|
||||||
& ~(UCR1_TXMPTYEN | UCR1_RRDYEN);
|
& ~(UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_RTSDEN);
|
||||||
UCR2((u32)sport->port.membase) = old_ucr2 | UCR2_TXEN;
|
UCR2((u32)sport->port.membase) = old_ucr2 | UCR2_TXEN;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -499,7 +499,7 @@ serial_pxa_set_termios(struct uart_port *port, struct termios *termios,
|
||||||
/*
|
/*
|
||||||
* Update the per-port timeout.
|
* Update the per-port timeout.
|
||||||
*/
|
*/
|
||||||
uart_update_timeout(port, termios->c_cflag, quot);
|
uart_update_timeout(port, termios->c_cflag, baud);
|
||||||
|
|
||||||
up->port.read_status_mask = UART_LSR_OE | UART_LSR_THRE | UART_LSR_DR;
|
up->port.read_status_mask = UART_LSR_OE | UART_LSR_THRE | UART_LSR_DR;
|
||||||
if (termios->c_iflag & INPCK)
|
if (termios->c_iflag & INPCK)
|
||||||
|
|
|
@ -1092,8 +1092,8 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport,
|
||||||
|
|
||||||
static int probe_index = 0;
|
static int probe_index = 0;
|
||||||
|
|
||||||
int s3c24xx_serial_probe(struct device *_dev,
|
static int s3c24xx_serial_probe(struct device *_dev,
|
||||||
struct s3c24xx_uart_info *info)
|
struct s3c24xx_uart_info *info)
|
||||||
{
|
{
|
||||||
struct s3c24xx_uart_port *ourport;
|
struct s3c24xx_uart_port *ourport;
|
||||||
struct platform_device *dev = to_platform_device(_dev);
|
struct platform_device *dev = to_platform_device(_dev);
|
||||||
|
@ -1120,7 +1120,7 @@ int s3c24xx_serial_probe(struct device *_dev,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int s3c24xx_serial_remove(struct device *_dev)
|
static int s3c24xx_serial_remove(struct device *_dev)
|
||||||
{
|
{
|
||||||
struct uart_port *port = s3c24xx_dev_to_port(_dev);
|
struct uart_port *port = s3c24xx_dev_to_port(_dev);
|
||||||
|
|
||||||
|
@ -1134,7 +1134,8 @@ int s3c24xx_serial_remove(struct device *_dev)
|
||||||
|
|
||||||
#ifdef CONFIG_PM
|
#ifdef CONFIG_PM
|
||||||
|
|
||||||
int s3c24xx_serial_suspend(struct device *dev, pm_message_t state, u32 level)
|
static int s3c24xx_serial_suspend(struct device *dev, pm_message_t state,
|
||||||
|
u32 level)
|
||||||
{
|
{
|
||||||
struct uart_port *port = s3c24xx_dev_to_port(dev);
|
struct uart_port *port = s3c24xx_dev_to_port(dev);
|
||||||
|
|
||||||
|
@ -1144,7 +1145,7 @@ int s3c24xx_serial_suspend(struct device *dev, pm_message_t state, u32 level)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int s3c24xx_serial_resume(struct device *dev, u32 level)
|
static int s3c24xx_serial_resume(struct device *dev, u32 level)
|
||||||
{
|
{
|
||||||
struct uart_port *port = s3c24xx_dev_to_port(dev);
|
struct uart_port *port = s3c24xx_dev_to_port(dev);
|
||||||
struct s3c24xx_uart_port *ourport = to_ourport(port);
|
struct s3c24xx_uart_port *ourport = to_ourport(port);
|
||||||
|
@ -1165,8 +1166,8 @@ int s3c24xx_serial_resume(struct device *dev, u32 level)
|
||||||
#define s3c24xx_serial_resume NULL
|
#define s3c24xx_serial_resume NULL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int s3c24xx_serial_init(struct device_driver *drv,
|
static int s3c24xx_serial_init(struct device_driver *drv,
|
||||||
struct s3c24xx_uart_info *info)
|
struct s3c24xx_uart_info *info)
|
||||||
{
|
{
|
||||||
dbg("s3c24xx_serial_init(%p,%p)\n", drv, info);
|
dbg("s3c24xx_serial_init(%p,%p)\n", drv, info);
|
||||||
return driver_register(drv);
|
return driver_register(drv);
|
||||||
|
|
|
@ -126,8 +126,8 @@
|
||||||
#define DRCMR12 __REG(0x40000130) /* Request to Channel Map Register for AC97 audio transmit Request */
|
#define DRCMR12 __REG(0x40000130) /* Request to Channel Map Register for AC97 audio transmit Request */
|
||||||
#define DRCMR13 __REG(0x40000134) /* Request to Channel Map Register for SSP receive Request */
|
#define DRCMR13 __REG(0x40000134) /* Request to Channel Map Register for SSP receive Request */
|
||||||
#define DRCMR14 __REG(0x40000138) /* Request to Channel Map Register for SSP transmit Request */
|
#define DRCMR14 __REG(0x40000138) /* Request to Channel Map Register for SSP transmit Request */
|
||||||
#define DRCMR15 __REG(0x4000013c) /* Reserved */
|
#define DRCMR15 __REG(0x4000013c) /* Request to Channel Map Register for SSP2 receive Request */
|
||||||
#define DRCMR16 __REG(0x40000140) /* Reserved */
|
#define DRCMR16 __REG(0x40000140) /* Request to Channel Map Register for SSP2 transmit Request */
|
||||||
#define DRCMR17 __REG(0x40000144) /* Request to Channel Map Register for ICP receive Request */
|
#define DRCMR17 __REG(0x40000144) /* Request to Channel Map Register for ICP receive Request */
|
||||||
#define DRCMR18 __REG(0x40000148) /* Request to Channel Map Register for ICP transmit Request */
|
#define DRCMR18 __REG(0x40000148) /* Request to Channel Map Register for ICP transmit Request */
|
||||||
#define DRCMR19 __REG(0x4000014c) /* Request to Channel Map Register for STUART receive Request */
|
#define DRCMR19 __REG(0x4000014c) /* Request to Channel Map Register for STUART receive Request */
|
||||||
|
@ -151,7 +151,8 @@
|
||||||
#define DRCMR37 __REG(0x40000194) /* Request to Channel Map Register for USB endpoint 13 Request */
|
#define DRCMR37 __REG(0x40000194) /* Request to Channel Map Register for USB endpoint 13 Request */
|
||||||
#define DRCMR38 __REG(0x40000198) /* Request to Channel Map Register for USB endpoint 14 Request */
|
#define DRCMR38 __REG(0x40000198) /* Request to Channel Map Register for USB endpoint 14 Request */
|
||||||
#define DRCMR39 __REG(0x4000019C) /* Reserved */
|
#define DRCMR39 __REG(0x4000019C) /* Reserved */
|
||||||
|
#define DRCMR66 __REG(0x40001108) /* Request to Channel Map Register for SSP3 receive Request */
|
||||||
|
#define DRCMR67 __REG(0x4000110C) /* Request to Channel Map Register for SSP3 transmit Request */
|
||||||
#define DRCMR68 __REG(0x40001110) /* Request to Channel Map Register for Camera FIFO 0 Request */
|
#define DRCMR68 __REG(0x40001110) /* Request to Channel Map Register for Camera FIFO 0 Request */
|
||||||
#define DRCMR69 __REG(0x40001114) /* Request to Channel Map Register for Camera FIFO 1 Request */
|
#define DRCMR69 __REG(0x40001114) /* Request to Channel Map Register for Camera FIFO 1 Request */
|
||||||
#define DRCMR70 __REG(0x40001118) /* Request to Channel Map Register for Camera FIFO 2 Request */
|
#define DRCMR70 __REG(0x40001118) /* Request to Channel Map Register for Camera FIFO 2 Request */
|
||||||
|
|
|
@ -92,6 +92,13 @@ extern unsigned int s3c2410_gpio_getpin(unsigned int pin);
|
||||||
|
|
||||||
extern unsigned int s3c2410_modify_misccr(unsigned int clr, unsigned int chg);
|
extern unsigned int s3c2410_modify_misccr(unsigned int clr, unsigned int chg);
|
||||||
|
|
||||||
|
#ifdef CONFIG_CPU_S3C2440
|
||||||
|
|
||||||
|
extern int s3c2440_set_dsc(unsigned int pin, unsigned int value);
|
||||||
|
|
||||||
|
#endif /* CONFIG_CPU_S3C2440 */
|
||||||
|
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
#include <asm/sizes.h>
|
#include <asm/sizes.h>
|
||||||
|
|
Loading…
Add table
Reference in a new issue