From: Andrew Morton Ghastly hacks to make it compile. Broken. Cc: Pierre Ossman Signed-off-by: Andrew Morton --- drivers/mmc/at91_mci.c | 12 -- drivers/mmc/tifm_sd.c | 174 --------------------------------------- 2 files changed, 1 insertion(+), 185 deletions(-) diff -puN drivers/mmc/tifm_sd.c~git-mmc-fixup drivers/mmc/tifm_sd.c --- a/drivers/mmc/tifm_sd.c~git-mmc-fixup +++ a/drivers/mmc/tifm_sd.c @@ -99,13 +99,9 @@ struct tifm_sd { struct tasklet_struct finish_tasklet; struct timer_list timer; struct mmc_request *req; -<<<<<<< HEAD/drivers/mmc/tifm_sd.c struct work_struct cmd_handler; struct delayed_work abort_handler; - wait_queue_head_t can_eject; -======= wait_queue_head_t notify; ->>>>>>> /drivers/mmc/tifm_sd.c size_t written_blocks; size_t buffer_size; @@ -415,15 +411,9 @@ static void tifm_sd_prepare_data(struct dev_dbg(&sock->dev, "setting dma for %d blocks\n", cmd->data->blocks); writel(TIFM_FIFO_INT_SETALL, -<<<<<<< HEAD/drivers/mmc/tifm_sd.c - sock->addr + SOCK_DMA_FIFO_INT_ENABLE_CLEAR); - writel(ilog2(cmd->data->blksz) - 2, - sock->addr + SOCK_FIFO_PAGE_SIZE); -======= sock->addr + SOCK_DMA_FIFO_INT_ENABLE_CLEAR); - writel(long_log2(cmd->data->blksz) - 2, + writel(ilog2(cmd->data->blksz) - 2, sock->addr + SOCK_FIFO_PAGE_SIZE); ->>>>>>> /drivers/mmc/tifm_sd.c writel(TIFM_FIFO_ENABLE, sock->addr + SOCK_FIFO_CONTROL); writel(TIFM_FIFO_INTMASK, sock->addr + SOCK_DMA_FIFO_INT_ENABLE_SET); @@ -529,17 +519,9 @@ err_out: mmc_request_done(mmc, mrq); } -<<<<<<< HEAD/drivers/mmc/tifm_sd.c static void tifm_sd_end_cmd(struct work_struct *work) -======= -static void tifm_sd_end_cmd(unsigned long data) ->>>>>>> /drivers/mmc/tifm_sd.c { -<<<<<<< HEAD/drivers/mmc/tifm_sd.c struct tifm_sd *host = container_of(work, struct tifm_sd, cmd_handler); -======= - struct tifm_sd *host = (struct tifm_sd*)data; ->>>>>>> /drivers/mmc/tifm_sd.c struct tifm_dev *sock = host->dev; struct mmc_host *mmc = tifm_get_drvdata(sock); struct mmc_request *mrq; @@ -636,11 +618,7 @@ err_out: mmc_request_done(mmc, mrq); } -<<<<<<< HEAD/drivers/mmc/tifm_sd.c static void tifm_sd_end_cmd_nodma(struct work_struct *work) -======= -static void tifm_sd_end_cmd_nodma(unsigned long data) ->>>>>>> /drivers/mmc/tifm_sd.c { struct tifm_sd *host = container_of(work, struct tifm_sd, cmd_handler); struct tifm_dev *sock = host->dev; @@ -708,29 +686,15 @@ static void tifm_sd_terminate(struct tif spin_unlock_irqrestore(&sock->lock, flags); } -<<<<<<< HEAD/drivers/mmc/tifm_sd.c static void tifm_sd_abort(struct work_struct *work) -======= -static void tifm_sd_abort(unsigned long data) ->>>>>>> /drivers/mmc/tifm_sd.c { -<<<<<<< HEAD/drivers/mmc/tifm_sd.c struct tifm_sd *host = container_of(work, struct tifm_sd, abort_handler.work); -======= - struct tifm_sd *host = (struct tifm_sd*)data; - ->>>>>>> /drivers/mmc/tifm_sd.c printk(KERN_ERR DRIVER_NAME -<<<<<<< HEAD/drivers/mmc/tifm_sd.c - ": card failed to respond for a long period of time"); - tifm_eject(host->dev); -======= ": card failed to respond for a long period of time\n"); tifm_sd_terminate(host); tifm_eject(host->dev); ->>>>>>> /drivers/mmc/tifm_sd.c } static void tifm_sd_ios(struct mmc_host *mmc, struct mmc_ios *ios) @@ -828,149 +792,13 @@ static struct mmc_host_ops tifm_sd_ops = .get_ro = tifm_sd_ro }; -<<<<<<< HEAD/drivers/mmc/tifm_sd.c static void tifm_sd_register_host(struct work_struct *work) -======= -static int tifm_sd_initialize_host(struct tifm_sd *host) ->>>>>>> /drivers/mmc/tifm_sd.c { -<<<<<<< HEAD/drivers/mmc/tifm_sd.c - struct tifm_sd *host = container_of(work, struct tifm_sd, cmd_handler); -======= - int rc; - unsigned int host_status = 0; ->>>>>>> /drivers/mmc/tifm_sd.c - struct tifm_dev *sock = host->dev; - -<<<<<<< HEAD/drivers/mmc/tifm_sd.c - spin_lock_irqsave(&sock->lock, flags); - host->flags |= HOST_REG; - PREPARE_WORK(&host->cmd_handler, - no_dma ? tifm_sd_end_cmd_nodma : tifm_sd_end_cmd); - spin_unlock_irqrestore(&sock->lock, flags); - dev_dbg(&sock->dev, "adding host\n"); - mmc_add_host(mmc); -======= - writel(0, sock->addr + SOCK_MMCSD_INT_ENABLE); - mmiowb(); - host->clk_div = 61; - host->clk_freq = 20000000; - writel(TIFM_MMCSD_RESET, sock->addr + SOCK_MMCSD_SYSTEM_CONTROL); - writel(host->clk_div | TIFM_MMCSD_POWER, - sock->addr + SOCK_MMCSD_CONFIG); - - /* wait up to 0.51 sec for reset */ - for (rc = 2; rc <= 256; rc <<= 1) { - if (1 & readl(sock->addr + SOCK_MMCSD_SYSTEM_STATUS)) { - rc = 0; - break; - } - msleep(rc); - } - - if (rc) { - printk(KERN_ERR DRIVER_NAME - ": controller failed to reset\n"); - return -ENODEV; - } - - writel(0, sock->addr + SOCK_MMCSD_NUM_BLOCKS); - writel(host->clk_div | TIFM_MMCSD_POWER, - sock->addr + SOCK_MMCSD_CONFIG); - writel(TIFM_MMCSD_RXDE, sock->addr + SOCK_MMCSD_BUFFER_CONFIG); - - // command timeout fixed to 64 clocks for now - writel(64, sock->addr + SOCK_MMCSD_COMMAND_TO); - writel(TIFM_MMCSD_INAB, sock->addr + SOCK_MMCSD_COMMAND); - - /* INAB should take much less than reset */ - for (rc = 1; rc <= 16; rc <<= 1) { - host_status = readl(sock->addr + SOCK_MMCSD_STATUS); - writel(host_status, sock->addr + SOCK_MMCSD_STATUS); - if (!(host_status & TIFM_MMCSD_ERRMASK) - && (host_status & TIFM_MMCSD_EOC)) { - rc = 0; - break; - } - msleep(rc); - } - - if (rc) { - printk(KERN_ERR DRIVER_NAME - ": card not ready - probe failed on initialization\n"); - return -ENODEV; - } - - writel(TIFM_MMCSD_DATAMASK | TIFM_MMCSD_ERRMASK, - sock->addr + SOCK_MMCSD_INT_ENABLE); - mmiowb(); - - return 0; ->>>>>>> /drivers/mmc/tifm_sd.c } static int tifm_sd_probe(struct tifm_dev *sock) { - struct mmc_host *mmc; - struct tifm_sd *host; - int rc = -EIO; - - if (!(TIFM_SOCK_STATE_OCCUPIED - & readl(sock->addr + SOCK_PRESENT_STATE))) { - printk(KERN_WARNING DRIVER_NAME ": card gone, unexpectedly\n"); - return rc; - } - - mmc = mmc_alloc_host(sizeof(struct tifm_sd), &sock->dev); - if (!mmc) - return -ENOMEM; - - host = mmc_priv(mmc); - tifm_set_drvdata(sock, mmc); - host->dev = sock; -<<<<<<< HEAD/drivers/mmc/tifm_sd.c - host->clk_div = 61; - init_waitqueue_head(&host->can_eject); - INIT_WORK(&host->cmd_handler, tifm_sd_register_host); - INIT_DELAYED_WORK(&host->abort_handler, tifm_sd_abort); -======= - host->timeout_jiffies = msecs_to_jiffies(1000); ->>>>>>> /drivers/mmc/tifm_sd.c - - init_waitqueue_head(&host->notify); - tasklet_init(&host->finish_tasklet, - no_dma ? tifm_sd_end_cmd_nodma : tifm_sd_end_cmd, - (unsigned long)host); - setup_timer(&host->timer, tifm_sd_abort, (unsigned long)host); - - tifm_sd_ops.request = no_dma ? tifm_sd_request_nodma : tifm_sd_request; - mmc->ops = &tifm_sd_ops; - mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; - mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_MULTIWRITE; - mmc->f_min = 20000000 / 60; - mmc->f_max = 24000000; - mmc->max_hw_segs = 1; - mmc->max_phys_segs = 1; - // limited by DMA counter - it's safer to stick with - // block counter has 11 bits though - mmc->max_blk_count = 256; - // 2k maximum hw block length - mmc->max_blk_size = 2048; - mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count; - mmc->max_seg_size = mmc->max_req_size; - - sock->signal_irq = tifm_sd_signal_irq; - rc = tifm_sd_initialize_host(host); - - if (!rc) - rc = mmc_add_host(mmc); - if (rc) - goto out_free_mmc; - return 0; -out_free_mmc: - mmc_free_host(mmc); - return rc; } static void tifm_sd_remove(struct tifm_dev *sock) diff -puN drivers/mmc/at91_mci.c~git-mmc-fixup drivers/mmc/at91_mci.c --- a/drivers/mmc/at91_mci.c~git-mmc-fixup +++ a/drivers/mmc/at91_mci.c @@ -340,7 +340,6 @@ static void at91_mci_handle_transmitted( */ static void at91_mci_enable(struct at91mci_host *host) { -<<<<<<< HEAD/drivers/mmc/at91_mci.c at91_mci_write(host, AT91_MCI_CR, AT91_MCI_MCIEN); at91_mci_write(host, AT91_MCI_IDR, 0xffffffff); at91_mci_write(host, AT91_MCI_DTOR, AT91_MCI_DTOMUL_1M | AT91_MCI_DTOCYC); @@ -348,13 +347,6 @@ static void at91_mci_enable(struct at91m /* use Slot A or B (only one at same time) */ at91_mci_write(host, AT91_MCI_SDCR, host->board->slot_b); -======= - at91_mci_write(host, AT91_MCI_CR, AT91_MCI_MCIEN); - at91_mci_write(host, AT91_MCI_IDR, 0xffffffff); - at91_mci_write(host, AT91_MCI_DTOR, AT91_MCI_DTOMUL_1M | AT91_MCI_DTOCYC); - at91_mci_write(host, AT91_MCI_MR, AT91_MCI_PDCMODE | 0x34a); - at91_mci_write(host, AT91_MCI_SDCR, 0); ->>>>>>> /drivers/mmc/at91_mci.c } /* @@ -769,11 +761,7 @@ static irqreturn_t at91_mmc_det_irq(int present ? "insert" : "remove"); if (!present) { pr_debug("****** Resetting SD-card bus width ******\n"); -<<<<<<< HEAD/drivers/mmc/at91_mci.c at91_mci_write(host, AT91_MCI_SDCR, at91_mci_read(host, AT91_MCI_SDCR) & ~AT91_MCI_SDCBUS); -======= - at91_mci_write(host, AT91_MCI_SDCR, 0); ->>>>>>> /drivers/mmc/at91_mci.c } mmc_detect_change(host->mmc, msecs_to_jiffies(100)); } _