mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 00:50:54 +07:00
staging: lirc: remove sa1100 support
The LIRC support for sa1100 appears to have never worked because it relies on header files that have never been present in git history. Actually trying to build the driver on an ARM sa1100 kernel fails, so let's just remove the broken support. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Cc: Jarod Wilson <jarod@wilsonet.com> Cc: Mauro Carvalho Chehab <m.chehab@samsung.com> Cc: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi> Cc: linux-media@vger.kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
cfa880069d
commit
c72374ff0d
@ -55,13 +55,6 @@
|
||||
#include <asm/irq.h>
|
||||
#include <linux/fcntl.h>
|
||||
#include <linux/platform_device.h>
|
||||
#ifdef LIRC_ON_SA1100
|
||||
#include <asm/hardware.h>
|
||||
#ifdef CONFIG_SA1100_COLLIE
|
||||
#include <asm/arch/tc35143.h>
|
||||
#include <asm/ucb1200.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <linux/timer.h>
|
||||
|
||||
@ -94,35 +87,6 @@ static void init_act200(void);
|
||||
static void init_act220(void);
|
||||
#endif
|
||||
|
||||
/*** SA1100 ***/
|
||||
#ifdef LIRC_ON_SA1100
|
||||
struct sa1100_ser2_registers {
|
||||
/* HSSP control register */
|
||||
unsigned char hscr0;
|
||||
/* UART registers */
|
||||
unsigned char utcr0;
|
||||
unsigned char utcr1;
|
||||
unsigned char utcr2;
|
||||
unsigned char utcr3;
|
||||
unsigned char utcr4;
|
||||
unsigned char utdr;
|
||||
unsigned char utsr0;
|
||||
unsigned char utsr1;
|
||||
} sr;
|
||||
|
||||
static int irq = IRQ_Ser2ICP;
|
||||
|
||||
#define LIRC_ON_SA1100_TRANSMITTER_LATENCY 0
|
||||
|
||||
/* pulse/space ratio of 50/50 */
|
||||
static unsigned long pulse_width = (13-LIRC_ON_SA1100_TRANSMITTER_LATENCY);
|
||||
/* 1000000/freq-pulse_width */
|
||||
static unsigned long space_width = (13-LIRC_ON_SA1100_TRANSMITTER_LATENCY);
|
||||
static unsigned int freq = 38000; /* modulation frequency */
|
||||
static unsigned int duty_cycle = 50; /* duty cycle of 50% */
|
||||
|
||||
#endif
|
||||
|
||||
#define RBUF_LEN 1024
|
||||
#define WBUF_LEN 1024
|
||||
|
||||
@ -205,17 +169,6 @@ static void drop_hardware(void);
|
||||
static int init_port(void);
|
||||
static void drop_port(void);
|
||||
|
||||
#ifdef LIRC_ON_SA1100
|
||||
static void on(void)
|
||||
{
|
||||
PPSR |= PPC_TXD2;
|
||||
}
|
||||
|
||||
static void off(void)
|
||||
{
|
||||
PPSR &= ~PPC_TXD2;
|
||||
}
|
||||
#else
|
||||
static inline unsigned int sinp(int offset)
|
||||
{
|
||||
return inb(io + offset);
|
||||
@ -225,7 +178,6 @@ static inline void soutp(int offset, int value)
|
||||
{
|
||||
outb(value, io + offset);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef MAX_UDELAY_MS
|
||||
#define MAX_UDELAY_US 5000
|
||||
@ -305,10 +257,6 @@ static ssize_t lirc_write(struct file *file, const char __user *buf, size_t n,
|
||||
if (IS_ERR(tx_buf))
|
||||
return PTR_ERR(tx_buf);
|
||||
i = 0;
|
||||
#ifdef LIRC_ON_SA1100
|
||||
/* disable receiver */
|
||||
Ser2UTCR3 = 0;
|
||||
#endif
|
||||
local_irq_save(flags);
|
||||
while (1) {
|
||||
if (i >= count)
|
||||
@ -323,15 +271,6 @@ static ssize_t lirc_write(struct file *file, const char __user *buf, size_t n,
|
||||
i++;
|
||||
}
|
||||
local_irq_restore(flags);
|
||||
#ifdef LIRC_ON_SA1100
|
||||
off();
|
||||
udelay(1000); /* wait 1ms for IR diode to recover */
|
||||
Ser2UTCR3 = 0;
|
||||
/* clear status register to prevent unwanted interrupts */
|
||||
Ser2UTSR0 &= (UTSR0_RID | UTSR0_RBB | UTSR0_REB);
|
||||
/* enable receiver */
|
||||
Ser2UTCR3 = UTCR3_RXE|UTCR3_RIE;
|
||||
#endif
|
||||
kfree(tx_buf);
|
||||
return count;
|
||||
}
|
||||
@ -341,25 +280,12 @@ static long lirc_ioctl(struct file *filep, unsigned int cmd, unsigned long arg)
|
||||
u32 __user *uptr = (u32 __user *)arg;
|
||||
int retval = 0;
|
||||
u32 value = 0;
|
||||
#ifdef LIRC_ON_SA1100
|
||||
|
||||
if (cmd == LIRC_GET_FEATURES)
|
||||
value = LIRC_CAN_SEND_PULSE |
|
||||
LIRC_CAN_SET_SEND_DUTY_CYCLE |
|
||||
LIRC_CAN_SET_SEND_CARRIER |
|
||||
LIRC_CAN_REC_MODE2;
|
||||
else if (cmd == LIRC_GET_SEND_MODE)
|
||||
value = LIRC_MODE_PULSE;
|
||||
else if (cmd == LIRC_GET_REC_MODE)
|
||||
value = LIRC_MODE_MODE2;
|
||||
#else
|
||||
if (cmd == LIRC_GET_FEATURES)
|
||||
value = LIRC_CAN_SEND_PULSE | LIRC_CAN_REC_MODE2;
|
||||
else if (cmd == LIRC_GET_SEND_MODE)
|
||||
value = LIRC_MODE_PULSE;
|
||||
else if (cmd == LIRC_GET_REC_MODE)
|
||||
value = LIRC_MODE_MODE2;
|
||||
#endif
|
||||
|
||||
switch (cmd) {
|
||||
case LIRC_GET_FEATURES:
|
||||
@ -372,37 +298,6 @@ static long lirc_ioctl(struct file *filep, unsigned int cmd, unsigned long arg)
|
||||
case LIRC_SET_REC_MODE:
|
||||
retval = get_user(value, uptr);
|
||||
break;
|
||||
#ifdef LIRC_ON_SA1100
|
||||
case LIRC_SET_SEND_DUTY_CYCLE:
|
||||
retval = get_user(value, uptr);
|
||||
if (retval)
|
||||
return retval;
|
||||
if (value <= 0 || value > 100)
|
||||
return -EINVAL;
|
||||
/* (value/100)*(1000000/freq) */
|
||||
duty_cycle = value;
|
||||
pulse_width = (unsigned long) duty_cycle*10000/freq;
|
||||
space_width = (unsigned long) 1000000L/freq-pulse_width;
|
||||
if (pulse_width >= LIRC_ON_SA1100_TRANSMITTER_LATENCY)
|
||||
pulse_width -= LIRC_ON_SA1100_TRANSMITTER_LATENCY;
|
||||
if (space_width >= LIRC_ON_SA1100_TRANSMITTER_LATENCY)
|
||||
space_width -= LIRC_ON_SA1100_TRANSMITTER_LATENCY;
|
||||
break;
|
||||
case LIRC_SET_SEND_CARRIER:
|
||||
retval = get_user(value, uptr);
|
||||
if (retval)
|
||||
return retval;
|
||||
if (value > 500000 || value < 20000)
|
||||
return -EINVAL;
|
||||
freq = value;
|
||||
pulse_width = (unsigned long) duty_cycle*10000/freq;
|
||||
space_width = (unsigned long) 1000000L/freq-pulse_width;
|
||||
if (pulse_width >= LIRC_ON_SA1100_TRANSMITTER_LATENCY)
|
||||
pulse_width -= LIRC_ON_SA1100_TRANSMITTER_LATENCY;
|
||||
if (space_width >= LIRC_ON_SA1100_TRANSMITTER_LATENCY)
|
||||
space_width -= LIRC_ON_SA1100_TRANSMITTER_LATENCY;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
retval = -ENOIOCTLCMD;
|
||||
|
||||
@ -539,10 +434,8 @@ static void sir_timeout(unsigned long data)
|
||||
/* avoid interference with interrupt */
|
||||
spin_lock_irqsave(&timer_lock, flags);
|
||||
if (last_value) {
|
||||
#ifndef LIRC_ON_SA1100
|
||||
/* clear unread bits in UART and restart */
|
||||
outb(UART_FCR_CLEAR_RCVR, io + UART_FCR);
|
||||
#endif
|
||||
/* determine 'virtual' pulse end: */
|
||||
pulse_end = delta(&last_tv, &last_intr_tv);
|
||||
dprintk("timeout add %d for %lu usec\n", last_value, pulse_end);
|
||||
@ -558,62 +451,6 @@ static irqreturn_t sir_interrupt(int irq, void *dev_id)
|
||||
unsigned char data;
|
||||
struct timeval curr_tv;
|
||||
static unsigned long deltv;
|
||||
#ifdef LIRC_ON_SA1100
|
||||
int status;
|
||||
static int n;
|
||||
|
||||
status = Ser2UTSR0;
|
||||
/*
|
||||
* Deal with any receive errors first. The bytes in error may be
|
||||
* the only bytes in the receive FIFO, so we do this first.
|
||||
*/
|
||||
while (status & UTSR0_EIF) {
|
||||
int bstat;
|
||||
|
||||
if (debug) {
|
||||
dprintk("EIF\n");
|
||||
bstat = Ser2UTSR1;
|
||||
|
||||
if (bstat & UTSR1_FRE)
|
||||
dprintk("frame error\n");
|
||||
if (bstat & UTSR1_ROR)
|
||||
dprintk("receive fifo overrun\n");
|
||||
if (bstat & UTSR1_PRE)
|
||||
dprintk("parity error\n");
|
||||
}
|
||||
|
||||
bstat = Ser2UTDR;
|
||||
n++;
|
||||
status = Ser2UTSR0;
|
||||
}
|
||||
|
||||
if (status & (UTSR0_RFS | UTSR0_RID)) {
|
||||
do_gettimeofday(&curr_tv);
|
||||
deltv = delta(&last_tv, &curr_tv);
|
||||
do {
|
||||
data = Ser2UTDR;
|
||||
dprintk("%d data: %u\n", n, (unsigned int) data);
|
||||
n++;
|
||||
} while (status & UTSR0_RID && /* do not empty fifo in order to
|
||||
* get UTSR0_RID in any case */
|
||||
Ser2UTSR1 & UTSR1_RNE); /* data ready */
|
||||
|
||||
if (status&UTSR0_RID) {
|
||||
add_read_queue(0 , deltv - n * TIME_CONST); /*space*/
|
||||
add_read_queue(1, n * TIME_CONST); /*pulse*/
|
||||
n = 0;
|
||||
last_tv = curr_tv;
|
||||
}
|
||||
}
|
||||
|
||||
if (status & UTSR0_TFS)
|
||||
pr_err("transmit fifo not full, shouldn't happen\n");
|
||||
|
||||
/* We must clear certain bits. */
|
||||
status &= (UTSR0_RID | UTSR0_RBB | UTSR0_REB);
|
||||
if (status)
|
||||
Ser2UTSR0 = status;
|
||||
#else
|
||||
unsigned long deltintrtv;
|
||||
unsigned long flags;
|
||||
int iir, lsr;
|
||||
@ -698,44 +535,9 @@ static irqreturn_t sir_interrupt(int irq, void *dev_id)
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return IRQ_RETVAL(IRQ_HANDLED);
|
||||
}
|
||||
|
||||
#ifdef LIRC_ON_SA1100
|
||||
static void send_pulse(unsigned long length)
|
||||
{
|
||||
unsigned long k, delay;
|
||||
int flag;
|
||||
|
||||
if (length == 0)
|
||||
return;
|
||||
/*
|
||||
* this won't give us the carrier frequency we really want
|
||||
* due to integer arithmetic, but we can accept this inaccuracy
|
||||
*/
|
||||
|
||||
for (k = flag = 0; k < length; k += delay, flag = !flag) {
|
||||
if (flag) {
|
||||
off();
|
||||
delay = space_width;
|
||||
} else {
|
||||
on();
|
||||
delay = pulse_width;
|
||||
}
|
||||
safe_udelay(delay);
|
||||
}
|
||||
off();
|
||||
}
|
||||
|
||||
static void send_space(unsigned long length)
|
||||
{
|
||||
if (length == 0)
|
||||
return;
|
||||
off();
|
||||
safe_udelay(length);
|
||||
}
|
||||
#else
|
||||
static void send_space(unsigned long len)
|
||||
{
|
||||
safe_udelay(len);
|
||||
@ -755,31 +557,6 @@ static void send_pulse(unsigned long len)
|
||||
;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SA1100_COLLIE
|
||||
static int sa1100_irda_set_power_collie(int state)
|
||||
{
|
||||
if (state) {
|
||||
/*
|
||||
* 0 - off
|
||||
* 1 - short range, lowest power
|
||||
* 2 - medium range, medium power
|
||||
* 3 - maximum range, high power
|
||||
*/
|
||||
ucb1200_set_io_direction(TC35143_GPIO_IR_ON,
|
||||
TC35143_IODIR_OUTPUT);
|
||||
ucb1200_set_io(TC35143_GPIO_IR_ON, TC35143_IODAT_LOW);
|
||||
udelay(100);
|
||||
} else {
|
||||
/* OFF */
|
||||
ucb1200_set_io_direction(TC35143_GPIO_IR_ON,
|
||||
TC35143_IODIR_OUTPUT);
|
||||
ucb1200_set_io(TC35143_GPIO_IR_ON, TC35143_IODAT_HIGH);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int init_hardware(void)
|
||||
{
|
||||
@ -787,51 +564,7 @@ static int init_hardware(void)
|
||||
|
||||
spin_lock_irqsave(&hardware_lock, flags);
|
||||
/* reset UART */
|
||||
#ifdef LIRC_ON_SA1100
|
||||
#ifdef CONFIG_SA1100_COLLIE
|
||||
sa1100_irda_set_power_collie(3); /* power on */
|
||||
#endif
|
||||
sr.hscr0 = Ser2HSCR0;
|
||||
|
||||
sr.utcr0 = Ser2UTCR0;
|
||||
sr.utcr1 = Ser2UTCR1;
|
||||
sr.utcr2 = Ser2UTCR2;
|
||||
sr.utcr3 = Ser2UTCR3;
|
||||
sr.utcr4 = Ser2UTCR4;
|
||||
|
||||
sr.utdr = Ser2UTDR;
|
||||
sr.utsr0 = Ser2UTSR0;
|
||||
sr.utsr1 = Ser2UTSR1;
|
||||
|
||||
/* configure GPIO */
|
||||
/* output */
|
||||
PPDR |= PPC_TXD2;
|
||||
PSDR |= PPC_TXD2;
|
||||
/* set output to 0 */
|
||||
off();
|
||||
|
||||
/* Enable HP-SIR modulation, and ensure that the port is disabled. */
|
||||
Ser2UTCR3 = 0;
|
||||
Ser2HSCR0 = sr.hscr0 & (~HSCR0_HSSP);
|
||||
|
||||
/* clear status register to prevent unwanted interrupts */
|
||||
Ser2UTSR0 &= (UTSR0_RID | UTSR0_RBB | UTSR0_REB);
|
||||
|
||||
/* 7N1 */
|
||||
Ser2UTCR0 = UTCR0_1StpBit|UTCR0_7BitData;
|
||||
/* 115200 */
|
||||
Ser2UTCR1 = 0;
|
||||
Ser2UTCR2 = 1;
|
||||
/* use HPSIR, 1.6 usec pulses */
|
||||
Ser2UTCR4 = UTCR4_HPSIR|UTCR4_Z1_6us;
|
||||
|
||||
/* enable receiver, receive fifo interrupt */
|
||||
Ser2UTCR3 = UTCR3_RXE|UTCR3_RIE;
|
||||
|
||||
/* clear status register to prevent unwanted interrupts */
|
||||
Ser2UTSR0 &= (UTSR0_RID | UTSR0_RBB | UTSR0_REB);
|
||||
|
||||
#elif defined(LIRC_SIR_TEKRAM)
|
||||
#if defined(LIRC_SIR_TEKRAM)
|
||||
/* disable FIFO */
|
||||
soutp(UART_FCR,
|
||||
UART_FCR_CLEAR_RCVR|
|
||||
@ -927,23 +660,9 @@ static void drop_hardware(void)
|
||||
|
||||
spin_lock_irqsave(&hardware_lock, flags);
|
||||
|
||||
#ifdef LIRC_ON_SA1100
|
||||
Ser2UTCR3 = 0;
|
||||
|
||||
Ser2UTCR0 = sr.utcr0;
|
||||
Ser2UTCR1 = sr.utcr1;
|
||||
Ser2UTCR2 = sr.utcr2;
|
||||
Ser2UTCR4 = sr.utcr4;
|
||||
Ser2UTCR3 = sr.utcr3;
|
||||
|
||||
Ser2HSCR0 = sr.hscr0;
|
||||
#ifdef CONFIG_SA1100_COLLIE
|
||||
sa1100_irda_set_power_collie(0); /* power off */
|
||||
#endif
|
||||
#else
|
||||
/* turn off interrupts */
|
||||
outb(0, io + UART_IER);
|
||||
#endif
|
||||
|
||||
spin_unlock_irqrestore(&hardware_lock, flags);
|
||||
}
|
||||
|
||||
@ -954,24 +673,18 @@ static int init_port(void)
|
||||
int retval;
|
||||
|
||||
/* get I/O port access and IRQ line */
|
||||
#ifndef LIRC_ON_SA1100
|
||||
if (request_region(io, 8, LIRC_DRIVER_NAME) == NULL) {
|
||||
pr_err("i/o port 0x%.4x already in use.\n", io);
|
||||
return -EBUSY;
|
||||
}
|
||||
#endif
|
||||
retval = request_irq(irq, sir_interrupt, 0,
|
||||
LIRC_DRIVER_NAME, NULL);
|
||||
if (retval < 0) {
|
||||
# ifndef LIRC_ON_SA1100
|
||||
release_region(io, 8);
|
||||
# endif
|
||||
pr_err("IRQ %d already in use.\n", irq);
|
||||
return retval;
|
||||
}
|
||||
#ifndef LIRC_ON_SA1100
|
||||
pr_info("I/O port 0x%.4x, IRQ %d.\n", io, irq);
|
||||
#endif
|
||||
|
||||
init_timer(&timerlist);
|
||||
timerlist.function = sir_timeout;
|
||||
@ -984,9 +697,7 @@ static void drop_port(void)
|
||||
{
|
||||
free_irq(irq, NULL);
|
||||
del_timer_sync(&timerlist);
|
||||
#ifndef LIRC_ON_SA1100
|
||||
release_region(io, 8);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef LIRC_SIR_ACTISYS_ACT200L
|
||||
@ -1284,9 +995,6 @@ module_exit(lirc_sir_exit);
|
||||
#ifdef LIRC_SIR_TEKRAM
|
||||
MODULE_DESCRIPTION("Infrared receiver driver for Tekram Irmate 210");
|
||||
MODULE_AUTHOR("Christoph Bartelmus");
|
||||
#elif defined(LIRC_ON_SA1100)
|
||||
MODULE_DESCRIPTION("LIRC driver for StrongARM SA1100 embedded microprocessor");
|
||||
MODULE_AUTHOR("Christoph Bartelmus");
|
||||
#elif defined(LIRC_SIR_ACTISYS_ACT200L)
|
||||
MODULE_DESCRIPTION("LIRC driver for Actisys Act200L");
|
||||
MODULE_AUTHOR("Karl Bongers");
|
||||
@ -1299,10 +1007,6 @@ MODULE_AUTHOR("Milan Pikula");
|
||||
#endif
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
#ifdef LIRC_ON_SA1100
|
||||
module_param(irq, int, S_IRUGO);
|
||||
MODULE_PARM_DESC(irq, "Interrupt (16)");
|
||||
#else
|
||||
module_param(io, int, S_IRUGO);
|
||||
MODULE_PARM_DESC(io, "I/O address base (0x3f8 or 0x2f8)");
|
||||
|
||||
@ -1311,7 +1015,6 @@ MODULE_PARM_DESC(irq, "Interrupt (4 or 3)");
|
||||
|
||||
module_param(threshold, int, S_IRUGO);
|
||||
MODULE_PARM_DESC(threshold, "space detection threshold (3)");
|
||||
#endif
|
||||
|
||||
module_param(debug, bool, S_IRUGO | S_IWUSR);
|
||||
MODULE_PARM_DESC(debug, "Enable debugging messages");
|
||||
|
Loading…
Reference in New Issue
Block a user