Commit b904d713 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of git://www.jni.nu/cris

* 'for-linus' of git://www.jni.nu/cris:
  CRIS: Don't use mask_irq as symbol name
  CRIS: Simplify param.h by simply including <asm-generic/param.h>
  CRISv10: Whitespace fixes for hw_settings.S
  CRISv10: Trivial fixes.
  CRISv32: Fix RS485 port 4 CD Kconfig item.
  CRISv32: Remove duplicated Kconfig items.
  cris: push down BKL into some device drivers
parents 2e8949f0 4150764f
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/miscdevice.h> #include <linux/miscdevice.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/smp_lock.h>
#include <linux/bcd.h> #include <linux/bcd.h>
#include <linux/capability.h> #include <linux/capability.h>
...@@ -238,9 +239,7 @@ static unsigned char days_in_mo[] = ...@@ -238,9 +239,7 @@ static unsigned char days_in_mo[] =
/* ioctl that supports RTC_RD_TIME and RTC_SET_TIME (read and set time/date). */ /* ioctl that supports RTC_RD_TIME and RTC_SET_TIME (read and set time/date). */
static int static int rtc_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
rtc_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
unsigned long arg)
{ {
unsigned long flags; unsigned long flags;
...@@ -354,6 +353,17 @@ rtc_ioctl(struct inode *inode, struct file *file, unsigned int cmd, ...@@ -354,6 +353,17 @@ rtc_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
} }
} }
static long rtc_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
int ret;
lock_kernel();
ret = rtc_ioctl(file, cmd, arg);
unlock_kernel();
return ret;
}
static void static void
print_rtc_status(void) print_rtc_status(void)
{ {
...@@ -376,7 +386,7 @@ print_rtc_status(void) ...@@ -376,7 +386,7 @@ print_rtc_status(void)
static const struct file_operations rtc_fops = { static const struct file_operations rtc_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.ioctl = rtc_ioctl, .unlocked_ioctl = rtc_unlocked_ioctl,
}; };
/* Probe for the chip by writing something to its RAM and try reading it back. */ /* Probe for the chip by writing something to its RAM and try reading it back. */
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/bcd.h> #include <linux/bcd.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/smp_lock.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/system.h> #include <asm/system.h>
...@@ -53,7 +54,7 @@ static DEFINE_MUTEX(rtc_lock); /* Protect state etc */ ...@@ -53,7 +54,7 @@ static DEFINE_MUTEX(rtc_lock); /* Protect state etc */
static const unsigned char days_in_month[] = static const unsigned char days_in_month[] =
{ 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int pcf8563_ioctl(struct inode *, struct file *, unsigned int, unsigned long); static long pcf8563_unlocked_ioctl(struct file *, unsigned int, unsigned long);
/* Cache VL bit value read at driver init since writing the RTC_SECOND /* Cache VL bit value read at driver init since writing the RTC_SECOND
* register clears the VL status. * register clears the VL status.
...@@ -62,7 +63,7 @@ static int voltage_low; ...@@ -62,7 +63,7 @@ static int voltage_low;
static const struct file_operations pcf8563_fops = { static const struct file_operations pcf8563_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.ioctl = pcf8563_ioctl, .unlocked_ioctl = pcf8563_unlocked_ioctl,
}; };
unsigned char unsigned char
...@@ -212,8 +213,7 @@ pcf8563_exit(void) ...@@ -212,8 +213,7 @@ pcf8563_exit(void)
* ioctl calls for this driver. Why return -ENOTTY upon error? Because * ioctl calls for this driver. Why return -ENOTTY upon error? Because
* POSIX says so! * POSIX says so!
*/ */
int pcf8563_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, static int pcf8563_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
unsigned long arg)
{ {
/* Some sanity checks. */ /* Some sanity checks. */
if (_IOC_TYPE(cmd) != RTC_MAGIC) if (_IOC_TYPE(cmd) != RTC_MAGIC)
...@@ -339,6 +339,17 @@ int pcf8563_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, ...@@ -339,6 +339,17 @@ int pcf8563_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
return 0; return 0;
} }
static long pcf8563_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
int ret;
lock_kernel();
return pcf8563_ioctl(filp, cmd, arg);
unlock_kernel();
return ret;
}
static int __init pcf8563_register(void) static int __init pcf8563_register(void)
{ {
if (pcf8563_init() < 0) { if (pcf8563_init() < 0) {
......
...@@ -17,8 +17,8 @@ ...@@ -17,8 +17,8 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/init.h> #include <linux/init.h>
#define mask_irq(irq_nr) (*R_VECT_MASK_CLR = 1 << (irq_nr)); #define crisv10_mask_irq(irq_nr) (*R_VECT_MASK_CLR = 1 << (irq_nr));
#define unmask_irq(irq_nr) (*R_VECT_MASK_SET = 1 << (irq_nr)); #define crisv10_unmask_irq(irq_nr) (*R_VECT_MASK_SET = 1 << (irq_nr));
/* don't use set_int_vector, it bypasses the linux interrupt handlers. it is /* don't use set_int_vector, it bypasses the linux interrupt handlers. it is
* global just so that the kernel gdb can use it. * global just so that the kernel gdb can use it.
...@@ -116,12 +116,12 @@ static unsigned int startup_crisv10_irq(unsigned int irq) ...@@ -116,12 +116,12 @@ static unsigned int startup_crisv10_irq(unsigned int irq)
static void enable_crisv10_irq(unsigned int irq) static void enable_crisv10_irq(unsigned int irq)
{ {
unmask_irq(irq); crisv10_unmask_irq(irq);
} }
static void disable_crisv10_irq(unsigned int irq) static void disable_crisv10_irq(unsigned int irq)
{ {
mask_irq(irq); crisv10_mask_irq(irq);
} }
static void ack_crisv10_irq(unsigned int irq) static void ack_crisv10_irq(unsigned int irq)
......
/* $Id: dmacopy.c,v 1.1 2001/12/17 13:59:27 bjornw Exp $ /*
*
* memcpy for large blocks, using memory-memory DMA channels 6 and 7 in Etrax * memcpy for large blocks, using memory-memory DMA channels 6 and 7 in Etrax
*/ */
...@@ -14,7 +13,7 @@ void *dma_memcpy(void *pdst, ...@@ -14,7 +13,7 @@ void *dma_memcpy(void *pdst,
{ {
static etrax_dma_descr indma, outdma; static etrax_dma_descr indma, outdma;
D(printk("dma_memcpy %d bytes... ", pn)); D(printk(KERN_DEBUG "dma_memcpy %d bytes... ", pn));
#if 0 #if 0
*R_GEN_CONFIG = genconfig_shadow = *R_GEN_CONFIG = genconfig_shadow =
...@@ -33,10 +32,10 @@ void *dma_memcpy(void *pdst, ...@@ -33,10 +32,10 @@ void *dma_memcpy(void *pdst,
*R_DMA_CH6_CMD = IO_STATE(R_DMA_CH6_CMD, cmd, start); *R_DMA_CH6_CMD = IO_STATE(R_DMA_CH6_CMD, cmd, start);
*R_DMA_CH7_CMD = IO_STATE(R_DMA_CH7_CMD, cmd, start); *R_DMA_CH7_CMD = IO_STATE(R_DMA_CH7_CMD, cmd, start);
while(*R_DMA_CH7_CMD == 1) /* wait for completion */ ; while (*R_DMA_CH7_CMD == 1)
/* wait for completion */;
D(printk("done\n"));
D(printk(KERN_DEBUG "done\n"));
} }
......
/* /*
* $Id: hw_settings.S,v 1.1 2001/12/17 13:59:27 bjornw Exp $
*
* This table is used by some tools to extract hardware parameters. * This table is used by some tools to extract hardware parameters.
* The table should be included in the kernel and the decompressor. * The table should be included in the kernel and the decompressor.
* Don't forget to update the tools if you change this table. * Don't forget to update the tools if you change this table.
......
...@@ -360,24 +360,10 @@ config ETRAX_SER4_DSR_BIT ...@@ -360,24 +360,10 @@ config ETRAX_SER4_DSR_BIT
string "Ser 4 DSR bit (empty = not used)" string "Ser 4 DSR bit (empty = not used)"
depends on ETRAX_SERIAL_PORT4 depends on ETRAX_SERIAL_PORT4
config ETRAX_SER3_CD_BIT config ETRAX_SER4_CD_BIT
string "Ser 4 CD bit (empty = not used)" string "Ser 4 CD bit (empty = not used)"
depends on ETRAX_SERIAL_PORT4 depends on ETRAX_SERIAL_PORT4
config ETRAX_RS485
bool "RS-485 support"
depends on ETRAXFS_SERIAL
help
Enables support for RS-485 serial communication. For a primer on
RS-485, see <http://www.hw.cz/english/docs/rs485/rs485.html>.
config ETRAX_RS485_DISABLE_RECEIVER
bool "Disable serial receiver"
depends on ETRAX_RS485
help
It is necessary to disable the serial receiver to avoid serial
loopback. Not all products are able to do this in software only.
config ETRAX_SYNCHRONOUS_SERIAL config ETRAX_SYNCHRONOUS_SERIAL
bool "Synchronous serial-port support" bool "Synchronous serial-port support"
depends on ETRAX_ARCH_V32 depends on ETRAX_ARCH_V32
......
...@@ -649,10 +649,10 @@ i2c_release(struct inode *inode, struct file *filp) ...@@ -649,10 +649,10 @@ i2c_release(struct inode *inode, struct file *filp)
/* Main device API. ioctl's to write or read to/from i2c registers. /* Main device API. ioctl's to write or read to/from i2c registers.
*/ */
static int static long
i2c_ioctl(struct inode *inode, struct file *file, i2c_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
unsigned int cmd, unsigned long arg)
{ {
int ret;
if(_IOC_TYPE(cmd) != ETRAXI2C_IOCTYPE) { if(_IOC_TYPE(cmd) != ETRAXI2C_IOCTYPE) {
return -ENOTTY; return -ENOTTY;
} }
...@@ -665,9 +665,13 @@ i2c_ioctl(struct inode *inode, struct file *file, ...@@ -665,9 +665,13 @@ i2c_ioctl(struct inode *inode, struct file *file,
I2C_ARGREG(arg), I2C_ARGREG(arg),
I2C_ARGVALUE(arg))); I2C_ARGVALUE(arg)));
return i2c_writereg(I2C_ARGSLAVE(arg), lock_kernel();
ret = i2c_writereg(I2C_ARGSLAVE(arg),
I2C_ARGREG(arg), I2C_ARGREG(arg),
I2C_ARGVALUE(arg)); I2C_ARGVALUE(arg));
unlock_kernel();
return ret;
case I2C_READREG: case I2C_READREG:
{ {
unsigned char val; unsigned char val;
...@@ -675,7 +679,9 @@ i2c_ioctl(struct inode *inode, struct file *file, ...@@ -675,7 +679,9 @@ i2c_ioctl(struct inode *inode, struct file *file,
D(printk("i2cr %d %d ", D(printk("i2cr %d %d ",
I2C_ARGSLAVE(arg), I2C_ARGSLAVE(arg),
I2C_ARGREG(arg))); I2C_ARGREG(arg)));
lock_kernel();
val = i2c_readreg(I2C_ARGSLAVE(arg), I2C_ARGREG(arg)); val = i2c_readreg(I2C_ARGSLAVE(arg), I2C_ARGREG(arg));
unlock_kernel();
D(printk("= %d\n", val)); D(printk("= %d\n", val));
return val; return val;
} }
...@@ -689,7 +695,7 @@ i2c_ioctl(struct inode *inode, struct file *file, ...@@ -689,7 +695,7 @@ i2c_ioctl(struct inode *inode, struct file *file,
static const struct file_operations i2c_fops = { static const struct file_operations i2c_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.ioctl = i2c_ioctl, .unlocked_ioctl = i2c_ioctl,
.open = i2c_open, .open = i2c_open,
.release = i2c_release, .release = i2c_release,
}; };
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/ioctl.h> #include <linux/ioctl.h>
#include <linux/smp_lock.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/bcd.h> #include <linux/bcd.h>
#include <linux/mutex.h> #include <linux/mutex.h>
...@@ -49,7 +50,7 @@ static DEFINE_MUTEX(rtc_lock); /* Protect state etc */ ...@@ -49,7 +50,7 @@ static DEFINE_MUTEX(rtc_lock); /* Protect state etc */
static const unsigned char days_in_month[] = static const unsigned char days_in_month[] =
{ 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int pcf8563_ioctl(struct inode *, struct file *, unsigned int, unsigned long); static long pcf8563_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg);
/* Cache VL bit value read at driver init since writing the RTC_SECOND /* Cache VL bit value read at driver init since writing the RTC_SECOND
* register clears the VL status. * register clears the VL status.
...@@ -58,7 +59,7 @@ static int voltage_low; ...@@ -58,7 +59,7 @@ static int voltage_low;
static const struct file_operations pcf8563_fops = { static const struct file_operations pcf8563_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.ioctl = pcf8563_ioctl .unlocked_ioctl = pcf8563_unlocked_ioctl,
}; };
unsigned char unsigned char
...@@ -208,8 +209,7 @@ pcf8563_exit(void) ...@@ -208,8 +209,7 @@ pcf8563_exit(void)
* ioctl calls for this driver. Why return -ENOTTY upon error? Because * ioctl calls for this driver. Why return -ENOTTY upon error? Because
* POSIX says so! * POSIX says so!
*/ */
int pcf8563_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, static int pcf8563_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
unsigned long arg)
{ {
/* Some sanity checks. */ /* Some sanity checks. */
if (_IOC_TYPE(cmd) != RTC_MAGIC) if (_IOC_TYPE(cmd) != RTC_MAGIC)
...@@ -335,6 +335,17 @@ int pcf8563_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, ...@@ -335,6 +335,17 @@ int pcf8563_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
return 0; return 0;
} }
static long pcf8563_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
int ret;
lock_kernel();
return pcf8563_ioctl(filp, cmd, arg);
unlock_kernel();
return ret;
}
static int __init pcf8563_register(void) static int __init pcf8563_register(void)
{ {
if (pcf8563_init() < 0) { if (pcf8563_init() < 0) {
......
...@@ -24,5 +24,5 @@ EXPORT_SYMBOL(crisv32_io_get_name); ...@@ -24,5 +24,5 @@ EXPORT_SYMBOL(crisv32_io_get_name);
EXPORT_SYMBOL(crisv32_io_get); EXPORT_SYMBOL(crisv32_io_get);
/* Functions masking/unmasking interrupts */ /* Functions masking/unmasking interrupts */
EXPORT_SYMBOL(mask_irq); EXPORT_SYMBOL(crisv32_mask_irq);
EXPORT_SYMBOL(unmask_irq); EXPORT_SYMBOL(crisv32_unmask_irq);
...@@ -280,8 +280,7 @@ static int irq_cpu(int irq) ...@@ -280,8 +280,7 @@ static int irq_cpu(int irq)
return cpu; return cpu;
} }
void void crisv32_mask_irq(int irq)
mask_irq(int irq)
{ {
int cpu; int cpu;
...@@ -289,8 +288,7 @@ mask_irq(int irq) ...@@ -289,8 +288,7 @@ mask_irq(int irq)
block_irq(irq, cpu); block_irq(irq, cpu);
} }
void void crisv32_unmask_irq(int irq)
unmask_irq(int irq)
{ {
unblock_irq(irq, irq_cpu(irq)); unblock_irq(irq, irq_cpu(irq));
} }
...@@ -298,23 +296,23 @@ unmask_irq(int irq) ...@@ -298,23 +296,23 @@ unmask_irq(int irq)
static unsigned int startup_crisv32_irq(unsigned int irq) static unsigned int startup_crisv32_irq(unsigned int irq)
{ {
unmask_irq(irq); crisv32_unmask_irq(irq);
return 0; return 0;
} }
static void shutdown_crisv32_irq(unsigned int irq) static void shutdown_crisv32_irq(unsigned int irq)
{ {
mask_irq(irq); crisv32_mask_irq(irq);
} }
static void enable_crisv32_irq(unsigned int irq) static void enable_crisv32_irq(unsigned int irq)
{ {
unmask_irq(irq); crisv32_unmask_irq(irq);
} }
static void disable_crisv32_irq(unsigned int irq) static void disable_crisv32_irq(unsigned int irq)
{ {
mask_irq(irq); crisv32_mask_irq(irq);
} }
static void ack_crisv32_irq(unsigned int irq) static void ack_crisv32_irq(unsigned int irq)
......
...@@ -168,8 +168,8 @@ void __init smp_callin(void) ...@@ -168,8 +168,8 @@ void __init smp_callin(void)
/* Enable IRQ and idle */ /* Enable IRQ and idle */
REG_WR(intr_vect, irq_regs[cpu], rw_mask, vect_mask); REG_WR(intr_vect, irq_regs[cpu], rw_mask, vect_mask);
unmask_irq(IPI_INTR_VECT); crisv32_unmask_irq(IPI_INTR_VECT);
unmask_irq(TIMER0_INTR_VECT); crisv32_unmask_irq(TIMER0_INTR_VECT);
preempt_disable(); preempt_disable();
notify_cpu_starting(cpu); notify_cpu_starting(cpu);
local_irq_enable(); local_irq_enable();
......
...@@ -93,7 +93,8 @@ void set_break_vector(int n, irqvectptr addr); ...@@ -93,7 +93,8 @@ void set_break_vector(int n, irqvectptr addr);
"push $r10\n\t" /* push orig_r10 */ \ "push $r10\n\t" /* push orig_r10 */ \
"clear.d [$sp=$sp-4]\n\t" /* frametype - this is a normal stackframe */ "clear.d [$sp=$sp-4]\n\t" /* frametype - this is a normal stackframe */
/* BLOCK_IRQ and UNBLOCK_IRQ do the same as mask_irq and unmask_irq */ /* BLOCK_IRQ and UNBLOCK_IRQ do the same as
* crisv10_mask_irq and crisv10_unmask_irq */
#define BLOCK_IRQ(mask,nr) \ #define BLOCK_IRQ(mask,nr) \
"move.d " #mask ",$r0\n\t" \ "move.d " #mask ",$r0\n\t" \
......
...@@ -23,8 +23,8 @@ struct etrax_interrupt_vector { ...@@ -23,8 +23,8 @@ struct etrax_interrupt_vector {
extern struct etrax_interrupt_vector *etrax_irv; /* head.S */ extern struct etrax_interrupt_vector *etrax_irv; /* head.S */
void mask_irq(int irq); void crisv32_mask_irq(int irq);
void unmask_irq(int irq); void crisv32_unmask_irq(int irq);
void set_exception_vector(int n, irqvectptr addr); void set_exception_vector(int n, irqvectptr addr);
......
...@@ -2,22 +2,9 @@ ...@@ -2,22 +2,9 @@
#define _ASMCRIS_PARAM_H #define _ASMCRIS_PARAM_H
/* Currently we assume that HZ=100 is good for CRIS. */ /* Currently we assume that HZ=100 is good for CRIS. */
#ifdef __KERNEL__
# define HZ CONFIG_HZ /* Internal kernel timer frequency */
# define USER_HZ 100 /* .. some user interfaces are in "ticks" */
# define CLOCKS_PER_SEC (USER_HZ) /* like times() */
#endif
#ifndef HZ
#define HZ 100
#endif
#define EXEC_PAGESIZE 8192 #define EXEC_PAGESIZE 8192
#ifndef NOGROUP #include <asm-generic/param.h>
#define NOGROUP (-1)
#endif
#define MAXHOSTNAMELEN 64 /* max length of hostname */
#endif #endif /* _ASMCRIS_PARAM_H */
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