SD and MMC Block Device Attributes
==================================

These attributes are defined for the block devices associated with the
SD or MMC device.

The following attributes are read/write.

	force_ro		Enforce read-only access even if write protect switch is off.

	num_wr_reqs_to_start_packing 	This attribute is used to determine
	the trigger for activating the write packing, in case the write
	packing control feature is enabled.

	When the MMC manages to reach a point where num_wr_reqs_to_start_packing
	write requests could be packed, it enables the write packing feature.
	This allows us to start the write packing only when it is beneficial
	and has minimum affect on the read latency.

	The number of potential packed requests that will trigger the packing
	can be configured via sysfs by writing the required value to:
	/sys/block/<block_dev_name>/num_wr_reqs_to_start_packing.

	The default value of num_wr_reqs_to_start_packing was determined by
	running parallel lmdd write and lmdd read operations and calculating
	the max number of packed writes requests.

SD and MMC Device Attributes
============================

All attributes are read-only.

	cid			Card Identification Register
	csd			Card Specific Data Register
	scr			SD Card Configuration Register (SD only)
	date			Manufacturing Date (from CID Register)
	fwrev			Firmware/Product Revision (from CID Register) (SD and MMCv1 only)
	hwrev			Hardware/Product Revision (from CID Register) (SD and MMCv1 only)
	manfid			Manufacturer ID (from CID Register)
	name			Product Name (from CID Register)
	oemid			OEM/Application ID (from CID Register)
	prv			Product Revision (from CID Register) (SD and MMCv4 only)
	serial			Product Serial Number (from CID Register)
	erase_size		Erase group size
	preferred_erase_size	Preferred erase size
	raw_rpmb_size_mult	RPMB partition size
	rel_sectors		Reliable write sector count
	ocr 			Operation Conditions Register
	dsr			Driver Stage Register

Note on Erase Size and Preferred Erase Size:

	"erase_size" is the  minimum size, in bytes, of an erase
	operation.  For MMC, "erase_size" is the erase group size
	reported by the card.  Note that "erase_size" does not apply
	to trim or secure trim operations where the minimum size is
	always one 512 byte sector.  For SD, "erase_size" is 512
	if the card is block-addressed, 0 otherwise.

	SD/MMC cards can erase an arbitrarily large area up to and
	including the whole card.  When erasing a large area it may
	be desirable to do it in smaller chunks for three reasons:
		1. A single erase command will make all other I/O on
		the card wait.  This is not a problem if the whole card
		is being erased, but erasing one partition will make
		I/O for another partition on the same card wait for the
		duration of the erase - which could be a several
		minutes.
		2. To be able to inform the user of erase progress.
		3. The erase timeout becomes too large to be very
		useful.  Because the erase timeout contains a margin
		which is multiplied by the size of the erase area,
		the value can end up being several minutes for large
		areas.

	"erase_size" is not the most efficient unit to erase
	(especially for SD where it is just one sector),
	hence "preferred_erase_size" provides a good chunk
	size for erasing large areas.

	For MMC, "preferred_erase_size" is the high-capacity
	erase size if a card specifies one, otherwise it is
	based on the capacity of the card.

	For SD, "preferred_erase_size" is the allocation unit
	size specified by the card.

	"preferred_erase_size" is in bytes.

Note on raw_rpmb_size_mult:
	"raw_rpmb_size_mult" is a mutliple of 128kB block.
	RPMB size in byte is calculated by using the following equation:
	RPMB partition size = 128kB x raw_rpmb_size_mult

SD/MMC/SDIO Clock Gating Attribute
==================================

Read and write access is provided to following attribute.
This attribute appears only if CONFIG_MMC_CLKGATE is enabled.

	clkgate_delay	Tune the clock gating delay with desired value in milliseconds.

echo <desired delay> > /sys/class/mmc_host/mmcX/clkgate_delay

SD/MMC/SDIO Clock Scaling Attributes
====================================

Read and write accesses are provided to following attributes.

	polling_interval	Measured in milliseconds, this attribute
				defines how often we need to check the card
				usage and make decisions on frequency scaling.

	up_threshold		This attribute defines what should be the
				average card usage between the polling
				interval for the mmc core to make a decision
				on whether it should increase the frequency.
				For example when it is set to '35' it means
				that between the checking intervals the card
				needs to be on average more than 35% in use to
				scale up the frequency. The value should be
				between 0 - 100 so that it can be compared
				against load percentage.

	down_threshold		Similar to up_threshold, but on lowering the
				frequency. For example, when it is set to '2'
				it means that between the checking intervals
				the card needs to be on average less than 2%
				in use to scale down the clocks to minimum
				frequency. The value should be between 0 - 100
				so that it can be compared against load
				percentage.

	enable			Enable clock scaling for hosts (and cards)
				that support ultrahigh speed modes
				(SDR104, DDR50, HS200).

echo <desired value> > /sys/class/mmc_host/mmcX/clk_scaling/polling_interval
echo <desired value> > /sys/class/mmc_host/mmcX/clk_scaling/up_threshold
echo <desired value> > /sys/class/mmc_host/mmcX/clk_scaling/down_threshold
echo <desired value> > /sys/class/mmc_host/mmcX/clk_scaling/enable
