del i2c-boardinfo printk and open sdmmc dma

This commit is contained in:
lhh
2010-12-09 21:22:10 +08:00
parent 2761653a0b
commit c1f87bc2b4
3 changed files with 53 additions and 11 deletions

View File

@@ -740,13 +740,13 @@ static int rk29_sdmmc0_cfg_gpio(void)
rk29_mux_api_set(GPIO2A2_SDMMC0DETECTN_NAME, GPIO2L_SDMMC0_DETECT_N);
rk29_mux_api_set(GPIO5D5_SDMMC0PWREN_NAME, GPIO5H_GPIO5D5); ///GPIO5H_SDMMC0_PWR_EN); ///GPIO5H_GPIO5D5);
gpio_request(RK29_PIN5_PD5,"sdmmc");
//gpio_set_value(RK29_PIN5_PD5,GPIO_HIGH);
//mdelay(100);
gpio_set_value(RK29_PIN5_PD5,GPIO_HIGH);
mdelay(100);
gpio_set_value(RK29_PIN5_PD5,GPIO_LOW);
return 0;
}
//#define CONFIG_SDMMC0_USE_DMA
#define CONFIG_SDMMC0_USE_DMA
struct rk29_sdmmc_platform_data default_sdmmc0_data = {
.host_ocr_avail = (MMC_VDD_25_26|MMC_VDD_26_27|MMC_VDD_27_28|MMC_VDD_28_29|MMC_VDD_29_30|
MMC_VDD_30_31|MMC_VDD_31_32|MMC_VDD_32_33|
@@ -1294,7 +1294,7 @@ static void __init machine_rk29_init_irq(void)
static void __init machine_rk29_board_init(void)
{
rk29_board_iomux_init();
gpio_request(POWER_ON_PIN,"poweronpin");
gpio_set_value(POWER_ON_PIN, 1);
gpio_direction_output(POWER_ON_PIN, 1);

View File

@@ -65,7 +65,6 @@ i2c_register_board_info(int busnum,
int status;
down_write(&__i2c_board_lock);
printk("busnum = %d, len = %d>>>>>>>>>>>>>>>>>>\n", busnum, len);
/* dynamic bus numbers will be assigned after the last static one */
if (busnum >= __i2c_first_dynamic_bus_num)
__i2c_first_dynamic_bus_num = busnum + 1;
@@ -82,7 +81,6 @@ i2c_register_board_info(int busnum,
devinfo->busnum = busnum;
devinfo->board_info = *info;
printk("busnum = %d>>>>>>>>>>>>>>>>>>\n", busnum);
list_add_tail(&devinfo->list, &__i2c_board_list);
}

View File

@@ -396,10 +396,9 @@ static void rk29_sdmmc_dma_complete(void *arg, int size, enum rk29_dma_buffresul
return;
dev_vdbg(&host->pdev->dev, "DMA complete\n");
if(result != RK29_RES_OK)
printk("%s: sdio dma complete err\n",__FUNCTION__);
printk("%s: sdio dma complete err\n",__FUNCTION__);
spin_lock(&host->lock);
rk29_sdmmc_dma_cleanup(host);
/*
* If the card was removed, data will be NULL. No point trying
* to send the stop command or waiting for NBUSY in this case.
@@ -521,8 +520,31 @@ static void rk29_sdmmc_start_request(struct rk29_sdmmc *host)
struct mmc_command *cmd;
struct mmc_data *data;
u32 cmdflags;
int time_out =60;
unsigned long flags;
mrq = host->mrq;
/*<2A>ȴ<EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><E4B4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
while(rk29_sdmmc_read(host->regs, SDMMC_STATUS) & (SDMMC_STAUTS_DATA_BUSY)) {
mdelay(5);
time_out --;
if(!time_out){
time_out =60;
local_irq_save(flags);
rk29_sdmmc_write( host->regs, SDMMC_CTRL, rk29_sdmmc_read(host->regs, SDMMC_CTRL) | ( SDMMC_CTRL_FIFO_RESET ));
/* wait till resets clear */
while (rk29_sdmmc_read(host->regs, SDMMC_CTRL) & ( SDMMC_CTRL_FIFO_RESET));
local_irq_restore(flags);
}
}
/*<2A><><EFBFBD><EFBFBD>FIFO,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>գ<EFBFBD><D5A3><EFBFBD><EFBFBD><EFBFBD>*/
if(!(rk29_sdmmc_read(host->regs, SDMMC_STATUS) & SDMMC_STAUTS_FIFO_EMPTY)) {
local_irq_save(flags);
rk29_sdmmc_write(host->regs, SDMMC_CTRL, rk29_sdmmc_read(host->regs, SDMMC_CTRL) | ( SDMMC_CTRL_FIFO_RESET ));
/* wait till resets clear */
while (readl(host->regs + SDMMC_CTRL) & ( SDMMC_CTRL_FIFO_RESET));
local_irq_restore(flags);
}
/* Slot specific timing and width adjustment */
rk29_sdmmc_setup_bus(host);
host->curr_mrq = mrq;
@@ -663,10 +685,33 @@ static void rk29_sdmmc_request_end(struct rk29_sdmmc *host, struct mmc_request *
__acquires(&host->lock)
{
struct mmc_host *prev_mmc = host->mmc;
unsigned long flags;
int time_out =60;
WARN_ON(host->cmd || host->data);
host->curr_mrq = NULL;
host->mrq = NULL;
/*<2A>ȴ<EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><E4B4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
while(rk29_sdmmc_read(host->regs, SDMMC_STATUS) & (SDMMC_STAUTS_DATA_BUSY)) {
mdelay(5);
time_out --;
if(!time_out){
time_out =60;
local_irq_save(flags);
rk29_sdmmc_write( host->regs, SDMMC_CTRL, rk29_sdmmc_read(host->regs, SDMMC_CTRL) | ( SDMMC_CTRL_FIFO_RESET ));
/* wait till resets clear */
while (rk29_sdmmc_read(host->regs, SDMMC_CTRL) & ( SDMMC_CTRL_FIFO_RESET));
local_irq_restore(flags);
}
}
/*<2A><><EFBFBD><EFBFBD>FIFO,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>գ<EFBFBD><D5A3><EFBFBD><EFBFBD><EFBFBD>*/
if(!(rk29_sdmmc_read(host->regs, SDMMC_STATUS) & SDMMC_STAUTS_FIFO_EMPTY)) {
local_irq_save(flags);
rk29_sdmmc_write(host->regs, SDMMC_CTRL, rk29_sdmmc_read(host->regs, SDMMC_CTRL) | ( SDMMC_CTRL_FIFO_RESET ));
/* wait till resets clear */
while (readl(host->regs + SDMMC_CTRL) & ( SDMMC_CTRL_FIFO_RESET));
local_irq_restore(flags);
}
if (!list_empty(&host->queue)) {
host = list_entry(host->queue.next,
struct rk29_sdmmc, queue_node);
@@ -1312,7 +1357,7 @@ static int rk29_sdmmc_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, host);
mmc->ops = &rk29_sdmmc_ops[pdev->id];
mmc->f_min = host->bus_hz/510;
mmc->f_max = host->bus_hz/4; //2; ///20; //max f is clock to mmc_clk/2
mmc->f_max = host->bus_hz/2; //2; ///20; //max f is clock to mmc_clk/2
mmc->ocr_avail = pdata->host_ocr_avail;
mmc->caps = pdata->host_caps;
mmc->max_phys_segs = 64;
@@ -1339,7 +1384,6 @@ static int rk29_sdmmc_probe(struct platform_device *pdev)
rk29_sdmmc_write(host->regs, SDMMC_INTMASK,SDMMC_INT_CMD_DONE | SDMMC_INT_DTO | SDMMC_INT_TXDR | SDMMC_INT_RXDR | RK29_SDMMC_ERROR_FLAGS | SDMMC_INT_CD);
rk29_sdmmc_write(host->regs, SDMMC_CTRL,SDMMC_CTRL_INT_ENABLE); // enable mci interrupt
rk29_sdmmc_write(host->regs, SDMMC_CLKENA,1);
///rk29_sdmmc_write(host->regs, SDMMC_CLKDIV,2);
dev_info(&pdev->dev, "RK29 SDMMC controller at irq %d\n", irq);
return 0;
err_dmaunmap: