Revision: 877
http://svn.sourceforge.net/hackndev/?rev=877&view=rev
Author: balrog-kun
Date: 2007-02-26 18:48:01 -0800 (Mon, 26 Feb 2007)
Log Message:
-----------
TT3: MMC: work_queue and irq API updates.
Modified Paths:
--------------
linux4palm/linux/trunk/drivers/mmc/wbsd-palmt3.c
Modified: linux4palm/linux/trunk/drivers/mmc/wbsd-palmt3.c
===================================================================
--- linux4palm/linux/trunk/drivers/mmc/wbsd-palmt3.c 2007-02-27 02:30:14 UTC (rev 876)
+++ linux4palm/linux/trunk/drivers/mmc/wbsd-palmt3.c 2007-02-27 02:48:01 UTC (rev 877)
@@ -11,7 +11,6 @@
*
*/
-#include <linux/config.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/init.h>
@@ -673,19 +672,15 @@
static void wbsd_prepare_data(struct mmc_data* data)
{
- u16 blksize;
- //u16 ier;
- //unsigned long dmaflags;
-
DBGF("blksz %04x blks %04x flags %08x\n",
- 1 << data->blksz_bits, data->blocks, data->flags);
+ data->blksz, data->blocks, data->flags);
DBGF("tsac %d ms nsac %d clk\n",
data->timeout_ns / 1000000, data->timeout_clks);
/*
* Calculate size.
*/
- host->size = data->blocks << data->blksz_bits;
+ host->size = data->blocks * data->blksz;
/*
* Check timeout values for overflow.
@@ -708,13 +703,11 @@
* sent. It needs this to determine when to
* calculate CRC.
*/
- blksize = (1 << data->blksz_bits);
- wbsd_write_idx_reg(WBIR_MDFR, (blksize & 0x0FFF) | 0x0000);
- //wbsd_write_wb_index(WBIR_SDFR, (blksize & 0x0FFF) | 0x0000);
-
+ wbsd_write_idx_reg(WBIR_MDFR, (data->blksz & 0x0FFF) | 0x0000);
+
//wbsd_write_wb_index(WBIR_MDFR, 0x0008);
//wbsd_write_wb_index(WBIR_SDFR, 0x0008);
-
+
wbsd_write_idx_reg(WBIR_MDCB, data->blocks & 0x01FF);
//wbsd_write_wb_index(WBIR_SDCB, data->blocks & 0x01FF);
@@ -1263,16 +1256,14 @@
spin_unlock(&host->lock);
}
-static void wbsd_tasklet_tps(void *param)
+static void wbsd_tasklet_tps(struct work_struct *work)
{
-
if(host->tps_duty & TPS_POWER_OFF)
{
DBG("Powering down card\n");
tps65010_set_gpio_out_value(GPIO3, LOW);
}
- else
- if(host->tps_duty & TPS_POWER_ON)
+ else if(host->tps_duty & TPS_POWER_ON)
{
DBG("Powering card up\n");
tps65010_set_gpio_out_value(GPIO3, HIGH);
@@ -1283,8 +1274,7 @@
DBG("Turning led off\n");
tps65010_set_led(LED2, OFF);
}
- else
- if(host->tps_duty & TPS_LED_ON)
+ else if(host->tps_duty & TPS_LED_ON)
{
DBG("Blinking led\n");
tps65010_set_led(LED2, ON);
@@ -1297,7 +1287,7 @@
* Interrupt handling
*/
-static irqreturn_t wbsd_irq(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t wbsd_irq(int irq, void *dev_id)
{
u16 isr;
@@ -1439,18 +1429,21 @@
* Allocate interrupt.
*/
-#define REG(x) ret = request_irq (IRQ_GPIO(x), wbsd_irq, SA_SAMPLE_RANDOM, DRIVER_NAME, (void*)x);\
- set_irq_type (IRQ_GPIO(x), IRQT_BOTHEDGE);\
- if (ret)\
+#define REG(x) \
+ ret = request_irq(IRQ_GPIO(x), wbsd_irq, \
+ SA_INTERRUPT | SA_TRIGGER_RISING | \
+ SA_TRIGGER_FALLING, DRIVER_NAME, (void *) x); \
+ if (ret) \
return ret;
- //Chip interrupt
- ret = request_irq (IRQ_GPIO(8), wbsd_irq, SA_SAMPLE_RANDOM, DRIVER_NAME, (void*)8);
- set_irq_type (IRQ_GPIO(8), IRQT_FALLING);
+ /* Chip interrupt */
+ ret = request_irq(IRQ_GPIO(8), wbsd_irq,
+ SA_INTERRUPT | SA_TRIGGER_FALLING,
+ DRIVER_NAME, (void *) 8);
if (ret)
return ret;
- //Card insert/release
+ /* Card insert/release */
REG(2);
host->irq = 8;
@@ -1462,7 +1455,7 @@
tasklet_init(&host->crc_tasklet, wbsd_tasklet_crc, (unsigned long)host);
tasklet_init(&host->timeout_tasklet, wbsd_tasklet_timeout, (unsigned long)host);
tasklet_init(&host->finish_tasklet, wbsd_tasklet_finish, (unsigned long)host);
- INIT_WORK(&host->tps_work, wbsd_tasklet_tps, NULL);
+ INIT_WORK(&host->tps_work, wbsd_tasklet_tps);
return 0;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|