On 27 February 2013 21:19, Bernie Thompson <bhthompson@xxxxxxxxxxxx> wrote: > The JEDEC MMC v4 spec defines a new PRV value in place of the original > fwrev and hwrev specified in v1. We can expose this in the kernel to enable > user space to more easily determine the product revision of a given MMC. > > Signed-off-by: Bernie Thompson <bhthompson@xxxxxxxxxxxx> > --- > Documentation/mmc/mmc-dev-attrs.txt | 1 + > drivers/mmc/core/mmc.c | 3 +++ > include/linux/mmc/card.h | 1 + > 3 files changed, 5 insertions(+) > > diff --git a/Documentation/mmc/mmc-dev-attrs.txt b/Documentation/mmc/mmc-dev-attrs.txt > index 0d98fac..189bab0 100644 > --- a/Documentation/mmc/mmc-dev-attrs.txt > +++ b/Documentation/mmc/mmc-dev-attrs.txt > @@ -22,6 +22,7 @@ All attributes are read-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 > diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c > index c8f3d6e..d584f7c 100644 > --- a/drivers/mmc/core/mmc.c > +++ b/drivers/mmc/core/mmc.c > @@ -96,6 +96,7 @@ static int mmc_decode_cid(struct mmc_card *card) > card->cid.prod_name[3] = UNSTUFF_BITS(resp, 72, 8); > card->cid.prod_name[4] = UNSTUFF_BITS(resp, 64, 8); > card->cid.prod_name[5] = UNSTUFF_BITS(resp, 56, 8); > + card->cid.prv = UNSTUFF_BITS(resp, 48, 8); > card->cid.serial = UNSTUFF_BITS(resp, 16, 32); > card->cid.month = UNSTUFF_BITS(resp, 12, 4); > card->cid.year = UNSTUFF_BITS(resp, 8, 4) + 1997; > @@ -627,6 +628,7 @@ MMC_DEV_ATTR(hwrev, "0x%x\n", card->cid.hwrev); > MMC_DEV_ATTR(manfid, "0x%06x\n", card->cid.manfid); > MMC_DEV_ATTR(name, "%s\n", card->cid.prod_name); > MMC_DEV_ATTR(oemid, "0x%04x\n", card->cid.oemid); > +MMC_DEV_ATTR(prv, "0x%x\n", card->cid.prv); > MMC_DEV_ATTR(serial, "0x%08x\n", card->cid.serial); > MMC_DEV_ATTR(enhanced_area_offset, "%llu\n", > card->ext_csd.enhanced_area_offset); > @@ -645,6 +647,7 @@ static struct attribute *mmc_std_attrs[] = { > &dev_attr_manfid.attr, > &dev_attr_name.attr, > &dev_attr_oemid.attr, > + &dev_attr_prv.attr, > &dev_attr_serial.attr, > &dev_attr_enhanced_area_offset.attr, > &dev_attr_enhanced_area_size.attr, > diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h > index 61b2c30..f31725b 100644 > --- a/include/linux/mmc/card.h > +++ b/include/linux/mmc/card.h > @@ -17,6 +17,7 @@ > struct mmc_cid { > unsigned int manfid; > char prod_name[8]; > + unsigned char prv; > unsigned int serial; > unsigned short oemid; > unsigned short year; > -- > 1.8.1.3 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-mmc" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html Reviewed-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html