sd.c 44 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /*
  3. * linux/drivers/mmc/core/sd.c
  4. *
  5. * Copyright (C) 2003-2004 Russell King, All Rights Reserved.
  6. * SD support Copyright (C) 2004 Ian Molton, All Rights Reserved.
  7. * Copyright (C) 2005-2007 Pierre Ossman, All Rights Reserved.
  8. */
  9. #include <linux/err.h>
  10. #include <linux/sizes.h>
  11. #include <linux/slab.h>
  12. #include <linux/stat.h>
  13. #include <linux/pm_runtime.h>
  14. #include <linux/random.h>
  15. #include <linux/scatterlist.h>
  16. #include <linux/sysfs.h>
  17. #include <linux/mmc/host.h>
  18. #include <linux/mmc/card.h>
  19. #include <linux/mmc/mmc.h>
  20. #include <linux/mmc/sd.h>
  21. #include "core.h"
  22. #include "card.h"
  23. #include "host.h"
  24. #include "bus.h"
  25. #include "mmc_ops.h"
  26. #include "quirks.h"
  27. #include "sd.h"
  28. #include "sd_ops.h"
  29. static const unsigned int tran_exp[] = {
  30. 10000, 100000, 1000000, 10000000,
  31. 0, 0, 0, 0
  32. };
  33. static const unsigned char tran_mant[] = {
  34. 0, 10, 12, 13, 15, 20, 25, 30,
  35. 35, 40, 45, 50, 55, 60, 70, 80,
  36. };
  37. static const unsigned int taac_exp[] = {
  38. 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000,
  39. };
  40. static const unsigned int taac_mant[] = {
  41. 0, 10, 12, 13, 15, 20, 25, 30,
  42. 35, 40, 45, 50, 55, 60, 70, 80,
  43. };
  44. static const unsigned int sd_au_size[] = {
  45. 0, SZ_16K / 512, SZ_32K / 512, SZ_64K / 512,
  46. SZ_128K / 512, SZ_256K / 512, SZ_512K / 512, SZ_1M / 512,
  47. SZ_2M / 512, SZ_4M / 512, SZ_8M / 512, (SZ_8M + SZ_4M) / 512,
  48. SZ_16M / 512, (SZ_16M + SZ_8M) / 512, SZ_32M / 512, SZ_64M / 512,
  49. };
  50. #define SD_POWEROFF_NOTIFY_TIMEOUT_MS 1000
  51. #define SD_WRITE_EXTR_SINGLE_TIMEOUT_MS 1000
  52. struct sd_busy_data {
  53. struct mmc_card *card;
  54. u8 *reg_buf;
  55. };
  56. /*
  57. * Given the decoded CSD structure, decode the raw CID to our CID structure.
  58. */
  59. void mmc_decode_cid(struct mmc_card *card)
  60. {
  61. u32 *resp = card->raw_cid;
  62. /*
  63. * Add the raw card ID (cid) data to the entropy pool. It doesn't
  64. * matter that not all of it is unique, it's just bonus entropy.
  65. */
  66. add_device_randomness(&card->raw_cid, sizeof(card->raw_cid));
  67. /*
  68. * SD doesn't currently have a version field so we will
  69. * have to assume we can parse this.
  70. */
  71. card->cid.manfid = unstuff_bits(resp, 120, 8);
  72. card->cid.oemid = unstuff_bits(resp, 104, 16);
  73. card->cid.prod_name[0] = unstuff_bits(resp, 96, 8);
  74. card->cid.prod_name[1] = unstuff_bits(resp, 88, 8);
  75. card->cid.prod_name[2] = unstuff_bits(resp, 80, 8);
  76. card->cid.prod_name[3] = unstuff_bits(resp, 72, 8);
  77. card->cid.prod_name[4] = unstuff_bits(resp, 64, 8);
  78. card->cid.hwrev = unstuff_bits(resp, 60, 4);
  79. card->cid.fwrev = unstuff_bits(resp, 56, 4);
  80. card->cid.serial = unstuff_bits(resp, 24, 32);
  81. card->cid.year = unstuff_bits(resp, 12, 8);
  82. card->cid.month = unstuff_bits(resp, 8, 4);
  83. card->cid.year += 2000; /* SD cards year offset */
  84. }
  85. /*
  86. * Given a 128-bit response, decode to our card CSD structure.
  87. */
  88. static int mmc_decode_csd(struct mmc_card *card, bool is_sduc)
  89. {
  90. struct mmc_csd *csd = &card->csd;
  91. unsigned int e, m, csd_struct;
  92. u32 *resp = card->raw_csd;
  93. csd_struct = unstuff_bits(resp, 126, 2);
  94. switch (csd_struct) {
  95. case 0:
  96. m = unstuff_bits(resp, 115, 4);
  97. e = unstuff_bits(resp, 112, 3);
  98. csd->taac_ns = (taac_exp[e] * taac_mant[m] + 9) / 10;
  99. csd->taac_clks = unstuff_bits(resp, 104, 8) * 100;
  100. m = unstuff_bits(resp, 99, 4);
  101. e = unstuff_bits(resp, 96, 3);
  102. csd->max_dtr = tran_exp[e] * tran_mant[m];
  103. csd->cmdclass = unstuff_bits(resp, 84, 12);
  104. e = unstuff_bits(resp, 47, 3);
  105. m = unstuff_bits(resp, 62, 12);
  106. csd->capacity = (1 + m) << (e + 2);
  107. csd->read_blkbits = unstuff_bits(resp, 80, 4);
  108. csd->read_partial = unstuff_bits(resp, 79, 1);
  109. csd->write_misalign = unstuff_bits(resp, 78, 1);
  110. csd->read_misalign = unstuff_bits(resp, 77, 1);
  111. csd->dsr_imp = unstuff_bits(resp, 76, 1);
  112. csd->r2w_factor = unstuff_bits(resp, 26, 3);
  113. csd->write_blkbits = unstuff_bits(resp, 22, 4);
  114. csd->write_partial = unstuff_bits(resp, 21, 1);
  115. if (unstuff_bits(resp, 46, 1)) {
  116. csd->erase_size = 1;
  117. } else if (csd->write_blkbits >= 9) {
  118. csd->erase_size = unstuff_bits(resp, 39, 7) + 1;
  119. csd->erase_size <<= csd->write_blkbits - 9;
  120. }
  121. if (unstuff_bits(resp, 13, 1))
  122. mmc_card_set_readonly(card);
  123. break;
  124. case 1:
  125. case 2:
  126. /*
  127. * This is a block-addressed SDHC, SDXC or SDUC card.
  128. * Most interesting fields are unused and have fixed
  129. * values. To avoid getting tripped by buggy cards,
  130. * we assume those fixed values ourselves.
  131. */
  132. mmc_card_set_blockaddr(card);
  133. csd->taac_ns = 0; /* Unused */
  134. csd->taac_clks = 0; /* Unused */
  135. m = unstuff_bits(resp, 99, 4);
  136. e = unstuff_bits(resp, 96, 3);
  137. csd->max_dtr = tran_exp[e] * tran_mant[m];
  138. csd->cmdclass = unstuff_bits(resp, 84, 12);
  139. if (csd_struct == 1)
  140. m = unstuff_bits(resp, 48, 22);
  141. else
  142. m = unstuff_bits(resp, 48, 28);
  143. csd->c_size = m;
  144. if (csd->c_size >= 0x400000 && is_sduc)
  145. mmc_card_set_ult_capacity(card);
  146. else if (csd->c_size >= 0xFFFF)
  147. mmc_card_set_ext_capacity(card);
  148. csd->capacity = (1 + (typeof(sector_t))m) << 10;
  149. csd->read_blkbits = 9;
  150. csd->read_partial = 0;
  151. csd->write_misalign = 0;
  152. csd->read_misalign = 0;
  153. csd->r2w_factor = 4; /* Unused */
  154. csd->write_blkbits = 9;
  155. csd->write_partial = 0;
  156. csd->erase_size = 1;
  157. if (unstuff_bits(resp, 13, 1))
  158. mmc_card_set_readonly(card);
  159. break;
  160. default:
  161. pr_err("%s: unrecognised CSD structure version %d\n",
  162. mmc_hostname(card->host), csd_struct);
  163. return -EINVAL;
  164. }
  165. card->erase_size = csd->erase_size;
  166. return 0;
  167. }
  168. /*
  169. * Given a 64-bit response, decode to our card SCR structure.
  170. */
  171. static int mmc_decode_scr(struct mmc_card *card)
  172. {
  173. struct sd_scr *scr = &card->scr;
  174. unsigned int scr_struct;
  175. u32 resp[4];
  176. resp[3] = card->raw_scr[1];
  177. resp[2] = card->raw_scr[0];
  178. scr_struct = unstuff_bits(resp, 60, 4);
  179. if (scr_struct != 0) {
  180. pr_err("%s: unrecognised SCR structure version %d\n",
  181. mmc_hostname(card->host), scr_struct);
  182. return -EINVAL;
  183. }
  184. scr->sda_vsn = unstuff_bits(resp, 56, 4);
  185. scr->bus_widths = unstuff_bits(resp, 48, 4);
  186. if (scr->sda_vsn == SCR_SPEC_VER_2)
  187. /* Check if Physical Layer Spec v3.0 is supported */
  188. scr->sda_spec3 = unstuff_bits(resp, 47, 1);
  189. if (scr->sda_spec3) {
  190. scr->sda_spec4 = unstuff_bits(resp, 42, 1);
  191. scr->sda_specx = unstuff_bits(resp, 38, 4);
  192. }
  193. if (unstuff_bits(resp, 55, 1))
  194. card->erased_byte = 0xFF;
  195. else
  196. card->erased_byte = 0x0;
  197. if (scr->sda_spec4)
  198. scr->cmds = unstuff_bits(resp, 32, 4);
  199. else if (scr->sda_spec3)
  200. scr->cmds = unstuff_bits(resp, 32, 2);
  201. /* SD Spec says: any SD Card shall set at least bits 0 and 2 */
  202. if (!(scr->bus_widths & SD_SCR_BUS_WIDTH_1) ||
  203. !(scr->bus_widths & SD_SCR_BUS_WIDTH_4)) {
  204. pr_err("%s: invalid bus width\n", mmc_hostname(card->host));
  205. return -EINVAL;
  206. }
  207. return 0;
  208. }
  209. /*
  210. * Fetch and process SD Status register.
  211. */
  212. static int mmc_read_ssr(struct mmc_card *card)
  213. {
  214. unsigned int au, es, et, eo;
  215. __be32 *raw_ssr;
  216. u32 resp[4] = {};
  217. u8 discard_support;
  218. int i;
  219. if (!(card->csd.cmdclass & CCC_APP_SPEC)) {
  220. pr_warn("%s: card lacks mandatory SD Status function\n",
  221. mmc_hostname(card->host));
  222. return 0;
  223. }
  224. raw_ssr = kmalloc(sizeof(card->raw_ssr), GFP_KERNEL);
  225. if (!raw_ssr)
  226. return -ENOMEM;
  227. if (mmc_app_sd_status(card, raw_ssr)) {
  228. pr_warn("%s: problem reading SD Status register\n",
  229. mmc_hostname(card->host));
  230. kfree(raw_ssr);
  231. return 0;
  232. }
  233. for (i = 0; i < 16; i++)
  234. card->raw_ssr[i] = be32_to_cpu(raw_ssr[i]);
  235. kfree(raw_ssr);
  236. /*
  237. * unstuff_bits only works with four u32s so we have to offset the
  238. * bitfield positions accordingly.
  239. */
  240. au = unstuff_bits(card->raw_ssr, 428 - 384, 4);
  241. if (au) {
  242. if (au <= 9 || card->scr.sda_spec3) {
  243. card->ssr.au = sd_au_size[au];
  244. es = unstuff_bits(card->raw_ssr, 408 - 384, 16);
  245. et = unstuff_bits(card->raw_ssr, 402 - 384, 6);
  246. if (es && et) {
  247. eo = unstuff_bits(card->raw_ssr, 400 - 384, 2);
  248. card->ssr.erase_timeout = (et * 1000) / es;
  249. card->ssr.erase_offset = eo * 1000;
  250. }
  251. } else {
  252. pr_warn("%s: SD Status: Invalid Allocation Unit size\n",
  253. mmc_hostname(card->host));
  254. }
  255. }
  256. /*
  257. * starting SD5.1 discard is supported if DISCARD_SUPPORT (b313) is set
  258. */
  259. resp[3] = card->raw_ssr[6];
  260. discard_support = unstuff_bits(resp, 313 - 288, 1);
  261. card->erase_arg = (card->scr.sda_specx && discard_support) ?
  262. SD_DISCARD_ARG : SD_ERASE_ARG;
  263. return 0;
  264. }
  265. /*
  266. * Fetches and decodes switch information
  267. */
  268. static int mmc_read_switch(struct mmc_card *card)
  269. {
  270. int err;
  271. u8 *status;
  272. if (card->scr.sda_vsn < SCR_SPEC_VER_1)
  273. return 0;
  274. if (!(card->csd.cmdclass & CCC_SWITCH)) {
  275. pr_warn("%s: card lacks mandatory switch function, performance might suffer\n",
  276. mmc_hostname(card->host));
  277. return 0;
  278. }
  279. status = kmalloc(64, GFP_KERNEL);
  280. if (!status)
  281. return -ENOMEM;
  282. /*
  283. * Find out the card's support bits with a mode 0 operation.
  284. * The argument does not matter, as the support bits do not
  285. * change with the arguments.
  286. */
  287. err = mmc_sd_switch(card, SD_SWITCH_CHECK, 0, 0, status);
  288. if (err) {
  289. /*
  290. * If the host or the card can't do the switch,
  291. * fail more gracefully.
  292. */
  293. if (err != -EINVAL && err != -ENOSYS && err != -EFAULT)
  294. goto out;
  295. pr_warn("%s: problem reading Bus Speed modes\n",
  296. mmc_hostname(card->host));
  297. err = 0;
  298. goto out;
  299. }
  300. if (status[13] & SD_MODE_HIGH_SPEED)
  301. card->sw_caps.hs_max_dtr = HIGH_SPEED_MAX_DTR;
  302. if (card->scr.sda_spec3) {
  303. card->sw_caps.sd3_bus_mode = status[13];
  304. /* Driver Strengths supported by the card */
  305. card->sw_caps.sd3_drv_type = status[9];
  306. card->sw_caps.sd3_curr_limit = status[7] | status[6] << 8;
  307. }
  308. out:
  309. kfree(status);
  310. return err;
  311. }
  312. /*
  313. * Test if the card supports high-speed mode and, if so, switch to it.
  314. */
  315. int mmc_sd_switch_hs(struct mmc_card *card)
  316. {
  317. int err;
  318. u8 *status;
  319. if (card->scr.sda_vsn < SCR_SPEC_VER_1)
  320. return 0;
  321. if (!(card->csd.cmdclass & CCC_SWITCH))
  322. return 0;
  323. if (!(card->host->caps & MMC_CAP_SD_HIGHSPEED))
  324. return 0;
  325. if (card->sw_caps.hs_max_dtr == 0)
  326. return 0;
  327. status = kmalloc(64, GFP_KERNEL);
  328. if (!status)
  329. return -ENOMEM;
  330. err = mmc_sd_switch(card, SD_SWITCH_SET, 0,
  331. HIGH_SPEED_BUS_SPEED, status);
  332. if (err)
  333. goto out;
  334. if ((status[16] & 0xF) != HIGH_SPEED_BUS_SPEED) {
  335. pr_warn("%s: Problem switching card into high-speed mode!\n",
  336. mmc_hostname(card->host));
  337. err = 0;
  338. } else {
  339. err = 1;
  340. }
  341. out:
  342. kfree(status);
  343. return err;
  344. }
  345. static int sd_select_driver_type(struct mmc_card *card, u8 *status)
  346. {
  347. int card_drv_type, drive_strength, drv_type;
  348. int err;
  349. card->drive_strength = 0;
  350. card_drv_type = card->sw_caps.sd3_drv_type | SD_DRIVER_TYPE_B;
  351. drive_strength = mmc_select_drive_strength(card,
  352. card->sw_caps.uhs_max_dtr,
  353. card_drv_type, &drv_type);
  354. if (drive_strength) {
  355. err = mmc_sd_switch(card, SD_SWITCH_SET, 2,
  356. drive_strength, status);
  357. if (err)
  358. return err;
  359. if ((status[15] & 0xF) != drive_strength) {
  360. pr_warn("%s: Problem setting drive strength!\n",
  361. mmc_hostname(card->host));
  362. return 0;
  363. }
  364. card->drive_strength = drive_strength;
  365. }
  366. if (drv_type)
  367. mmc_set_driver_type(card->host, drv_type);
  368. return 0;
  369. }
  370. static void sd_update_bus_speed_mode(struct mmc_card *card)
  371. {
  372. /*
  373. * If the host doesn't support any of the UHS-I modes, fallback on
  374. * default speed.
  375. */
  376. if (!mmc_host_uhs(card->host)) {
  377. card->sd_bus_speed = 0;
  378. return;
  379. }
  380. if ((card->host->caps & MMC_CAP_UHS_SDR104) &&
  381. (card->sw_caps.sd3_bus_mode & SD_MODE_UHS_SDR104)) {
  382. card->sd_bus_speed = UHS_SDR104_BUS_SPEED;
  383. } else if ((card->host->caps & MMC_CAP_UHS_DDR50) &&
  384. (card->sw_caps.sd3_bus_mode & SD_MODE_UHS_DDR50)) {
  385. card->sd_bus_speed = UHS_DDR50_BUS_SPEED;
  386. } else if ((card->host->caps & (MMC_CAP_UHS_SDR104 |
  387. MMC_CAP_UHS_SDR50)) && (card->sw_caps.sd3_bus_mode &
  388. SD_MODE_UHS_SDR50)) {
  389. card->sd_bus_speed = UHS_SDR50_BUS_SPEED;
  390. } else if ((card->host->caps & (MMC_CAP_UHS_SDR104 |
  391. MMC_CAP_UHS_SDR50 | MMC_CAP_UHS_SDR25)) &&
  392. (card->sw_caps.sd3_bus_mode & SD_MODE_UHS_SDR25)) {
  393. card->sd_bus_speed = UHS_SDR25_BUS_SPEED;
  394. } else if ((card->host->caps & (MMC_CAP_UHS_SDR104 |
  395. MMC_CAP_UHS_SDR50 | MMC_CAP_UHS_SDR25 |
  396. MMC_CAP_UHS_SDR12)) && (card->sw_caps.sd3_bus_mode &
  397. SD_MODE_UHS_SDR12)) {
  398. card->sd_bus_speed = UHS_SDR12_BUS_SPEED;
  399. }
  400. }
  401. static int sd_set_bus_speed_mode(struct mmc_card *card, u8 *status)
  402. {
  403. int err;
  404. unsigned int timing = 0;
  405. switch (card->sd_bus_speed) {
  406. case UHS_SDR104_BUS_SPEED:
  407. timing = MMC_TIMING_UHS_SDR104;
  408. card->sw_caps.uhs_max_dtr = UHS_SDR104_MAX_DTR;
  409. break;
  410. case UHS_DDR50_BUS_SPEED:
  411. timing = MMC_TIMING_UHS_DDR50;
  412. card->sw_caps.uhs_max_dtr = UHS_DDR50_MAX_DTR;
  413. break;
  414. case UHS_SDR50_BUS_SPEED:
  415. timing = MMC_TIMING_UHS_SDR50;
  416. card->sw_caps.uhs_max_dtr = UHS_SDR50_MAX_DTR;
  417. break;
  418. case UHS_SDR25_BUS_SPEED:
  419. timing = MMC_TIMING_UHS_SDR25;
  420. card->sw_caps.uhs_max_dtr = UHS_SDR25_MAX_DTR;
  421. break;
  422. case UHS_SDR12_BUS_SPEED:
  423. timing = MMC_TIMING_UHS_SDR12;
  424. card->sw_caps.uhs_max_dtr = UHS_SDR12_MAX_DTR;
  425. break;
  426. default:
  427. return 0;
  428. }
  429. err = mmc_sd_switch(card, SD_SWITCH_SET, 0, card->sd_bus_speed, status);
  430. if (err)
  431. return err;
  432. if ((status[16] & 0xF) != card->sd_bus_speed)
  433. pr_warn("%s: Problem setting bus speed mode!\n",
  434. mmc_hostname(card->host));
  435. else {
  436. mmc_set_timing(card->host, timing);
  437. mmc_set_clock(card->host, card->sw_caps.uhs_max_dtr);
  438. }
  439. return 0;
  440. }
  441. /* Get host's max current setting at its current voltage */
  442. static u32 sd_get_host_max_current(struct mmc_host *host)
  443. {
  444. u32 voltage, max_current;
  445. voltage = 1 << host->ios.vdd;
  446. switch (voltage) {
  447. case MMC_VDD_165_195:
  448. max_current = host->max_current_180;
  449. break;
  450. case MMC_VDD_29_30:
  451. case MMC_VDD_30_31:
  452. max_current = host->max_current_300;
  453. break;
  454. case MMC_VDD_32_33:
  455. case MMC_VDD_33_34:
  456. max_current = host->max_current_330;
  457. break;
  458. default:
  459. max_current = 0;
  460. }
  461. return max_current;
  462. }
  463. static int sd_set_current_limit(struct mmc_card *card, u8 *status)
  464. {
  465. int current_limit = SD_SET_CURRENT_NO_CHANGE;
  466. int err;
  467. u32 max_current;
  468. /*
  469. * Current limit switch is only defined for SDR50, SDR104, and DDR50
  470. * bus speed modes. For other bus speed modes, we do not change the
  471. * current limit.
  472. */
  473. if ((card->sd_bus_speed != UHS_SDR50_BUS_SPEED) &&
  474. (card->sd_bus_speed != UHS_SDR104_BUS_SPEED) &&
  475. (card->sd_bus_speed != UHS_DDR50_BUS_SPEED))
  476. return 0;
  477. /*
  478. * Host has different current capabilities when operating at
  479. * different voltages, so find out its max current first.
  480. */
  481. max_current = sd_get_host_max_current(card->host);
  482. /*
  483. * We only check host's capability here, if we set a limit that is
  484. * higher than the card's maximum current, the card will be using its
  485. * maximum current, e.g. if the card's maximum current is 300ma, and
  486. * when we set current limit to 200ma, the card will draw 200ma, and
  487. * when we set current limit to 400/600/800ma, the card will draw its
  488. * maximum 300ma from the host.
  489. *
  490. * The above is incorrect: if we try to set a current limit that is
  491. * not supported by the card, the card can rightfully error out the
  492. * attempt, and remain at the default current limit. This results
  493. * in a 300mA card being limited to 200mA even though the host
  494. * supports 800mA. Failures seen with SanDisk 8GB UHS cards with
  495. * an iMX6 host. --rmk
  496. */
  497. if (max_current >= 800 &&
  498. card->sw_caps.sd3_curr_limit & SD_MAX_CURRENT_800)
  499. current_limit = SD_SET_CURRENT_LIMIT_800;
  500. else if (max_current >= 600 &&
  501. card->sw_caps.sd3_curr_limit & SD_MAX_CURRENT_600)
  502. current_limit = SD_SET_CURRENT_LIMIT_600;
  503. else if (max_current >= 400 &&
  504. card->sw_caps.sd3_curr_limit & SD_MAX_CURRENT_400)
  505. current_limit = SD_SET_CURRENT_LIMIT_400;
  506. else if (max_current >= 200 &&
  507. card->sw_caps.sd3_curr_limit & SD_MAX_CURRENT_200)
  508. current_limit = SD_SET_CURRENT_LIMIT_200;
  509. if (current_limit != SD_SET_CURRENT_NO_CHANGE) {
  510. err = mmc_sd_switch(card, SD_SWITCH_SET, 3,
  511. current_limit, status);
  512. if (err)
  513. return err;
  514. if (((status[15] >> 4) & 0x0F) != current_limit)
  515. pr_warn("%s: Problem setting current limit!\n",
  516. mmc_hostname(card->host));
  517. }
  518. return 0;
  519. }
  520. /*
  521. * UHS-I specific initialization procedure
  522. */
  523. static int mmc_sd_init_uhs_card(struct mmc_card *card)
  524. {
  525. int err;
  526. u8 *status;
  527. if (!(card->csd.cmdclass & CCC_SWITCH))
  528. return 0;
  529. status = kmalloc(64, GFP_KERNEL);
  530. if (!status)
  531. return -ENOMEM;
  532. /* Set 4-bit bus width */
  533. err = mmc_app_set_bus_width(card, MMC_BUS_WIDTH_4);
  534. if (err)
  535. goto out;
  536. mmc_set_bus_width(card->host, MMC_BUS_WIDTH_4);
  537. /*
  538. * Select the bus speed mode depending on host
  539. * and card capability.
  540. */
  541. sd_update_bus_speed_mode(card);
  542. /* Set the driver strength for the card */
  543. err = sd_select_driver_type(card, status);
  544. if (err)
  545. goto out;
  546. /* Set current limit for the card */
  547. err = sd_set_current_limit(card, status);
  548. if (err)
  549. goto out;
  550. /* Set bus speed mode of the card */
  551. err = sd_set_bus_speed_mode(card, status);
  552. if (err)
  553. goto out;
  554. /*
  555. * SPI mode doesn't define CMD19 and tuning is only valid for SDR50 and
  556. * SDR104 mode SD-cards. Note that tuning is mandatory for SDR104.
  557. */
  558. if (!mmc_host_is_spi(card->host) &&
  559. (card->host->ios.timing == MMC_TIMING_UHS_SDR50 ||
  560. card->host->ios.timing == MMC_TIMING_UHS_DDR50 ||
  561. card->host->ios.timing == MMC_TIMING_UHS_SDR104)) {
  562. err = mmc_execute_tuning(card);
  563. /*
  564. * As SD Specifications Part1 Physical Layer Specification
  565. * Version 3.01 says, CMD19 tuning is available for unlocked
  566. * cards in transfer state of 1.8V signaling mode. The small
  567. * difference between v3.00 and 3.01 spec means that CMD19
  568. * tuning is also available for DDR50 mode.
  569. */
  570. if (err && card->host->ios.timing == MMC_TIMING_UHS_DDR50) {
  571. pr_warn("%s: ddr50 tuning failed\n",
  572. mmc_hostname(card->host));
  573. err = 0;
  574. }
  575. }
  576. out:
  577. kfree(status);
  578. return err;
  579. }
  580. MMC_DEV_ATTR(cid, "%08x%08x%08x%08x\n", card->raw_cid[0], card->raw_cid[1],
  581. card->raw_cid[2], card->raw_cid[3]);
  582. MMC_DEV_ATTR(csd, "%08x%08x%08x%08x\n", card->raw_csd[0], card->raw_csd[1],
  583. card->raw_csd[2], card->raw_csd[3]);
  584. MMC_DEV_ATTR(scr, "%08x%08x\n", card->raw_scr[0], card->raw_scr[1]);
  585. MMC_DEV_ATTR(ssr,
  586. "%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x\n",
  587. card->raw_ssr[0], card->raw_ssr[1], card->raw_ssr[2],
  588. card->raw_ssr[3], card->raw_ssr[4], card->raw_ssr[5],
  589. card->raw_ssr[6], card->raw_ssr[7], card->raw_ssr[8],
  590. card->raw_ssr[9], card->raw_ssr[10], card->raw_ssr[11],
  591. card->raw_ssr[12], card->raw_ssr[13], card->raw_ssr[14],
  592. card->raw_ssr[15]);
  593. MMC_DEV_ATTR(date, "%02d/%04d\n", card->cid.month, card->cid.year);
  594. MMC_DEV_ATTR(erase_size, "%u\n", card->erase_size << 9);
  595. MMC_DEV_ATTR(preferred_erase_size, "%u\n", card->pref_erase << 9);
  596. MMC_DEV_ATTR(fwrev, "0x%x\n", card->cid.fwrev);
  597. MMC_DEV_ATTR(hwrev, "0x%x\n", card->cid.hwrev);
  598. MMC_DEV_ATTR(manfid, "0x%06x\n", card->cid.manfid);
  599. MMC_DEV_ATTR(name, "%s\n", card->cid.prod_name);
  600. MMC_DEV_ATTR(oemid, "0x%04x\n", card->cid.oemid);
  601. MMC_DEV_ATTR(serial, "0x%08x\n", card->cid.serial);
  602. MMC_DEV_ATTR(ocr, "0x%08x\n", card->ocr);
  603. MMC_DEV_ATTR(rca, "0x%04x\n", card->rca);
  604. static ssize_t mmc_dsr_show(struct device *dev, struct device_attribute *attr,
  605. char *buf)
  606. {
  607. struct mmc_card *card = mmc_dev_to_card(dev);
  608. struct mmc_host *host = card->host;
  609. if (card->csd.dsr_imp && host->dsr_req)
  610. return sysfs_emit(buf, "0x%x\n", host->dsr);
  611. /* return default DSR value */
  612. return sysfs_emit(buf, "0x%x\n", 0x404);
  613. }
  614. static DEVICE_ATTR(dsr, S_IRUGO, mmc_dsr_show, NULL);
  615. MMC_DEV_ATTR(vendor, "0x%04x\n", card->cis.vendor);
  616. MMC_DEV_ATTR(device, "0x%04x\n", card->cis.device);
  617. MMC_DEV_ATTR(revision, "%u.%u\n", card->major_rev, card->minor_rev);
  618. #define sdio_info_attr(num) \
  619. static ssize_t info##num##_show(struct device *dev, struct device_attribute *attr, char *buf) \
  620. { \
  621. struct mmc_card *card = mmc_dev_to_card(dev); \
  622. \
  623. if (num > card->num_info) \
  624. return -ENODATA; \
  625. if (!card->info[num - 1][0]) \
  626. return 0; \
  627. return sysfs_emit(buf, "%s\n", card->info[num - 1]); \
  628. } \
  629. static DEVICE_ATTR_RO(info##num)
  630. sdio_info_attr(1);
  631. sdio_info_attr(2);
  632. sdio_info_attr(3);
  633. sdio_info_attr(4);
  634. static struct attribute *sd_std_attrs[] = {
  635. &dev_attr_vendor.attr,
  636. &dev_attr_device.attr,
  637. &dev_attr_revision.attr,
  638. &dev_attr_info1.attr,
  639. &dev_attr_info2.attr,
  640. &dev_attr_info3.attr,
  641. &dev_attr_info4.attr,
  642. &dev_attr_cid.attr,
  643. &dev_attr_csd.attr,
  644. &dev_attr_scr.attr,
  645. &dev_attr_ssr.attr,
  646. &dev_attr_date.attr,
  647. &dev_attr_erase_size.attr,
  648. &dev_attr_preferred_erase_size.attr,
  649. &dev_attr_fwrev.attr,
  650. &dev_attr_hwrev.attr,
  651. &dev_attr_manfid.attr,
  652. &dev_attr_name.attr,
  653. &dev_attr_oemid.attr,
  654. &dev_attr_serial.attr,
  655. &dev_attr_ocr.attr,
  656. &dev_attr_rca.attr,
  657. &dev_attr_dsr.attr,
  658. NULL,
  659. };
  660. static umode_t sd_std_is_visible(struct kobject *kobj, struct attribute *attr,
  661. int index)
  662. {
  663. struct device *dev = kobj_to_dev(kobj);
  664. struct mmc_card *card = mmc_dev_to_card(dev);
  665. /* CIS vendor and device ids, revision and info string are available only for Combo cards */
  666. if ((attr == &dev_attr_vendor.attr ||
  667. attr == &dev_attr_device.attr ||
  668. attr == &dev_attr_revision.attr ||
  669. attr == &dev_attr_info1.attr ||
  670. attr == &dev_attr_info2.attr ||
  671. attr == &dev_attr_info3.attr ||
  672. attr == &dev_attr_info4.attr
  673. ) &&!mmc_card_sd_combo(card))
  674. return 0;
  675. return attr->mode;
  676. }
  677. static const struct attribute_group sd_std_group = {
  678. .attrs = sd_std_attrs,
  679. .is_visible = sd_std_is_visible,
  680. };
  681. __ATTRIBUTE_GROUPS(sd_std);
  682. const struct device_type sd_type = {
  683. .groups = sd_std_groups,
  684. };
  685. /*
  686. * Fetch CID from card.
  687. */
  688. int mmc_sd_get_cid(struct mmc_host *host, u32 ocr, u32 *cid, u32 *rocr)
  689. {
  690. int err;
  691. u32 max_current;
  692. int retries = 10;
  693. u32 pocr = ocr;
  694. try_again:
  695. if (!retries) {
  696. ocr &= ~SD_OCR_S18R;
  697. pr_warn("%s: Skipping voltage switch\n", mmc_hostname(host));
  698. }
  699. /*
  700. * Since we're changing the OCR value, we seem to
  701. * need to tell some cards to go back to the idle
  702. * state. We wait 1ms to give cards time to
  703. * respond.
  704. */
  705. mmc_go_idle(host);
  706. /*
  707. * If SD_SEND_IF_COND indicates an SD 2.0
  708. * compliant card and we should set bit 30
  709. * of the ocr to indicate that we can handle
  710. * block-addressed SDHC cards.
  711. */
  712. err = mmc_send_if_cond(host, ocr);
  713. if (!err)
  714. ocr |= SD_OCR_CCS;
  715. /*
  716. * If the host supports one of UHS-I modes, request the card
  717. * to switch to 1.8V signaling level. If the card has failed
  718. * repeatedly to switch however, skip this.
  719. */
  720. if (retries && mmc_host_uhs(host))
  721. ocr |= SD_OCR_S18R;
  722. /*
  723. * If the host can supply more than 150mA at current voltage,
  724. * XPC should be set to 1.
  725. */
  726. max_current = sd_get_host_max_current(host);
  727. if (max_current > 150)
  728. ocr |= SD_OCR_XPC;
  729. err = mmc_send_app_op_cond(host, ocr, rocr);
  730. if (err)
  731. return err;
  732. /*
  733. * In case the S18A bit is set in the response, let's start the signal
  734. * voltage switch procedure. SPI mode doesn't support CMD11.
  735. * Note that, according to the spec, the S18A bit is not valid unless
  736. * the CCS bit is set as well. We deliberately deviate from the spec in
  737. * regards to this, which allows UHS-I to be supported for SDSC cards.
  738. */
  739. if (!mmc_host_is_spi(host) && (ocr & SD_OCR_S18R) &&
  740. rocr && (*rocr & SD_ROCR_S18A)) {
  741. err = mmc_set_uhs_voltage(host, pocr);
  742. if (err == -EAGAIN) {
  743. retries--;
  744. goto try_again;
  745. } else if (err) {
  746. retries = 0;
  747. goto try_again;
  748. }
  749. }
  750. err = mmc_send_cid(host, cid);
  751. return err;
  752. }
  753. int mmc_sd_get_csd(struct mmc_card *card, bool is_sduc)
  754. {
  755. int err;
  756. /*
  757. * Fetch CSD from card.
  758. */
  759. err = mmc_send_csd(card, card->raw_csd);
  760. if (err)
  761. return err;
  762. err = mmc_decode_csd(card, is_sduc);
  763. if (err)
  764. return err;
  765. return 0;
  766. }
  767. static int mmc_sd_get_ro(struct mmc_host *host)
  768. {
  769. int ro;
  770. /*
  771. * Some systems don't feature a write-protect pin and don't need one.
  772. * E.g. because they only have micro-SD card slot. For those systems
  773. * assume that the SD card is always read-write.
  774. */
  775. if (host->caps2 & MMC_CAP2_NO_WRITE_PROTECT)
  776. return 0;
  777. if (!host->ops->get_ro)
  778. return -1;
  779. ro = host->ops->get_ro(host);
  780. return ro;
  781. }
  782. int mmc_sd_setup_card(struct mmc_host *host, struct mmc_card *card,
  783. bool reinit)
  784. {
  785. int err;
  786. if (!reinit) {
  787. /*
  788. * Fetch SCR from card.
  789. */
  790. err = mmc_app_send_scr(card);
  791. if (err)
  792. return err;
  793. err = mmc_decode_scr(card);
  794. if (err)
  795. return err;
  796. /*
  797. * Fetch and process SD Status register.
  798. */
  799. err = mmc_read_ssr(card);
  800. if (err)
  801. return err;
  802. /* Erase init depends on CSD and SSR */
  803. mmc_init_erase(card);
  804. }
  805. /*
  806. * Fetch switch information from card. Note, sd3_bus_mode can change if
  807. * voltage switch outcome changes, so do this always.
  808. */
  809. err = mmc_read_switch(card);
  810. if (err)
  811. return err;
  812. /*
  813. * For SPI, enable CRC as appropriate.
  814. * This CRC enable is located AFTER the reading of the
  815. * card registers because some SDHC cards are not able
  816. * to provide valid CRCs for non-512-byte blocks.
  817. */
  818. if (mmc_host_is_spi(host)) {
  819. err = mmc_spi_set_crc(host, use_spi_crc);
  820. if (err)
  821. return err;
  822. }
  823. /*
  824. * Check if read-only switch is active.
  825. */
  826. if (!reinit) {
  827. int ro = mmc_sd_get_ro(host);
  828. if (ro < 0) {
  829. pr_warn("%s: host does not support reading read-only switch, assuming write-enable\n",
  830. mmc_hostname(host));
  831. } else if (ro > 0) {
  832. mmc_card_set_readonly(card);
  833. }
  834. }
  835. return 0;
  836. }
  837. unsigned mmc_sd_get_max_clock(struct mmc_card *card)
  838. {
  839. unsigned max_dtr = (unsigned int)-1;
  840. if (mmc_card_hs(card)) {
  841. if (max_dtr > card->sw_caps.hs_max_dtr)
  842. max_dtr = card->sw_caps.hs_max_dtr;
  843. } else if (max_dtr > card->csd.max_dtr) {
  844. max_dtr = card->csd.max_dtr;
  845. }
  846. return max_dtr;
  847. }
  848. static bool mmc_sd_card_using_v18(struct mmc_card *card)
  849. {
  850. /*
  851. * According to the SD spec., the Bus Speed Mode (function group 1) bits
  852. * 2 to 4 are zero if the card is initialized at 3.3V signal level. Thus
  853. * they can be used to determine if the card has already switched to
  854. * 1.8V signaling.
  855. */
  856. return card->sw_caps.sd3_bus_mode &
  857. (SD_MODE_UHS_SDR50 | SD_MODE_UHS_SDR104 | SD_MODE_UHS_DDR50);
  858. }
  859. static int sd_write_ext_reg(struct mmc_card *card, u8 fno, u8 page, u16 offset,
  860. u8 reg_data)
  861. {
  862. struct mmc_host *host = card->host;
  863. struct mmc_request mrq = {};
  864. struct mmc_command cmd = {};
  865. struct mmc_data data = {};
  866. struct scatterlist sg;
  867. u8 *reg_buf;
  868. reg_buf = kzalloc(512, GFP_KERNEL);
  869. if (!reg_buf)
  870. return -ENOMEM;
  871. mrq.cmd = &cmd;
  872. mrq.data = &data;
  873. /*
  874. * Arguments of CMD49:
  875. * [31:31] MIO (0 = memory).
  876. * [30:27] FNO (function number).
  877. * [26:26] MW - mask write mode (0 = disable).
  878. * [25:18] page number.
  879. * [17:9] offset address.
  880. * [8:0] length (0 = 1 byte).
  881. */
  882. cmd.arg = fno << 27 | page << 18 | offset << 9;
  883. /* The first byte in the buffer is the data to be written. */
  884. reg_buf[0] = reg_data;
  885. data.flags = MMC_DATA_WRITE;
  886. data.blksz = 512;
  887. data.blocks = 1;
  888. data.sg = &sg;
  889. data.sg_len = 1;
  890. sg_init_one(&sg, reg_buf, 512);
  891. cmd.opcode = SD_WRITE_EXTR_SINGLE;
  892. cmd.flags = MMC_RSP_R1 | MMC_CMD_ADTC;
  893. mmc_set_data_timeout(&data, card);
  894. mmc_wait_for_req(host, &mrq);
  895. kfree(reg_buf);
  896. /*
  897. * Note that, the SD card is allowed to signal busy on DAT0 up to 1s
  898. * after the CMD49. Although, let's leave this to be managed by the
  899. * caller.
  900. */
  901. if (cmd.error)
  902. return cmd.error;
  903. if (data.error)
  904. return data.error;
  905. return 0;
  906. }
  907. static int sd_read_ext_reg(struct mmc_card *card, u8 fno, u8 page,
  908. u16 offset, u16 len, u8 *reg_buf)
  909. {
  910. u32 cmd_args;
  911. /*
  912. * Command arguments of CMD48:
  913. * [31:31] MIO (0 = memory).
  914. * [30:27] FNO (function number).
  915. * [26:26] reserved (0).
  916. * [25:18] page number.
  917. * [17:9] offset address.
  918. * [8:0] length (0 = 1 byte, 1ff = 512 bytes).
  919. */
  920. cmd_args = fno << 27 | page << 18 | offset << 9 | (len -1);
  921. return mmc_send_adtc_data(card, card->host, SD_READ_EXTR_SINGLE,
  922. cmd_args, reg_buf, 512);
  923. }
  924. static int sd_parse_ext_reg_power(struct mmc_card *card, u8 fno, u8 page,
  925. u16 offset)
  926. {
  927. int err;
  928. u8 *reg_buf;
  929. reg_buf = kzalloc(512, GFP_KERNEL);
  930. if (!reg_buf)
  931. return -ENOMEM;
  932. /* Read the extension register for power management function. */
  933. err = sd_read_ext_reg(card, fno, page, offset, 512, reg_buf);
  934. if (err) {
  935. pr_warn("%s: error %d reading PM func of ext reg\n",
  936. mmc_hostname(card->host), err);
  937. goto out;
  938. }
  939. /* PM revision consists of 4 bits. */
  940. card->ext_power.rev = reg_buf[0] & 0xf;
  941. /* Power Off Notification support at bit 4. */
  942. if ((reg_buf[1] & BIT(4)) && !mmc_card_broken_sd_poweroff_notify(card))
  943. card->ext_power.feature_support |= SD_EXT_POWER_OFF_NOTIFY;
  944. /* Power Sustenance support at bit 5. */
  945. if (reg_buf[1] & BIT(5))
  946. card->ext_power.feature_support |= SD_EXT_POWER_SUSTENANCE;
  947. /* Power Down Mode support at bit 6. */
  948. if (reg_buf[1] & BIT(6))
  949. card->ext_power.feature_support |= SD_EXT_POWER_DOWN_MODE;
  950. card->ext_power.fno = fno;
  951. card->ext_power.page = page;
  952. card->ext_power.offset = offset;
  953. out:
  954. kfree(reg_buf);
  955. return err;
  956. }
  957. static int sd_parse_ext_reg_perf(struct mmc_card *card, u8 fno, u8 page,
  958. u16 offset)
  959. {
  960. int err;
  961. u8 *reg_buf;
  962. reg_buf = kzalloc(512, GFP_KERNEL);
  963. if (!reg_buf)
  964. return -ENOMEM;
  965. err = sd_read_ext_reg(card, fno, page, offset, 512, reg_buf);
  966. if (err) {
  967. pr_warn("%s: error %d reading PERF func of ext reg\n",
  968. mmc_hostname(card->host), err);
  969. goto out;
  970. }
  971. /* PERF revision. */
  972. card->ext_perf.rev = reg_buf[0];
  973. /* FX_EVENT support at bit 0. */
  974. if (reg_buf[1] & BIT(0))
  975. card->ext_perf.feature_support |= SD_EXT_PERF_FX_EVENT;
  976. /* Card initiated self-maintenance support at bit 0. */
  977. if (reg_buf[2] & BIT(0))
  978. card->ext_perf.feature_support |= SD_EXT_PERF_CARD_MAINT;
  979. /* Host initiated self-maintenance support at bit 1. */
  980. if (reg_buf[2] & BIT(1))
  981. card->ext_perf.feature_support |= SD_EXT_PERF_HOST_MAINT;
  982. /* Cache support at bit 0. */
  983. if ((reg_buf[4] & BIT(0)) && !mmc_card_broken_sd_cache(card))
  984. card->ext_perf.feature_support |= SD_EXT_PERF_CACHE;
  985. /* Command queue support indicated via queue depth bits (0 to 4). */
  986. if (reg_buf[6] & 0x1f)
  987. card->ext_perf.feature_support |= SD_EXT_PERF_CMD_QUEUE;
  988. card->ext_perf.fno = fno;
  989. card->ext_perf.page = page;
  990. card->ext_perf.offset = offset;
  991. out:
  992. kfree(reg_buf);
  993. return err;
  994. }
  995. static int sd_parse_ext_reg(struct mmc_card *card, u8 *gen_info_buf,
  996. u16 *next_ext_addr)
  997. {
  998. u8 num_regs, fno, page;
  999. u16 sfc, offset, ext = *next_ext_addr;
  1000. u32 reg_addr;
  1001. /*
  1002. * Parse only one register set per extension, as that is sufficient to
  1003. * support the standard functions. This means another 48 bytes in the
  1004. * buffer must be available.
  1005. */
  1006. if (ext + 48 > 512)
  1007. return -EFAULT;
  1008. /* Standard Function Code */
  1009. memcpy(&sfc, &gen_info_buf[ext], 2);
  1010. /* Address to the next extension. */
  1011. memcpy(next_ext_addr, &gen_info_buf[ext + 40], 2);
  1012. /* Number of registers for this extension. */
  1013. num_regs = gen_info_buf[ext + 42];
  1014. /* We support only one register per extension. */
  1015. if (num_regs != 1)
  1016. return 0;
  1017. /* Extension register address. */
  1018. memcpy(&reg_addr, &gen_info_buf[ext + 44], 4);
  1019. /* 9 bits (0 to 8) contains the offset address. */
  1020. offset = reg_addr & 0x1ff;
  1021. /* 8 bits (9 to 16) contains the page number. */
  1022. page = reg_addr >> 9 & 0xff ;
  1023. /* 4 bits (18 to 21) contains the function number. */
  1024. fno = reg_addr >> 18 & 0xf;
  1025. /* Standard Function Code for power management. */
  1026. if (sfc == 0x1)
  1027. return sd_parse_ext_reg_power(card, fno, page, offset);
  1028. /* Standard Function Code for performance enhancement. */
  1029. if (sfc == 0x2)
  1030. return sd_parse_ext_reg_perf(card, fno, page, offset);
  1031. return 0;
  1032. }
  1033. static int sd_read_ext_regs(struct mmc_card *card)
  1034. {
  1035. int err, i;
  1036. u8 num_ext, *gen_info_buf;
  1037. u16 rev, len, next_ext_addr;
  1038. if (mmc_host_is_spi(card->host))
  1039. return 0;
  1040. if (!(card->scr.cmds & SD_SCR_CMD48_SUPPORT))
  1041. return 0;
  1042. gen_info_buf = kzalloc(512, GFP_KERNEL);
  1043. if (!gen_info_buf)
  1044. return -ENOMEM;
  1045. /*
  1046. * Read 512 bytes of general info, which is found at function number 0,
  1047. * at page 0 and with no offset.
  1048. */
  1049. err = sd_read_ext_reg(card, 0, 0, 0, 512, gen_info_buf);
  1050. if (err) {
  1051. pr_err("%s: error %d reading general info of SD ext reg\n",
  1052. mmc_hostname(card->host), err);
  1053. goto out;
  1054. }
  1055. /* General info structure revision. */
  1056. memcpy(&rev, &gen_info_buf[0], 2);
  1057. /* Length of general info in bytes. */
  1058. memcpy(&len, &gen_info_buf[2], 2);
  1059. /* Number of extensions to be find. */
  1060. num_ext = gen_info_buf[4];
  1061. /*
  1062. * We only support revision 0 and limit it to 512 bytes for simplicity.
  1063. * No matter what, let's return zero to allow us to continue using the
  1064. * card, even if we can't support the features from the SD function
  1065. * extensions registers.
  1066. */
  1067. if (rev != 0 || len > 512) {
  1068. pr_warn("%s: non-supported SD ext reg layout\n",
  1069. mmc_hostname(card->host));
  1070. goto out;
  1071. }
  1072. /*
  1073. * Parse the extension registers. The first extension should start
  1074. * immediately after the general info header (16 bytes).
  1075. */
  1076. next_ext_addr = 16;
  1077. for (i = 0; i < num_ext; i++) {
  1078. err = sd_parse_ext_reg(card, gen_info_buf, &next_ext_addr);
  1079. if (err) {
  1080. pr_err("%s: error %d parsing SD ext reg\n",
  1081. mmc_hostname(card->host), err);
  1082. goto out;
  1083. }
  1084. }
  1085. out:
  1086. kfree(gen_info_buf);
  1087. return err;
  1088. }
  1089. static bool sd_cache_enabled(struct mmc_host *host)
  1090. {
  1091. return host->card->ext_perf.feature_enabled & SD_EXT_PERF_CACHE;
  1092. }
  1093. static int sd_flush_cache(struct mmc_host *host)
  1094. {
  1095. struct mmc_card *card = host->card;
  1096. u8 *reg_buf, fno, page;
  1097. u16 offset;
  1098. int err;
  1099. if (!sd_cache_enabled(host))
  1100. return 0;
  1101. reg_buf = kzalloc(512, GFP_KERNEL);
  1102. if (!reg_buf)
  1103. return -ENOMEM;
  1104. /*
  1105. * Set Flush Cache at bit 0 in the performance enhancement register at
  1106. * 261 bytes offset.
  1107. */
  1108. fno = card->ext_perf.fno;
  1109. page = card->ext_perf.page;
  1110. offset = card->ext_perf.offset + 261;
  1111. err = sd_write_ext_reg(card, fno, page, offset, BIT(0));
  1112. if (err) {
  1113. pr_warn("%s: error %d writing Cache Flush bit\n",
  1114. mmc_hostname(host), err);
  1115. goto out;
  1116. }
  1117. err = mmc_poll_for_busy(card, SD_WRITE_EXTR_SINGLE_TIMEOUT_MS, false,
  1118. MMC_BUSY_EXTR_SINGLE);
  1119. if (err)
  1120. goto out;
  1121. /*
  1122. * Read the Flush Cache bit. The card shall reset it, to confirm that
  1123. * it's has completed the flushing of the cache.
  1124. */
  1125. err = sd_read_ext_reg(card, fno, page, offset, 1, reg_buf);
  1126. if (err) {
  1127. pr_warn("%s: error %d reading Cache Flush bit\n",
  1128. mmc_hostname(host), err);
  1129. goto out;
  1130. }
  1131. if (reg_buf[0] & BIT(0))
  1132. err = -ETIMEDOUT;
  1133. out:
  1134. kfree(reg_buf);
  1135. return err;
  1136. }
  1137. static int sd_enable_cache(struct mmc_card *card)
  1138. {
  1139. u8 *reg_buf;
  1140. int err;
  1141. card->ext_perf.feature_enabled &= ~SD_EXT_PERF_CACHE;
  1142. reg_buf = kzalloc(512, GFP_KERNEL);
  1143. if (!reg_buf)
  1144. return -ENOMEM;
  1145. /*
  1146. * Set Cache Enable at bit 0 in the performance enhancement register at
  1147. * 260 bytes offset.
  1148. */
  1149. err = sd_write_ext_reg(card, card->ext_perf.fno, card->ext_perf.page,
  1150. card->ext_perf.offset + 260, BIT(0));
  1151. if (err) {
  1152. pr_warn("%s: error %d writing Cache Enable bit\n",
  1153. mmc_hostname(card->host), err);
  1154. goto out;
  1155. }
  1156. err = mmc_poll_for_busy(card, SD_WRITE_EXTR_SINGLE_TIMEOUT_MS, false,
  1157. MMC_BUSY_EXTR_SINGLE);
  1158. if (!err)
  1159. card->ext_perf.feature_enabled |= SD_EXT_PERF_CACHE;
  1160. out:
  1161. kfree(reg_buf);
  1162. return err;
  1163. }
  1164. /*
  1165. * Handle the detection and initialisation of a card.
  1166. *
  1167. * In the case of a resume, "oldcard" will contain the card
  1168. * we're trying to reinitialise.
  1169. */
  1170. static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
  1171. struct mmc_card *oldcard)
  1172. {
  1173. struct mmc_card *card;
  1174. int err;
  1175. u32 cid[4];
  1176. u32 rocr = 0;
  1177. bool v18_fixup_failed = false;
  1178. WARN_ON(!host->claimed);
  1179. retry:
  1180. err = mmc_sd_get_cid(host, ocr, cid, &rocr);
  1181. if (err)
  1182. return err;
  1183. if (oldcard) {
  1184. if (memcmp(cid, oldcard->raw_cid, sizeof(cid)) != 0) {
  1185. pr_debug("%s: Perhaps the card was replaced\n",
  1186. mmc_hostname(host));
  1187. return -ENOENT;
  1188. }
  1189. card = oldcard;
  1190. } else {
  1191. /*
  1192. * Allocate card structure.
  1193. */
  1194. card = mmc_alloc_card(host, &sd_type);
  1195. if (IS_ERR(card))
  1196. return PTR_ERR(card);
  1197. card->ocr = ocr;
  1198. card->type = MMC_TYPE_SD;
  1199. memcpy(card->raw_cid, cid, sizeof(card->raw_cid));
  1200. }
  1201. /*
  1202. * Call the optional HC's init_card function to handle quirks.
  1203. */
  1204. if (host->ops->init_card)
  1205. host->ops->init_card(host, card);
  1206. /*
  1207. * For native busses: get card RCA and quit open drain mode.
  1208. */
  1209. if (!mmc_host_is_spi(host)) {
  1210. err = mmc_send_relative_addr(host, &card->rca);
  1211. if (err)
  1212. goto free_card;
  1213. }
  1214. if (!oldcard) {
  1215. err = mmc_sd_get_csd(card, false);
  1216. if (err)
  1217. goto free_card;
  1218. mmc_decode_cid(card);
  1219. }
  1220. /*
  1221. * handling only for cards supporting DSR and hosts requesting
  1222. * DSR configuration
  1223. */
  1224. if (card->csd.dsr_imp && host->dsr_req)
  1225. mmc_set_dsr(host);
  1226. /*
  1227. * Select card, as all following commands rely on that.
  1228. */
  1229. if (!mmc_host_is_spi(host)) {
  1230. err = mmc_select_card(card);
  1231. if (err)
  1232. goto free_card;
  1233. }
  1234. /* Apply quirks prior to card setup */
  1235. mmc_fixup_device(card, mmc_sd_fixups);
  1236. err = mmc_sd_setup_card(host, card, oldcard != NULL);
  1237. if (err)
  1238. goto free_card;
  1239. /*
  1240. * If the card has not been power cycled, it may still be using 1.8V
  1241. * signaling. Detect that situation and try to initialize a UHS-I (1.8V)
  1242. * transfer mode.
  1243. */
  1244. if (!v18_fixup_failed && !mmc_host_is_spi(host) && mmc_host_uhs(host) &&
  1245. mmc_sd_card_using_v18(card) &&
  1246. host->ios.signal_voltage != MMC_SIGNAL_VOLTAGE_180) {
  1247. if (mmc_host_set_uhs_voltage(host) ||
  1248. mmc_sd_init_uhs_card(card)) {
  1249. v18_fixup_failed = true;
  1250. mmc_power_cycle(host, ocr);
  1251. if (!oldcard)
  1252. mmc_remove_card(card);
  1253. goto retry;
  1254. }
  1255. goto cont;
  1256. }
  1257. /* Initialization sequence for UHS-I cards */
  1258. if (rocr & SD_ROCR_S18A && mmc_host_uhs(host)) {
  1259. err = mmc_sd_init_uhs_card(card);
  1260. if (err)
  1261. goto free_card;
  1262. } else {
  1263. /*
  1264. * Attempt to change to high-speed (if supported)
  1265. */
  1266. err = mmc_sd_switch_hs(card);
  1267. if (err > 0)
  1268. mmc_set_timing(card->host, MMC_TIMING_SD_HS);
  1269. else if (err)
  1270. goto free_card;
  1271. /*
  1272. * Set bus speed.
  1273. */
  1274. mmc_set_clock(host, mmc_sd_get_max_clock(card));
  1275. if (host->ios.timing == MMC_TIMING_SD_HS &&
  1276. host->ops->prepare_sd_hs_tuning) {
  1277. err = host->ops->prepare_sd_hs_tuning(host, card);
  1278. if (err)
  1279. goto free_card;
  1280. }
  1281. /*
  1282. * Switch to wider bus (if supported).
  1283. */
  1284. if ((host->caps & MMC_CAP_4_BIT_DATA) &&
  1285. (card->scr.bus_widths & SD_SCR_BUS_WIDTH_4)) {
  1286. err = mmc_app_set_bus_width(card, MMC_BUS_WIDTH_4);
  1287. if (err)
  1288. goto free_card;
  1289. mmc_set_bus_width(host, MMC_BUS_WIDTH_4);
  1290. }
  1291. if (host->ios.timing == MMC_TIMING_SD_HS &&
  1292. host->ops->execute_sd_hs_tuning) {
  1293. err = host->ops->execute_sd_hs_tuning(host, card);
  1294. if (err)
  1295. goto free_card;
  1296. }
  1297. }
  1298. cont:
  1299. if (!oldcard) {
  1300. /* Read/parse the extension registers. */
  1301. err = sd_read_ext_regs(card);
  1302. if (err)
  1303. goto free_card;
  1304. }
  1305. /* Enable internal SD cache if supported. */
  1306. if (card->ext_perf.feature_support & SD_EXT_PERF_CACHE) {
  1307. err = sd_enable_cache(card);
  1308. if (err)
  1309. goto free_card;
  1310. }
  1311. if (host->cqe_ops && !host->cqe_enabled) {
  1312. err = host->cqe_ops->cqe_enable(host, card);
  1313. if (!err) {
  1314. host->cqe_enabled = true;
  1315. host->hsq_enabled = true;
  1316. pr_info("%s: Host Software Queue enabled\n",
  1317. mmc_hostname(host));
  1318. }
  1319. }
  1320. if (host->caps2 & MMC_CAP2_AVOID_3_3V &&
  1321. host->ios.signal_voltage == MMC_SIGNAL_VOLTAGE_330) {
  1322. pr_err("%s: Host failed to negotiate down from 3.3V\n",
  1323. mmc_hostname(host));
  1324. err = -EINVAL;
  1325. goto free_card;
  1326. }
  1327. host->card = card;
  1328. return 0;
  1329. free_card:
  1330. if (!oldcard)
  1331. mmc_remove_card(card);
  1332. return err;
  1333. }
  1334. /*
  1335. * Host is being removed. Free up the current card.
  1336. */
  1337. static void mmc_sd_remove(struct mmc_host *host)
  1338. {
  1339. mmc_remove_card(host->card);
  1340. host->card = NULL;
  1341. }
  1342. /*
  1343. * Card detection - card is alive.
  1344. */
  1345. static int mmc_sd_alive(struct mmc_host *host)
  1346. {
  1347. return mmc_send_status(host->card, NULL);
  1348. }
  1349. /*
  1350. * Card detection callback from host.
  1351. */
  1352. static void mmc_sd_detect(struct mmc_host *host)
  1353. {
  1354. int err;
  1355. mmc_get_card(host->card, NULL);
  1356. /*
  1357. * Just check if our card has been removed.
  1358. */
  1359. err = _mmc_detect_card_removed(host);
  1360. mmc_put_card(host->card, NULL);
  1361. if (err) {
  1362. mmc_sd_remove(host);
  1363. mmc_claim_host(host);
  1364. mmc_detach_bus(host);
  1365. mmc_power_off(host);
  1366. mmc_release_host(host);
  1367. }
  1368. }
  1369. static int sd_can_poweroff_notify(struct mmc_card *card)
  1370. {
  1371. return card->ext_power.feature_support & SD_EXT_POWER_OFF_NOTIFY;
  1372. }
  1373. static int sd_busy_poweroff_notify_cb(void *cb_data, bool *busy)
  1374. {
  1375. struct sd_busy_data *data = cb_data;
  1376. struct mmc_card *card = data->card;
  1377. int err;
  1378. /*
  1379. * Read the status register for the power management function. It's at
  1380. * one byte offset and is one byte long. The Power Off Notification
  1381. * Ready is bit 0.
  1382. */
  1383. err = sd_read_ext_reg(card, card->ext_power.fno, card->ext_power.page,
  1384. card->ext_power.offset + 1, 1, data->reg_buf);
  1385. if (err) {
  1386. pr_warn("%s: error %d reading status reg of PM func\n",
  1387. mmc_hostname(card->host), err);
  1388. return err;
  1389. }
  1390. *busy = !(data->reg_buf[0] & BIT(0));
  1391. return 0;
  1392. }
  1393. static int sd_poweroff_notify(struct mmc_card *card)
  1394. {
  1395. struct sd_busy_data cb_data;
  1396. u8 *reg_buf;
  1397. int err;
  1398. reg_buf = kzalloc(512, GFP_KERNEL);
  1399. if (!reg_buf)
  1400. return -ENOMEM;
  1401. /*
  1402. * Set the Power Off Notification bit in the power management settings
  1403. * register at 2 bytes offset.
  1404. */
  1405. err = sd_write_ext_reg(card, card->ext_power.fno, card->ext_power.page,
  1406. card->ext_power.offset + 2, BIT(0));
  1407. if (err) {
  1408. pr_warn("%s: error %d writing Power Off Notify bit\n",
  1409. mmc_hostname(card->host), err);
  1410. goto out;
  1411. }
  1412. /* Find out when the command is completed. */
  1413. err = mmc_poll_for_busy(card, SD_WRITE_EXTR_SINGLE_TIMEOUT_MS, false,
  1414. MMC_BUSY_EXTR_SINGLE);
  1415. if (err)
  1416. goto out;
  1417. cb_data.card = card;
  1418. cb_data.reg_buf = reg_buf;
  1419. err = __mmc_poll_for_busy(card->host, 0, SD_POWEROFF_NOTIFY_TIMEOUT_MS,
  1420. &sd_busy_poweroff_notify_cb, &cb_data);
  1421. out:
  1422. kfree(reg_buf);
  1423. return err;
  1424. }
  1425. static int _mmc_sd_suspend(struct mmc_host *host)
  1426. {
  1427. struct mmc_card *card = host->card;
  1428. int err = 0;
  1429. mmc_claim_host(host);
  1430. if (mmc_card_suspended(card))
  1431. goto out;
  1432. if (sd_can_poweroff_notify(card))
  1433. err = sd_poweroff_notify(card);
  1434. else if (!mmc_host_is_spi(host))
  1435. err = mmc_deselect_cards(host);
  1436. if (!err) {
  1437. mmc_power_off(host);
  1438. mmc_card_set_suspended(card);
  1439. }
  1440. out:
  1441. mmc_release_host(host);
  1442. return err;
  1443. }
  1444. /*
  1445. * Callback for suspend
  1446. */
  1447. static int mmc_sd_suspend(struct mmc_host *host)
  1448. {
  1449. int err;
  1450. err = _mmc_sd_suspend(host);
  1451. if (!err) {
  1452. pm_runtime_disable(&host->card->dev);
  1453. pm_runtime_set_suspended(&host->card->dev);
  1454. }
  1455. return err;
  1456. }
  1457. /*
  1458. * This function tries to determine if the same card is still present
  1459. * and, if so, restore all state to it.
  1460. */
  1461. static int _mmc_sd_resume(struct mmc_host *host)
  1462. {
  1463. int err = 0;
  1464. mmc_claim_host(host);
  1465. if (!mmc_card_suspended(host->card))
  1466. goto out;
  1467. mmc_power_up(host, host->card->ocr);
  1468. err = mmc_sd_init_card(host, host->card->ocr, host->card);
  1469. mmc_card_clr_suspended(host->card);
  1470. out:
  1471. mmc_release_host(host);
  1472. return err;
  1473. }
  1474. /*
  1475. * Callback for resume
  1476. */
  1477. static int mmc_sd_resume(struct mmc_host *host)
  1478. {
  1479. pm_runtime_enable(&host->card->dev);
  1480. return 0;
  1481. }
  1482. /*
  1483. * Callback for runtime_suspend.
  1484. */
  1485. static int mmc_sd_runtime_suspend(struct mmc_host *host)
  1486. {
  1487. int err;
  1488. if (!(host->caps & MMC_CAP_AGGRESSIVE_PM))
  1489. return 0;
  1490. err = _mmc_sd_suspend(host);
  1491. if (err)
  1492. pr_err("%s: error %d doing aggressive suspend\n",
  1493. mmc_hostname(host), err);
  1494. return err;
  1495. }
  1496. /*
  1497. * Callback for runtime_resume.
  1498. */
  1499. static int mmc_sd_runtime_resume(struct mmc_host *host)
  1500. {
  1501. int err;
  1502. err = _mmc_sd_resume(host);
  1503. if (err && err != -ENOMEDIUM)
  1504. pr_err("%s: error %d doing runtime resume\n",
  1505. mmc_hostname(host), err);
  1506. return 0;
  1507. }
  1508. static int mmc_sd_hw_reset(struct mmc_host *host)
  1509. {
  1510. mmc_power_cycle(host, host->card->ocr);
  1511. return mmc_sd_init_card(host, host->card->ocr, host->card);
  1512. }
  1513. static const struct mmc_bus_ops mmc_sd_ops = {
  1514. .remove = mmc_sd_remove,
  1515. .detect = mmc_sd_detect,
  1516. .runtime_suspend = mmc_sd_runtime_suspend,
  1517. .runtime_resume = mmc_sd_runtime_resume,
  1518. .suspend = mmc_sd_suspend,
  1519. .resume = mmc_sd_resume,
  1520. .alive = mmc_sd_alive,
  1521. .shutdown = mmc_sd_suspend,
  1522. .hw_reset = mmc_sd_hw_reset,
  1523. .cache_enabled = sd_cache_enabled,
  1524. .flush_cache = sd_flush_cache,
  1525. };
  1526. /*
  1527. * Starting point for SD card init.
  1528. */
  1529. int mmc_attach_sd(struct mmc_host *host)
  1530. {
  1531. int err;
  1532. u32 ocr, rocr;
  1533. WARN_ON(!host->claimed);
  1534. err = mmc_send_app_op_cond(host, 0, &ocr);
  1535. if (err)
  1536. return err;
  1537. mmc_attach_bus(host, &mmc_sd_ops);
  1538. if (host->ocr_avail_sd)
  1539. host->ocr_avail = host->ocr_avail_sd;
  1540. /*
  1541. * We need to get OCR a different way for SPI.
  1542. */
  1543. if (mmc_host_is_spi(host)) {
  1544. mmc_go_idle(host);
  1545. err = mmc_spi_read_ocr(host, 0, &ocr);
  1546. if (err)
  1547. goto err;
  1548. }
  1549. /*
  1550. * Some SD cards claims an out of spec VDD voltage range. Let's treat
  1551. * these bits as being in-valid and especially also bit7.
  1552. */
  1553. ocr &= ~0x7FFF;
  1554. rocr = mmc_select_voltage(host, ocr);
  1555. /*
  1556. * Can we support the voltage(s) of the card(s)?
  1557. */
  1558. if (!rocr) {
  1559. err = -EINVAL;
  1560. goto err;
  1561. }
  1562. /*
  1563. * Detect and init the card.
  1564. */
  1565. err = mmc_sd_init_card(host, rocr, NULL);
  1566. if (err)
  1567. goto err;
  1568. mmc_release_host(host);
  1569. err = mmc_add_card(host->card);
  1570. if (err)
  1571. goto remove_card;
  1572. mmc_claim_host(host);
  1573. return 0;
  1574. remove_card:
  1575. mmc_remove_card(host->card);
  1576. host->card = NULL;
  1577. mmc_claim_host(host);
  1578. err:
  1579. mmc_detach_bus(host);
  1580. pr_err("%s: error %d whilst initialising SD card\n",
  1581. mmc_hostname(host), err);
  1582. return err;
  1583. }