mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-29 07:34:06 +08:00
V4L/DVB (13735): [Mantis] Implement the Event Manager tasklet
Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
d575571e8e
commit
fadfa070d3
@ -20,12 +20,76 @@
|
||||
|
||||
#include "mantis_common.h"
|
||||
#include "mantis_link.h"
|
||||
#include "mantis_hif.h"
|
||||
|
||||
void mantis_hifevm_tasklet(unsigned long data)
|
||||
{
|
||||
struct mantis_ca *ca = (struct mantis_ca *) data;
|
||||
struct mantis_pci *mantis = ca->ca_priv;
|
||||
|
||||
u32 gpif_stat;
|
||||
|
||||
gpif_stat = mmread(MANTIS_GPIF_STATUS);
|
||||
|
||||
if (gpif_stat & MANTIS_GPIF_DETSTAT) {
|
||||
if (gpif_stat & MANTIS_CARD_PLUGIN) {
|
||||
dprintk(mantis->verbose, MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): CAM Plugin", mantis->num);
|
||||
mmwrite(0xdada0000, MANTIS_CARD_RESET);
|
||||
// Plugin call here
|
||||
gpif_stat = 0; // crude !
|
||||
}
|
||||
} else {
|
||||
if (gpif_stat & MANTIS_CARD_PLUGOUT) {
|
||||
dprintk(mantis->verbose, MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): CAM Unplug", mantis->num);
|
||||
mmwrite(0xdada0000, MANTIS_CARD_RESET);
|
||||
// Unplug call here
|
||||
gpif_stat = 0; // crude !
|
||||
}
|
||||
}
|
||||
|
||||
if (gpif_stat & MANTIS_GPIF_EXTIRQ)
|
||||
dprintk(mantis->verbose, MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Ext IRQ", mantis->num);
|
||||
|
||||
if (gpif_stat & MANTIS_SBUF_WSTO)
|
||||
dprintk(mantis->verbose, MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Smart Buffer Timeout", mantis->num);
|
||||
|
||||
if (gpif_stat & MANTIS_GPIF_OTHERR)
|
||||
dprintk(mantis->verbose, MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Alignment Error", mantis->num);
|
||||
|
||||
if (gpif_stat & MANTIS_SBUF_OVFLW)
|
||||
dprintk(mantis->verbose, MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Smart Buffer Overflow", mantis->num);
|
||||
|
||||
if (gpif_stat & MANTIS_GPIF_BRRDY) {
|
||||
dprintk(mantis->verbose, MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Smart Buffer Read Ready", mantis->num);
|
||||
ca->sbuf_status = MANTIS_SBUF_DATA_AVAIL;
|
||||
if (ca->hif_job_queue & MANTIS_HIF_MEMRD)
|
||||
wake_up(&ca->hif_brrdyw_wq);
|
||||
}
|
||||
if (gpif_stat & MANTIS_GPIF_WRACK)
|
||||
dprintk(mantis->verbose, MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Slave Write ACK", mantis->num);
|
||||
|
||||
if (gpif_stat & MANTIS_GPIF_INTSTAT)
|
||||
dprintk(mantis->verbose, MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): GPIF IRQ", mantis->num);
|
||||
|
||||
if (gpif_stat & MANTIS_SBUF_EMPTY)
|
||||
dprintk(mantis->verbose, MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Smart Buffer Empty", mantis->num);
|
||||
|
||||
if (gpif_stat & MANTIS_SBUF_OPDONE) {
|
||||
dprintk(mantis->verbose, MANTIS_DEBUG, 1, "Event Mgr: Adapter(%d) Slot(0): Smart Buffer operation complete", mantis->num);
|
||||
if (ca->hif_job_queue) {
|
||||
wake_up(&ca->hif_opdone_wq);
|
||||
ca->hif_event = MANTIS_SBUF_OPDONE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int mantis_evmgr_init(struct mantis_ca *ca)
|
||||
{
|
||||
struct mantis_pci *mantis = ca->ca_priv;
|
||||
|
||||
dprintk(mantis->verbose, MANTIS_DEBUG, 1, "Initializing Mantis Host I/F Event manager");
|
||||
tasklet_init(&ca->hif_evm_tasklet, mantis_hifevm_tasklet, (unsigned long) ca);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -34,4 +98,5 @@ void mantis_evmgr_exit(struct mantis_ca *ca)
|
||||
struct mantis_pci *mantis = ca->ca_priv;
|
||||
|
||||
dprintk(mantis->verbose, MANTIS_DEBUG, 1, "Mantis Host I/F Event manager exiting");
|
||||
tasklet_kill(&ca->hif_evm_tasklet);
|
||||
}
|
||||
|
@ -73,6 +73,40 @@
|
||||
#define MANTIS_I2C_STOP (0x01 << 5)
|
||||
#define MANTIS_I2C_PGMODE (0x01 << 3)
|
||||
|
||||
#define MANTIS_GPIF_CFGSLA 0x84
|
||||
#define MANTIS_GPIF_WAITSMPL (0x07 << 28)
|
||||
#define MANTIS_GPIF_BYTEADDRSUB (0x01 << 25)
|
||||
#define MANTIS_GPIF_WAITPOL (0x01 << 24)
|
||||
#define MANTIS_GPIF_NCDELAY (0x07 << 20)
|
||||
#define MANTIS_GPIF_RW2CSDELAY (0x07 << 16)
|
||||
#define MANTIS_GPIF_SLFTIMEDMODE (0x01 << 15)
|
||||
#define MANTIS_GPIF_SLFTIMEDDELY (0x7f << 8)
|
||||
#define MANTIS_GPIF_DEVTYPE (0x07 << 4)
|
||||
#define MANTIS_GPIF_BIGENDIAN (0x01 << 3)
|
||||
#define MANTIS_GPIF_FETCHCMD (0x03 << 1)
|
||||
#define MANTIS_GPIF_HWORDDEV (0x01 << 0)
|
||||
|
||||
#define MANTIS_GPIF_WSTOPER 0x90
|
||||
#define MANTIS_GPIF_WSTOPERWREN3 (0x01 << 31)
|
||||
#define MANTIS_GPIF_PARBOOTN (0x01 << 29)
|
||||
#define MANTIS_GPIF_WSTOPERSLID3 (0x1f << 24)
|
||||
#define MANTIS_GPIF_WSTOPERWREN2 (0x01 << 23)
|
||||
#define MANTIS_GPIF_WSTOPERSLID2 (0x1f << 16)
|
||||
#define MANTIS_GPIF_WSTOPERWREN1 (0x01 << 15)
|
||||
#define MANTIS_GPIF_WSTOPERSLID1 (0x1f << 8)
|
||||
#define MANTIS_GPIF_WSTOPERWREN0 (0x01 << 7)
|
||||
#define MANTIS_GPIF_WSTOPERSLID0 (0x1f << 0)
|
||||
|
||||
#define MANTIS_GPIF_CS2RW 0x94
|
||||
#define MANTIS_GPIF_CS2RWWREN3 (0x01 << 31)
|
||||
#define MANTIS_GPIF_CS2RWDELY3 (0x3f << 24)
|
||||
#define MANTIS_GPIF_CS2RWWREN2 (0x01 << 23)
|
||||
#define MANTIS_GPIF_CS2RWDELY2 (0x3f << 16)
|
||||
#define MANTIS_GPIF_CS2RWWREN1 (0x01 << 15)
|
||||
#define MANTIS_GPIF_CS2RWDELY1 (0x3f << 8)
|
||||
#define MANTIS_GPIF_CS2RWWREN0 (0x01 << 7)
|
||||
#define MANTIS_GPIF_CS2RWDELY0 (0x3f << 0)
|
||||
|
||||
#define MANTIS_GPIF_IRQCFG 0x98
|
||||
#define MANTIS_GPIF_IRQPOL (0x01 << 8)
|
||||
#define MANTIS_MASK_WRACK (0x01 << 7)
|
||||
@ -99,11 +133,33 @@
|
||||
#define MANTIS_CARD_PLUGIN (0x01 << 1)
|
||||
#define MANTIS_CARD_PLUGOUT (0x01 << 0)
|
||||
|
||||
#define MANTIS_GPIF_BRADDR 0xa0
|
||||
#define MANTIS_GPIF_PCMCIAREG (0x01 << 27)
|
||||
#define MANTIS_GPIF_PCMCIAIOM (0x01 << 26)
|
||||
#define MANTIS_GPIF_BR_ADDR (0xfffffff << 0)
|
||||
|
||||
#define MANTIS_GPIF_BRBYTES 0xa4
|
||||
#define MANTIS_GPIF_BRCNT (0xfff << 0)
|
||||
|
||||
#define MANTIS_PCMCIA_RESET 0xa8
|
||||
#define MANTIS_PCMCIA_RSTVAL (0xff << 0)
|
||||
|
||||
#define MANTIS_CARD_RESET 0xac
|
||||
|
||||
#define MANTIS_GPIF_ADDR 0xb0
|
||||
#define MANTIS_GPIF_RDWRN (0x01 << 31)
|
||||
#define MANTIS_GPIF_RDWRN (0x01 << 31)
|
||||
#define MANTIS_GPIF_PCMCIAREG (0x01 << 27)
|
||||
#define MANTIS_GPIF_PCMCIAIOM (0x01 << 26)
|
||||
#define MANTIS_GPIF_HIF_ADDR (0xfffffff << 0)
|
||||
|
||||
#define MANTIS_GPIF_DOUT 0xb4
|
||||
#define MANTIS_GPIF_DIN 0xb8
|
||||
#define MANTIS_GPIF_HIF_DOUT (0xfffffff << 0)
|
||||
|
||||
#define MANTIS_GPIF_DIN 0xb8
|
||||
#define MANTIS_GPIF_HIF_DIN (0xfffffff << 0)
|
||||
|
||||
#define MANTIS_GPIF_SPARE 0xbc
|
||||
#define MANTIS_GPIF_LOGICRD (0xffff << 16)
|
||||
#define MANTIS_GPIF_LOGICRW (0xffff << 0)
|
||||
|
||||
#endif //__MANTIS_REG_H
|
||||
|
Loading…
Reference in New Issue
Block a user