From: lhh Date: Thu, 9 Dec 2010 13:22:10 +0000 (+0800) Subject: del i2c-boardinfo printk and open sdmmc dma X-Git-Tag: firefly_0821_release~10961 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=c1f87bc2b4a85f28bd7d8125be24d2a5cc921fb5;p=firefly-linux-kernel-4.4.55.git del i2c-boardinfo printk and open sdmmc dma --- diff --git a/arch/arm/mach-rk29/board-rk29sdk.c b/arch/arm/mach-rk29/board-rk29sdk.c index 61f83fe9f75f..5d865fd3611c 100755 --- a/arch/arm/mach-rk29/board-rk29sdk.c +++ b/arch/arm/mach-rk29/board-rk29sdk.c @@ -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); diff --git a/drivers/i2c/i2c-boardinfo.c b/drivers/i2c/i2c-boardinfo.c index 837f97d88d9d..a3517e957dc5 100755 --- a/drivers/i2c/i2c-boardinfo.c +++ b/drivers/i2c/i2c-boardinfo.c @@ -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); } diff --git a/drivers/mmc/host/rk29_sdmmc.c b/drivers/mmc/host/rk29_sdmmc.c index e287e316354e..a1a26b9b74cd 100755 --- a/drivers/mmc/host/rk29_sdmmc.c +++ b/drivers/mmc/host/rk29_sdmmc.c @@ -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; + /*µÈ´ýÇ°Ãæ´«Êä´¦ÀíÍê³É*/ + 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); + } + } + /*¼ì²éFIFO,Èç¹û²»Îª¿Õ£¬Çå¿Õ*/ + 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; + /*µÈ´ýÇ°Ãæ´«Êä´¦ÀíÍê³É*/ + 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); + } + } + /*¼ì²éFIFO,Èç¹û²»Îª¿Õ£¬Çå¿Õ*/ + 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: