From: <bal...@us...> - 2007-02-27 02:48:06
|
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. |