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