/* * linux/drivers/mmc/host/mmci.c - ARM PrimeCell MMCI PL180/1 driver * * Copyright (C) 2003 Deep Blue Solutions, Ltd, All Rights Reserved. * Copyright (C) 2010 ST-Ericsson SA * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */#include<linux/module.h>#include<linux/moduleparam.h>#include<linux/init.h>#include<linux/ioport.h>#include<linux/device.h>#include<linux/interrupt.h>#include<linux/kernel.h>#include<linux/delay.h>#include<linux/err.h>#include<linux/highmem.h>#include<linux/log2.h>#include<linux/mmc/host.h>#include<linux/mmc/card.h>#include<linux/amba/bus.h>#include<linux/clk.h>#include<linux/scatterlist.h>#include<linux/gpio.h>#include<linux/regulator/consumer.h>#include<linux/dmaengine.h>#include<linux/dma-mapping.h>#include<linux/amba/mmci.h>#include<asm/div64.h>#include<asm/io.h>#include<asm/sizes.h>#include"mmci.h"#define DRIVER_NAME "mmci-pl18x"staticunsignedintfmax=515633;/** * struct variant_data - MMCI variant-specific quirks * @clkreg: default value for MCICLOCK register * @clkreg_enable: enable value for MMCICLOCK register * @datalength_bits: number of bits in the MMCIDATALENGTH register * @fifosize: number of bytes that can be written when MMCI_TXFIFOEMPTY * is asserted (likewise for RX) * @fifohalfsize: number of bytes that can be written when MCI_TXFIFOHALFEMPTY * is asserted (likewise for RX) * @sdio: variant supports SDIO * @st_clkdiv: true if using a ST-specific clock divider algorithm * @blksz_datactrl16: true if Block size is at b16..b30 position in datactrl register */structvariant_data