From b80a49661205204e9e4fdd47f887355f543ba4ad Mon Sep 17 00:00:00 2001 From: Michael Hunold Date: Sat, 26 Apr 2003 11:23:43 +0000 Subject: Revert ddelay() cleanup, discuss this first with Holger. --- linux/drivers/media/dvb/dvb-core/dvb_compat.h | 12 +++++++ linux/drivers/media/dvb/dvb-core/dvb_frontend.c | 6 ++-- linux/drivers/media/dvb/frontends/alps_tdmb7.c | 3 +- linux/drivers/media/dvb/frontends/at76c651.c | 3 +- linux/drivers/media/dvb/frontends/cx24110.c | 4 +-- .../media/dvb/frontends/grundig_29504-491.c | 3 +- linux/drivers/media/dvb/frontends/ves1820.c | 7 ++-- linux/drivers/media/dvb/ttpci/av7110.c | 42 ++++++++-------------- linux/drivers/media/dvb/ttpci/budget-av.c | 6 ++-- linux/drivers/media/dvb/ttpci/budget.c | 3 +- 10 files changed, 37 insertions(+), 52 deletions(-) (limited to 'linux/drivers/media') diff --git a/linux/drivers/media/dvb/dvb-core/dvb_compat.h b/linux/drivers/media/dvb/dvb-core/dvb_compat.h index b31a8ef10..cbbaee353 100644 --- a/linux/drivers/media/dvb/dvb-core/dvb_compat.h +++ b/linux/drivers/media/dvb/dvb-core/dvb_compat.h @@ -10,6 +10,18 @@ /* necessary dummy functions due to the > 2.5.67 kernel i2c changes */ #define i2c_get_adapdata(adapter) (struct saa7146_dev*)adapter->data; +/** + * a sleeping delay function, waits i ms + * + */ +static +inline void ddelay(int i) +{ + current->state=TASK_INTERRUPTIBLE; + schedule_timeout((HZ*i)/1000); +} + + static inline void kernel_thread_setup (const char *thread_name) { diff --git a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c index ef0acba79..98d15c9ed 100644 --- a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c +++ b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c @@ -195,10 +195,8 @@ void dvb_call_frontend_notifiers (struct dvb_frontend_data *fe, if ((fe->status & FE_HAS_LOCK) && !(s & FE_HAS_LOCK)) fe->lost_sync_jiffies = jiffies; - if (((s ^ fe->status) & FE_HAS_LOCK) && (s & FE_HAS_LOCK)) { - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout (fe->info->notifier_delay/10); - } + if (((s ^ fe->status) & FE_HAS_LOCK) && (s & FE_HAS_LOCK)) + ddelay (fe->info->notifier_delay); fe->status = s; diff --git a/linux/drivers/media/dvb/frontends/alps_tdmb7.c b/linux/drivers/media/dvb/frontends/alps_tdmb7.c index 54ac21eac..df95c64a6 100644 --- a/linux/drivers/media/dvb/frontends/alps_tdmb7.c +++ b/linux/drivers/media/dvb/frontends/alps_tdmb7.c @@ -167,8 +167,7 @@ int cx22700_init (struct dvb_i2c_bus *i2c) cx22700_writereg (i2c, 0x00, 0x02); /* soft reset */ cx22700_writereg (i2c, 0x00, 0x00); - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout (1); + ddelay (HZ/100); for (i=0; iir_config); } @@ -1122,8 +1120,7 @@ static int OutCommand(av7110_t *av7110, u16* buf, int length) start = jiffies; while ( rdebi(av7110, DEBINOSWAP, COMMAND, 0, 2 ) ) { - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout (1); + ddelay(1); if ((jiffies - start) > ARM_WAIT_FREE) { printk(KERN_ERR "%s: timeout waiting for COMMAND idle\n", __FUNCTION__); return -1; @@ -1134,8 +1131,7 @@ static int OutCommand(av7110_t *av7110, u16* buf, int length) start = jiffies; while ( rdebi(av7110, DEBINOSWAP, HANDSHAKE_REG, 0, 2 ) ) { - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout (1); + ddelay(1); if ((jiffies - start) > ARM_WAIT_SHAKE) { printk(KERN_ERR "%s: timeout waiting for HANDSHAKE_REG\n", __FUNCTION__); return -1; @@ -1146,8 +1142,7 @@ static int OutCommand(av7110_t *av7110, u16* buf, int length) start = jiffies; while ( rdebi(av7110, DEBINOSWAP, MSGSTATE, 0, 2) & OSDQFull ) { - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout (1); + ddelay(1); if ((jiffies - start) > ARM_WAIT_OSD) { printk(KERN_ERR "%s: timeout waiting for !OSDQFull\n", __FUNCTION__); return -1; @@ -1167,8 +1162,7 @@ static int OutCommand(av7110_t *av7110, u16* buf, int length) start = jiffies; while ( rdebi(av7110, DEBINOSWAP, COMMAND, 0, 2 ) ) { - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout (1); + ddelay(1); if ((jiffies - start) > ARM_WAIT_FREE) { printk(KERN_ERR "%s: timeout waiting for COMMAND to complete\n", __FUNCTION__); return -1; @@ -1288,8 +1282,7 @@ static int CommandRequest(av7110_t *av7110, u16 *Buff, int length, u16 *buf, int while ( rdebi(av7110, DEBINOSWAP, COMMAND, 0, 2) ) { #ifdef _NOHANDSHAKE - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout (1); + ddelay(1); #endif if ((jiffies - start) > ARM_WAIT_FREE) { printk("%s: timeout waiting for COMMAND to complete\n", __FUNCTION__); @@ -1301,8 +1294,7 @@ static int CommandRequest(av7110_t *av7110, u16 *Buff, int length, u16 *buf, int #ifndef _NOHANDSHAKE start = jiffies; while ( rdebi(av7110, DEBINOSWAP, HANDSHAKE_REG, 0, 2 ) ) { - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout (1); + ddelay(1); if ((jiffies - start) > ARM_WAIT_SHAKE) { printk(KERN_ERR "%s: timeout waiting for HANDSHAKE_REG\n", __FUNCTION__); up(&av7110->dcomlock); @@ -1461,8 +1453,7 @@ static int FlushText(av7110_t *av7110) return -ERESTARTSYS; start = jiffies; while ( rdebi(av7110, DEBINOSWAP, BUFF1_BASE, 0, 2 ) ) { - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout (1); + ddelay(1); if ((jiffies - start) > ARM_WAIT_OSD) { printk(KERN_ERR "%s: timeout waiting for BUFF1_BASE == 0\n", __FUNCTION__); up(&av7110->dcomlock); @@ -1485,8 +1476,7 @@ static int WriteText(av7110_t *av7110, u8 win, u16 x, u16 y, u8* buf) start = jiffies; while ( rdebi(av7110, DEBINOSWAP, BUFF1_BASE, 0, 2 ) ) { - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout (1); + ddelay(1); if ((jiffies - start) > ARM_WAIT_OSD) { printk(KERN_ERR "%s: timeout waiting for BUFF1_BASE == 0\n", __FUNCTION__); up(&av7110->dcomlock); @@ -1496,8 +1486,7 @@ static int WriteText(av7110_t *av7110, u8 win, u16 x, u16 y, u8* buf) #ifndef _NOHANDSHAKE start = jiffies; while ( rdebi(av7110, DEBINOSWAP, HANDSHAKE_REG, 0, 2 ) ) { - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout (1); + ddelay(1); if ((jiffies - start) > ARM_WAIT_SHAKE) { printk(KERN_ERR "%s: timeout waiting for HANDSHAKE_REG\n", __FUNCTION__); up(&av7110->dcomlock); @@ -4315,8 +4304,7 @@ int av7110_attach (struct saa7146_dev* dev, struct saa7146_pci_extension_data *p printk ("av7110: DVB-C analog module detected, " "initializing MSP3400\n"); av7110->adac_type = DVB_ADAC_MSP; - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout (10); + ddelay(100); msp_writereg(av7110, 0x12, 0x0013, 0x0c00); msp_writereg(av7110, 0x12, 0x0000, 0x7f00); // loudspeaker + headphone msp_writereg(av7110, 0x12, 0x0008, 0x0220); // loudspeaker source @@ -4369,11 +4357,9 @@ int av7110_detach (struct saa7146_dev* saa) av7110->arm_rmmod=1; wake_up_interruptible(&av7110->arm_wait); - while (av7110->arm_thread) { - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout (1); - } - + while (av7110->arm_thread) + ddelay(1); + dvb_unregister(av7110); IER_DISABLE(saa, (MASK_19 | MASK_03)); diff --git a/linux/drivers/media/dvb/ttpci/budget-av.c b/linux/drivers/media/dvb/ttpci/budget-av.c index e330273db..130b5fb9b 100644 --- a/linux/drivers/media/dvb/ttpci/budget-av.c +++ b/linux/drivers/media/dvb/ttpci/budget-av.c @@ -164,8 +164,7 @@ int budget_av_detach (struct saa7146_dev *dev) saa7146_setgpio(dev, 0, SAA7146_GPIO_OUTLO); - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout (20); + ddelay(200); saa7146_unregister_device (&budget_av->vd, dev); @@ -211,8 +210,7 @@ int budget_av_attach (struct saa7146_dev* dev, //test_knc_ci(av7110); saa7146_setgpio(dev, 0, SAA7146_GPIO_OUTHI); - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout (50); + ddelay(500); if ((err = saa7113_init (budget_av))) { budget_av_detach(dev); diff --git a/linux/drivers/media/dvb/ttpci/budget.c b/linux/drivers/media/dvb/ttpci/budget.c index 72ddb9268..de6dabc98 100644 --- a/linux/drivers/media/dvb/ttpci/budget.c +++ b/linux/drivers/media/dvb/ttpci/budget.c @@ -101,8 +101,7 @@ int SendDiSEqCMsg (struct budget *budget, int len, u8 *msg, int burst) udelay(12500); saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTLO); } - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout (2); + ddelay(20); } return 0; -- cgit v1.2.3