struct mmc_card *card = dev_to_mmc_card(dev); switch (card->type) { case MMC_TYPE_MMC: return sprintf(buf, "MMC\n"); case MMC_TYPE_SD: return sprintf(buf, "SD\n"); case MMC_TYPE_SDIO: return sprintf(buf, "SDIO\n"); default: return -EFAULT; } } static struct device_attribute mmc_dev_attrs[] = { MMC_ATTR_RO(type), __ATTR_NULL, }; /* * This currently matches any MMC driver to any MMC card - drivers * themselves make the decision whether to drive this card in their * probe method. */ static int mmc_bus_match(struct device *dev, struct device_driver *drv) { return 1; } static int mmc_bus_uevent(struct device *dev, struct kobj_uevent_env *env)
} MMC_ATTR_FN(cid, "%08x%08x%08x%08x\n", card->raw_cid[0], card->raw_cid[1], card->raw_cid[2], card->raw_cid[3]); MMC_ATTR_FN(csd, "%08x%08x%08x%08x\n", card->raw_csd[0], card->raw_csd[1], card->raw_csd[2], card->raw_csd[3]); MMC_ATTR_FN(date, "%02d/%04d\n", card->cid.month, card->cid.year); MMC_ATTR_FN(fwrev, "0x%x\n", card->cid.fwrev); MMC_ATTR_FN(hwrev, "0x%x\n", card->cid.hwrev); MMC_ATTR_FN(manfid, "0x%06x\n", card->cid.manfid); MMC_ATTR_FN(name, "%s\n", card->cid.prod_name); MMC_ATTR_FN(oemid, "0x%04x\n", card->cid.oemid); MMC_ATTR_FN(serial, "0x%08x\n", card->cid.serial); static struct device_attribute mmc_dev_attrs[] = { MMC_ATTR_RO(cid), MMC_ATTR_RO(csd), MMC_ATTR_RO(date), MMC_ATTR_RO(fwrev), MMC_ATTR_RO(hwrev), MMC_ATTR_RO(manfid), MMC_ATTR_RO(name), MMC_ATTR_RO(oemid), MMC_ATTR_RO(serial), __ATTR_NULL, }; /* * Adds sysfs entries as relevant. */ static int mmc_sysfs_add(struct mmc_host *host, struct mmc_card *card)