Commit a36274e0 authored by Martin K. Petersen's avatar Martin K. Petersen Committed by Chris Ball

mmc: Remove distinction between hw and phys segments

We have deprecated the distinction between hardware and physical
segments in the block layer.  Consolidate the two limits into one in
drivers/mmc/.
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: default avatarChris Ball <cjb@laptop.org>
parent 7a5ea56a
...@@ -146,7 +146,7 @@ int mmc_init_queue(struct mmc_queue *mq, struct mmc_card *card, spinlock_t *lock ...@@ -146,7 +146,7 @@ int mmc_init_queue(struct mmc_queue *mq, struct mmc_card *card, spinlock_t *lock
} }
#ifdef CONFIG_MMC_BLOCK_BOUNCE #ifdef CONFIG_MMC_BLOCK_BOUNCE
if (host->max_hw_segs == 1) { if (host->max_segs == 1) {
unsigned int bouncesz; unsigned int bouncesz;
bouncesz = MMC_QUEUE_BOUNCESZ; bouncesz = MMC_QUEUE_BOUNCESZ;
...@@ -196,16 +196,16 @@ int mmc_init_queue(struct mmc_queue *mq, struct mmc_card *card, spinlock_t *lock ...@@ -196,16 +196,16 @@ int mmc_init_queue(struct mmc_queue *mq, struct mmc_card *card, spinlock_t *lock
blk_queue_bounce_limit(mq->queue, limit); blk_queue_bounce_limit(mq->queue, limit);
blk_queue_max_hw_sectors(mq->queue, blk_queue_max_hw_sectors(mq->queue,
min(host->max_blk_count, host->max_req_size / 512)); min(host->max_blk_count, host->max_req_size / 512));
blk_queue_max_segments(mq->queue, host->max_hw_segs); blk_queue_max_segments(mq->queue, host->max_segs);
blk_queue_max_segment_size(mq->queue, host->max_seg_size); blk_queue_max_segment_size(mq->queue, host->max_seg_size);
mq->sg = kmalloc(sizeof(struct scatterlist) * mq->sg = kmalloc(sizeof(struct scatterlist) *
host->max_phys_segs, GFP_KERNEL); host->max_segs, GFP_KERNEL);
if (!mq->sg) { if (!mq->sg) {
ret = -ENOMEM; ret = -ENOMEM;
goto cleanup_queue; goto cleanup_queue;
} }
sg_init_table(mq->sg, host->max_phys_segs); sg_init_table(mq->sg, host->max_segs);
} }
init_MUTEX(&mq->thread_sem); init_MUTEX(&mq->thread_sem);
......
...@@ -94,8 +94,7 @@ struct mmc_host *mmc_alloc_host(int extra, struct device *dev) ...@@ -94,8 +94,7 @@ struct mmc_host *mmc_alloc_host(int extra, struct device *dev)
* By default, hosts do not support SGIO or large requests. * By default, hosts do not support SGIO or large requests.
* They have to set these according to their abilities. * They have to set these according to their abilities.
*/ */
host->max_hw_segs = 1; host->max_segs = 1;
host->max_phys_segs = 1;
host->max_seg_size = PAGE_CACHE_SIZE; host->max_seg_size = PAGE_CACHE_SIZE;
host->max_req_size = PAGE_CACHE_SIZE; host->max_req_size = PAGE_CACHE_SIZE;
......
...@@ -947,8 +947,7 @@ static int __init at91_mci_probe(struct platform_device *pdev) ...@@ -947,8 +947,7 @@ static int __init at91_mci_probe(struct platform_device *pdev)
mmc->max_blk_size = MCI_MAXBLKSIZE; mmc->max_blk_size = MCI_MAXBLKSIZE;
mmc->max_blk_count = MCI_BLKATONCE; mmc->max_blk_count = MCI_BLKATONCE;
mmc->max_req_size = MCI_BUFSIZE; mmc->max_req_size = MCI_BUFSIZE;
mmc->max_phys_segs = MCI_BLKATONCE; mmc->max_segs = MCI_BLKATONCE;
mmc->max_hw_segs = MCI_BLKATONCE;
mmc->max_seg_size = MCI_BUFSIZE; mmc->max_seg_size = MCI_BUFSIZE;
host = mmc_priv(mmc); host = mmc_priv(mmc);
......
...@@ -1618,8 +1618,7 @@ static int __init atmci_init_slot(struct atmel_mci *host, ...@@ -1618,8 +1618,7 @@ static int __init atmci_init_slot(struct atmel_mci *host,
if (slot_data->bus_width >= 4) if (slot_data->bus_width >= 4)
mmc->caps |= MMC_CAP_4_BIT_DATA; mmc->caps |= MMC_CAP_4_BIT_DATA;
mmc->max_hw_segs = 64; mmc->max_segs = 64;
mmc->max_phys_segs = 64;
mmc->max_req_size = 32768 * 512; mmc->max_req_size = 32768 * 512;
mmc->max_blk_size = 32768; mmc->max_blk_size = 32768;
mmc->max_blk_count = 512; mmc->max_blk_count = 512;
......
...@@ -998,7 +998,7 @@ static int __devinit au1xmmc_probe(struct platform_device *pdev) ...@@ -998,7 +998,7 @@ static int __devinit au1xmmc_probe(struct platform_device *pdev)
mmc->f_max = 24000000; mmc->f_max = 24000000;
mmc->max_seg_size = AU1XMMC_DESCRIPTOR_SIZE; mmc->max_seg_size = AU1XMMC_DESCRIPTOR_SIZE;
mmc->max_phys_segs = AU1XMMC_DESCRIPTOR_COUNT; mmc->max_segs = AU1XMMC_DESCRIPTOR_COUNT;
mmc->max_blk_size = 2048; mmc->max_blk_size = 2048;
mmc->max_blk_count = 512; mmc->max_blk_count = 512;
......
...@@ -469,7 +469,7 @@ static int __devinit sdh_probe(struct platform_device *pdev) ...@@ -469,7 +469,7 @@ static int __devinit sdh_probe(struct platform_device *pdev)
} }
mmc->ops = &sdh_ops; mmc->ops = &sdh_ops;
mmc->max_phys_segs = 32; mmc->max_segs = 32;
mmc->max_seg_size = 1 << 16; mmc->max_seg_size = 1 << 16;
mmc->max_blk_size = 1 << 11; mmc->max_blk_size = 1 << 11;
mmc->max_blk_count = 1 << 11; mmc->max_blk_count = 1 << 11;
......
...@@ -138,7 +138,7 @@ ...@@ -138,7 +138,7 @@
/* /*
* One scatterlist dma "segment" is at most MAX_CCNT rw_threshold units, * One scatterlist dma "segment" is at most MAX_CCNT rw_threshold units,
* and we handle up to MAX_NR_SG segments. MMC_BLOCK_BOUNCE kicks in only * and we handle up to MAX_NR_SG segments. MMC_BLOCK_BOUNCE kicks in only
* for drivers with max_hw_segs == 1, making the segments bigger (64KB) * for drivers with max_segs == 1, making the segments bigger (64KB)
* than the page or two that's otherwise typical. nr_sg (passed from * than the page or two that's otherwise typical. nr_sg (passed from
* platform data) == 16 gives at least the same throughput boost, using * platform data) == 16 gives at least the same throughput boost, using
* EDMA transfer linkage instead of spending CPU time copying pages. * EDMA transfer linkage instead of spending CPU time copying pages.
...@@ -1239,8 +1239,7 @@ static int __init davinci_mmcsd_probe(struct platform_device *pdev) ...@@ -1239,8 +1239,7 @@ static int __init davinci_mmcsd_probe(struct platform_device *pdev)
* Each hw_seg uses one EDMA parameter RAM slot, always one * Each hw_seg uses one EDMA parameter RAM slot, always one
* channel and then usually some linked slots. * channel and then usually some linked slots.
*/ */
mmc->max_hw_segs = 1 + host->n_link; mmc->max_segs = 1 + host->n_link;
mmc->max_phys_segs = mmc->max_hw_segs;
/* EDMA limit per hw segment (one or two MBytes) */ /* EDMA limit per hw segment (one or two MBytes) */
mmc->max_seg_size = MAX_CCNT * rw_threshold; mmc->max_seg_size = MAX_CCNT * rw_threshold;
...@@ -1250,8 +1249,7 @@ static int __init davinci_mmcsd_probe(struct platform_device *pdev) ...@@ -1250,8 +1249,7 @@ static int __init davinci_mmcsd_probe(struct platform_device *pdev)
mmc->max_blk_count = 65535; /* NBLK is 16 bits */ mmc->max_blk_count = 65535; /* NBLK is 16 bits */
mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count; mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
dev_dbg(mmc_dev(host->mmc), "max_phys_segs=%d\n", mmc->max_phys_segs); dev_dbg(mmc_dev(host->mmc), "max_segs=%d\n", mmc->max_segs);
dev_dbg(mmc_dev(host->mmc), "max_hw_segs=%d\n", mmc->max_hw_segs);
dev_dbg(mmc_dev(host->mmc), "max_blk_size=%d\n", mmc->max_blk_size); dev_dbg(mmc_dev(host->mmc), "max_blk_size=%d\n", mmc->max_blk_size);
dev_dbg(mmc_dev(host->mmc), "max_req_size=%d\n", mmc->max_req_size); dev_dbg(mmc_dev(host->mmc), "max_req_size=%d\n", mmc->max_req_size);
dev_dbg(mmc_dev(host->mmc), "max_seg_size=%d\n", mmc->max_seg_size); dev_dbg(mmc_dev(host->mmc), "max_seg_size=%d\n", mmc->max_seg_size);
......
...@@ -966,8 +966,7 @@ static int __init imxmci_probe(struct platform_device *pdev) ...@@ -966,8 +966,7 @@ static int __init imxmci_probe(struct platform_device *pdev)
mmc->caps = MMC_CAP_4_BIT_DATA; mmc->caps = MMC_CAP_4_BIT_DATA;
/* MMC core transfer sizes tunable parameters */ /* MMC core transfer sizes tunable parameters */
mmc->max_hw_segs = 64; mmc->max_segs = 64;
mmc->max_phys_segs = 64;
mmc->max_seg_size = 64*512; /* default PAGE_CACHE_SIZE */ mmc->max_seg_size = 64*512; /* default PAGE_CACHE_SIZE */
mmc->max_req_size = 64*512; /* default PAGE_CACHE_SIZE */ mmc->max_req_size = 64*512; /* default PAGE_CACHE_SIZE */
mmc->max_blk_size = 2048; mmc->max_blk_size = 2048;
......
...@@ -876,8 +876,7 @@ static int __devinit jz4740_mmc_probe(struct platform_device* pdev) ...@@ -876,8 +876,7 @@ static int __devinit jz4740_mmc_probe(struct platform_device* pdev)
mmc->max_blk_count = (1 << 15) - 1; mmc->max_blk_count = (1 << 15) - 1;
mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count; mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
mmc->max_phys_segs = 128; mmc->max_segs = 128;
mmc->max_hw_segs = 128;
mmc->max_seg_size = mmc->max_req_size; mmc->max_seg_size = mmc->max_req_size;
host->mmc = mmc; host->mmc = mmc;
......
...@@ -1345,8 +1345,7 @@ static int mmc_spi_probe(struct spi_device *spi) ...@@ -1345,8 +1345,7 @@ static int mmc_spi_probe(struct spi_device *spi)
mmc->ops = &mmc_spi_ops; mmc->ops = &mmc_spi_ops;
mmc->max_blk_size = MMC_SPI_BLOCKSIZE; mmc->max_blk_size = MMC_SPI_BLOCKSIZE;
mmc->max_hw_segs = MMC_SPI_BLOCKSATONCE; mmc->max_segs = MMC_SPI_BLOCKSATONCE;
mmc->max_phys_segs = MMC_SPI_BLOCKSATONCE;
mmc->max_req_size = MMC_SPI_BLOCKSATONCE * MMC_SPI_BLOCKSIZE; mmc->max_req_size = MMC_SPI_BLOCKSATONCE * MMC_SPI_BLOCKSIZE;
mmc->max_blk_count = MMC_SPI_BLOCKSATONCE; mmc->max_blk_count = MMC_SPI_BLOCKSATONCE;
......
...@@ -734,8 +734,7 @@ static int __devinit mmci_probe(struct amba_device *dev, struct amba_id *id) ...@@ -734,8 +734,7 @@ static int __devinit mmci_probe(struct amba_device *dev, struct amba_id *id)
/* /*
* We can do SGIO * We can do SGIO
*/ */
mmc->max_hw_segs = 16; mmc->max_segs = NR_SG;
mmc->max_phys_segs = NR_SG;
/* /*
* Since only a certain number of bits are valid in the data length * Since only a certain number of bits are valid in the data length
......
...@@ -1164,8 +1164,7 @@ msmsdcc_probe(struct platform_device *pdev) ...@@ -1164,8 +1164,7 @@ msmsdcc_probe(struct platform_device *pdev)
mmc->caps |= MMC_CAP_SDIO_IRQ; mmc->caps |= MMC_CAP_SDIO_IRQ;
mmc->caps |= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED; mmc->caps |= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED;
mmc->max_phys_segs = NR_SG; mmc->max_segs = NR_SG;
mmc->max_hw_segs = NR_SG;
mmc->max_blk_size = 4096; /* MCI_DATA_CTL BLOCKSIZE up to 4096 */ mmc->max_blk_size = 4096; /* MCI_DATA_CTL BLOCKSIZE up to 4096 */
mmc->max_blk_count = 65536; mmc->max_blk_count = 65536;
......
...@@ -742,8 +742,7 @@ static int __init mvsd_probe(struct platform_device *pdev) ...@@ -742,8 +742,7 @@ static int __init mvsd_probe(struct platform_device *pdev)
mmc->max_blk_size = 2048; mmc->max_blk_size = 2048;
mmc->max_blk_count = 65535; mmc->max_blk_count = 65535;
mmc->max_hw_segs = 1; mmc->max_segs = 1;
mmc->max_phys_segs = 1;
mmc->max_seg_size = mmc->max_blk_size * mmc->max_blk_count; mmc->max_seg_size = mmc->max_blk_size * mmc->max_blk_count;
mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count; mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
......
...@@ -790,8 +790,7 @@ static int mxcmci_probe(struct platform_device *pdev) ...@@ -790,8 +790,7 @@ static int mxcmci_probe(struct platform_device *pdev)
mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO_IRQ; mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO_IRQ;
/* MMC core transfer sizes tunable parameters */ /* MMC core transfer sizes tunable parameters */
mmc->max_hw_segs = 64; mmc->max_segs = 64;
mmc->max_phys_segs = 64;
mmc->max_blk_size = 2048; mmc->max_blk_size = 2048;
mmc->max_blk_count = 65535; mmc->max_blk_count = 65535;
mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count; mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
......
...@@ -1335,8 +1335,7 @@ static int __init mmc_omap_new_slot(struct mmc_omap_host *host, int id) ...@@ -1335,8 +1335,7 @@ static int __init mmc_omap_new_slot(struct mmc_omap_host *host, int id)
* NOTE max_seg_size assumption that small blocks aren't * NOTE max_seg_size assumption that small blocks aren't
* normally used (except e.g. for reading SD registers). * normally used (except e.g. for reading SD registers).
*/ */
mmc->max_phys_segs = 32; mmc->max_segs = 32;
mmc->max_hw_segs = 32;
mmc->max_blk_size = 2048; /* BLEN is 11 bits (+1) */ mmc->max_blk_size = 2048; /* BLEN is 11 bits (+1) */
mmc->max_blk_count = 2048; /* NBLK is 11 bits (+1) */ mmc->max_blk_count = 2048; /* NBLK is 11 bits (+1) */
mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count; mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
......
...@@ -2105,8 +2105,7 @@ static int __init omap_hsmmc_probe(struct platform_device *pdev) ...@@ -2105,8 +2105,7 @@ static int __init omap_hsmmc_probe(struct platform_device *pdev)
/* Since we do only SG emulation, we can have as many segs /* Since we do only SG emulation, we can have as many segs
* as we want. */ * as we want. */
mmc->max_phys_segs = 1024; mmc->max_segs = 1024;
mmc->max_hw_segs = 1024;
mmc->max_blk_size = 512; /* Block Length at max can be 1024 */ mmc->max_blk_size = 512; /* Block Length at max can be 1024 */
mmc->max_blk_count = 0xFFFF; /* No. of Blocks is 16 bits */ mmc->max_blk_count = 0xFFFF; /* No. of Blocks is 16 bits */
......
...@@ -576,7 +576,7 @@ static int pxamci_probe(struct platform_device *pdev) ...@@ -576,7 +576,7 @@ static int pxamci_probe(struct platform_device *pdev)
* We can do SG-DMA, but we don't because we never know how much * We can do SG-DMA, but we don't because we never know how much
* data we successfully wrote to the card. * data we successfully wrote to the card.
*/ */
mmc->max_phys_segs = NR_SG; mmc->max_segs = NR_SG;
/* /*
* Our hardware DMA can handle a maximum of one page per SG entry. * Our hardware DMA can handle a maximum of one page per SG entry.
......
...@@ -1736,8 +1736,7 @@ static int __devinit s3cmci_probe(struct platform_device *pdev) ...@@ -1736,8 +1736,7 @@ static int __devinit s3cmci_probe(struct platform_device *pdev)
mmc->max_req_size = 4095 * 512; mmc->max_req_size = 4095 * 512;
mmc->max_seg_size = mmc->max_req_size; mmc->max_seg_size = mmc->max_req_size;
mmc->max_phys_segs = 128; mmc->max_segs = 128;
mmc->max_hw_segs = 128;
dbg(host, dbg_debug, dbg(host, dbg_debug,
"probe: mode:%s mapped mci_base:%p irq:%u irq_cd:%u dma:%u.\n", "probe: mode:%s mapped mci_base:%p irq:%u irq_cd:%u dma:%u.\n",
......
...@@ -1850,12 +1850,11 @@ int sdhci_add_host(struct sdhci_host *host) ...@@ -1850,12 +1850,11 @@ int sdhci_add_host(struct sdhci_host *host)
* can do scatter/gather or not. * can do scatter/gather or not.
*/ */
if (host->flags & SDHCI_USE_ADMA) if (host->flags & SDHCI_USE_ADMA)
mmc->max_hw_segs = 128; mmc->max_segs = 128;
else if (host->flags & SDHCI_USE_SDMA) else if (host->flags & SDHCI_USE_SDMA)
mmc->max_hw_segs = 1; mmc->max_segs = 1;
else /* PIO */ else /* PIO */
mmc->max_hw_segs = 128; mmc->max_segs = 128;
mmc->max_phys_segs = 128;
/* /*
* Maximum number of sectors in one transfer. Limited by DMA boundary * Maximum number of sectors in one transfer. Limited by DMA boundary
......
...@@ -846,8 +846,7 @@ static int __devinit sh_mmcif_probe(struct platform_device *pdev) ...@@ -846,8 +846,7 @@ static int __devinit sh_mmcif_probe(struct platform_device *pdev)
mmc->caps = MMC_CAP_MMC_HIGHSPEED; mmc->caps = MMC_CAP_MMC_HIGHSPEED;
if (pd->caps) if (pd->caps)
mmc->caps |= pd->caps; mmc->caps |= pd->caps;
mmc->max_phys_segs = 128; mmc->max_segs = 128;
mmc->max_hw_segs = 128;
mmc->max_blk_size = 512; mmc->max_blk_size = 512;
mmc->max_blk_count = 65535; mmc->max_blk_count = 65535;
mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count; mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
......
...@@ -978,11 +978,10 @@ static int tifm_sd_probe(struct tifm_dev *sock) ...@@ -978,11 +978,10 @@ static int tifm_sd_probe(struct tifm_dev *sock)
mmc->f_max = 24000000; mmc->f_max = 24000000;
mmc->max_blk_count = 2048; mmc->max_blk_count = 2048;
mmc->max_hw_segs = mmc->max_blk_count; mmc->max_segs = mmc->max_blk_count;
mmc->max_blk_size = min(TIFM_MMCSD_MAX_BLOCK_SIZE, PAGE_SIZE); mmc->max_blk_size = min(TIFM_MMCSD_MAX_BLOCK_SIZE, PAGE_SIZE);
mmc->max_seg_size = mmc->max_blk_count * mmc->max_blk_size; mmc->max_seg_size = mmc->max_blk_count * mmc->max_blk_size;
mmc->max_req_size = mmc->max_seg_size; mmc->max_req_size = mmc->max_seg_size;
mmc->max_phys_segs = mmc->max_hw_segs;
sock->card_event = tifm_sd_card_event; sock->card_event = tifm_sd_card_event;
sock->data_event = tifm_sd_data_event; sock->data_event = tifm_sd_data_event;
......
...@@ -1050,8 +1050,7 @@ static void via_init_mmc_host(struct via_crdr_mmc_host *host) ...@@ -1050,8 +1050,7 @@ static void via_init_mmc_host(struct via_crdr_mmc_host *host)
mmc->ops = &via_sdc_ops; mmc->ops = &via_sdc_ops;
/*Hardware cannot do scatter lists*/ /*Hardware cannot do scatter lists*/
mmc->max_hw_segs = 1; mmc->max_segs = 1;
mmc->max_phys_segs = 1;
mmc->max_blk_size = VIA_CRDR_MAX_BLOCK_LENGTH; mmc->max_blk_size = VIA_CRDR_MAX_BLOCK_LENGTH;
mmc->max_blk_count = VIA_CRDR_MAX_BLOCK_COUNT; mmc->max_blk_count = VIA_CRDR_MAX_BLOCK_COUNT;
......
...@@ -1235,8 +1235,7 @@ static int __devinit wbsd_alloc_mmc(struct device *dev) ...@@ -1235,8 +1235,7 @@ static int __devinit wbsd_alloc_mmc(struct device *dev)
* Maximum number of segments. Worst case is one sector per segment * Maximum number of segments. Worst case is one sector per segment
* so this will be 64kB/512. * so this will be 64kB/512.
*/ */
mmc->max_hw_segs = 128; mmc->max_segs = 128;
mmc->max_phys_segs = 128;
/* /*
* Maximum request size. Also limited by 64KiB buffer. * Maximum request size. Also limited by 64KiB buffer.
......
...@@ -162,8 +162,7 @@ struct mmc_host { ...@@ -162,8 +162,7 @@ struct mmc_host {
/* host specific block data */ /* host specific block data */
unsigned int max_seg_size; /* see blk_queue_max_segment_size */ unsigned int max_seg_size; /* see blk_queue_max_segment_size */
unsigned short max_hw_segs; /* see blk_queue_max_hw_segments */ unsigned short max_segs; /* see blk_queue_max_segments */
unsigned short max_phys_segs; /* see blk_queue_max_phys_segments */
unsigned short unused; unsigned short unused;
unsigned int max_req_size; /* maximum number of bytes in one req */ unsigned int max_req_size; /* maximum number of bytes in one req */
unsigned int max_blk_size; /* maximum size of one mmc block */ unsigned int max_blk_size; /* maximum size of one mmc block */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment