亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? hho-sd.patch

?? patches for linux-2.6.
?? PATCH
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
+	host->ios.bus_width = MMC_BUS_WIDTH_1; 	host->ops->set_ios(host, &host->ios); } @@ -524,6 +796,34 @@ 	return err; } +static int mmc_send_app_op_cond(struct mmc_host *host, u32 ocr, u32 *rocr)+{+	struct mmc_command cmd;+	int i, err = 0;++	cmd.opcode = SD_APP_OP_COND;+	cmd.arg = ocr;+	cmd.flags = MMC_RSP_R3;++	for (i = 100; i; i--) {+		err = mmc_wait_for_app_cmd(host, 0, &cmd, CMD_RETRIES);+		if (err != MMC_ERR_NONE)+			break;++		if (cmd.resp[0] & MMC_CARD_BUSY || ocr == 0)+			break;++		err = MMC_ERR_TIMEOUT;++		mmc_delay(10);+	}++	if (rocr)+		*rocr = cmd.resp[0];++	return err;+}+ /*  * Discover cards by requesting their CID.  If this command  * times out, it is not an error; there are no further cards@@ -567,6 +867,32 @@  		card->state &= ~MMC_STATE_DEAD; +		if (host->mode == MMC_MODE_SD) {+			mmc_card_set_sd(card);++			cmd.opcode = SD_SEND_RELATIVE_ADDR;+			cmd.arg = 0;+			cmd.flags = MMC_RSP_R1;++			err = mmc_wait_for_cmd(host, &cmd, CMD_RETRIES);+			if (err != MMC_ERR_NONE)+				mmc_card_set_dead(card);+			else {			+				card->rca = cmd.resp[0] >> 16;+				+				if (!host->ops->get_ro) {+					printk(KERN_WARNING "%s: host does not "+						"support reading read-only "+						"switch. assuming write-enable.\n",+						host->host_name);+				}+				else {+					if (host->ops->get_ro(host))+						mmc_card_set_readonly(card);+				}+			}+		}+		else { 		cmd.opcode = MMC_SET_RELATIVE_ADDR; 		cmd.arg = card->rca << 16; 		cmd.flags = MMC_RSP_R1;@@ -575,6 +901,7 @@ 		if (err != MMC_ERR_NONE) 			mmc_card_set_dead(card); 	}+	} }  static void mmc_read_csds(struct mmc_host *host)@@ -605,6 +932,80 @@ 	} } +static void mmc_read_scrs(struct mmc_host *host)+{+	int err;+	struct mmc_card *card;+	+	struct mmc_request mrq;+	struct mmc_command cmd;+	struct mmc_data data;++	struct scatterlist sg;+	+	list_for_each_entry(card, &host->cards, node) {+		if (card->state & (MMC_STATE_DEAD|MMC_STATE_PRESENT))+			continue;+		if (!mmc_card_sd(card))+			continue;+		+		err = mmc_select_card(host, card);+		if (err != MMC_ERR_NONE)+		{+			mmc_card_set_dead(card);+			continue;+		}+		+		memset(&cmd, 0, sizeof(struct mmc_command));+		+		cmd.opcode = MMC_APP_CMD;+		cmd.arg = card->rca << 16;+		cmd.flags = MMC_RSP_R1;+		+		err = mmc_wait_for_cmd(host, &cmd, 0);+		if ((err != MMC_ERR_NONE) || !(cmd.resp[0] & R1_APP_CMD)) {+			mmc_card_set_dead(card);+			continue;+		}+		+		memset(&cmd, 0, sizeof(struct mmc_command));+		+		cmd.opcode = SD_APP_SEND_SCR;+		cmd.arg = 0;+		cmd.flags = MMC_RSP_R1;+		+		memset(&data, 0, sizeof(struct mmc_data));+		+		data.timeout_ns = card->csd.tacc_ns * 10;+		data.timeout_clks = card->csd.tacc_clks * 10;+		data.blksz_bits = 3;+		data.blocks = 1;+		data.flags = MMC_DATA_READ;+		data.sg = &sg;+		data.sg_len = 1;+		+		memset(&mrq, 0, sizeof(struct mmc_request));+		+		mrq.cmd = &cmd;+		mrq.data = &data;+		+		sg_init_one(&sg, (u8*)card->raw_scr, 8);+		+		err = mmc_wait_for_req(host, &mrq);+		if (err != MMC_ERR_NONE) {+			mmc_card_set_dead(card);+			continue;+		}+		+		card->raw_scr[0] = ntohl(card->raw_scr[0]);+		card->raw_scr[1] = ntohl(card->raw_scr[1]);++		mmc_decode_scr(card);+	}+	+	mmc_deselect_cards(host);+}+ static unsigned int mmc_calculate_clock(struct mmc_host *host) { 	struct mmc_card *card;@@ -657,13 +1058,26 @@ 		int err; 		u32 ocr; +		host->mode = MMC_MODE_MMC;+ 		mmc_power_up(host); 		mmc_idle_cards(host);  		err = mmc_send_op_cond(host, 0, &ocr);+		+		/*+		 * If we fail to detect any cards then try+		 * searching for SD cards.+		 */+		if (err != MMC_ERR_NONE)+		{+			err = mmc_send_app_op_cond(host, 0, &ocr); 		if (err != MMC_ERR_NONE) 			return; +			host->mode = MMC_MODE_SD;+		}+ 		host->ocr = mmc_select_voltage(host, ocr);  		/*@@ -702,6 +1116,9 @@ 	 * all get the idea that they should be ready for CMD2. 	 * (My SanDisk card seems to need this.) 	 */+	if (host->mode == MMC_MODE_SD)+		mmc_send_app_op_cond(host, host->ocr, NULL);+	else 	mmc_send_op_cond(host, host->ocr, NULL);  	mmc_discover_cards(host);@@ -713,6 +1130,9 @@ 	host->ops->set_ios(host, &host->ios);  	mmc_read_csds(host);+	+	if (host->mode == MMC_MODE_SD)+		mmc_read_scrs(host); }  diff -Nbur linux26-cvs/drivers/mmc/mmc_sysfs.c linux26-cvs.SD/drivers/mmc/mmc_sysfs.c--- linux26-cvs/drivers/mmc/mmc_sysfs.c	2005-09-06 10:00:07.000000000 -0500+++ linux26-cvs.SD/drivers/mmc/mmc_sysfs.c	2005-09-06 09:58:25.000000000 -0500@@ -163,6 +163,7 @@ 	card->raw_cid[2], card->raw_cid[3]); MMC_ATTR(csd, "%08x%08x%08x%08x\n", card->raw_csd[0], card->raw_csd[1], 	card->raw_csd[2], card->raw_csd[3]);+MMC_ATTR(scr, "%08x%08x\n", card->raw_scr[0], card->raw_scr[1]); MMC_ATTR(date, "%02d/%04d\n", card->cid.month, card->cid.year); MMC_ATTR(fwrev, "0x%x\n", card->cid.fwrev); MMC_ATTR(hwrev, "0x%x\n", card->cid.hwrev);@@ -174,6 +175,7 @@ static struct device_attribute *mmc_dev_attributes[] = { 	&dev_attr_cid, 	&dev_attr_csd,+	&dev_attr_scr, 	&dev_attr_date, 	&dev_attr_fwrev, 	&dev_attr_hwrev,diff -Nbur linux26-cvs/include/linux/mmc/card.h linux26-cvs.SD/include/linux/mmc/card.h--- linux26-cvs/include/linux/mmc/card.h	2005-09-06 10:00:42.000000000 -0500+++ linux26-cvs.SD/include/linux/mmc/card.h	2005-09-06 09:58:25.000000000 -0500@@ -33,6 +33,13 @@ 	unsigned int		capacity; }; +struct sd_scr {+	unsigned char		sda_vsn;+	unsigned char		bus_widths;+#define SD_SCR_BUS_WIDTH_1	(1<<0)+#define SD_SCR_BUS_WIDTH_4	(1<<2)+};+ struct mmc_host;  /*@@ -47,19 +54,27 @@ #define MMC_STATE_PRESENT	(1<<0)		/* present in sysfs */ #define MMC_STATE_DEAD		(1<<1)		/* device no longer in stack */ #define MMC_STATE_BAD		(1<<2)		/* unrecognised device */+#define MMC_STATE_SDCARD	(1<<3)		/* is an SD card */+#define MMC_STATE_READONLY	(1<<4)		/* card is read-only */ 	u32			raw_cid[4];	/* raw card CID */ 	u32			raw_csd[4];	/* raw card CSD */+	u32			raw_scr[2];	/* raw card SCR */ 	struct mmc_cid		cid;		/* card identification */ 	struct mmc_csd		csd;		/* card specific */+	struct sd_scr		scr;		/* extra SD information */ };  #define mmc_card_present(c)	((c)->state & MMC_STATE_PRESENT) #define mmc_card_dead(c)	((c)->state & MMC_STATE_DEAD) #define mmc_card_bad(c)		((c)->state & MMC_STATE_BAD)+#define mmc_card_sd(c)		((c)->state & MMC_STATE_SDCARD)+#define mmc_card_readonly(c)	((c)->state & MMC_STATE_READONLY)  #define mmc_card_set_present(c)	((c)->state |= MMC_STATE_PRESENT) #define mmc_card_set_dead(c)	((c)->state |= MMC_STATE_DEAD) #define mmc_card_set_bad(c)	((c)->state |= MMC_STATE_BAD)+#define mmc_card_set_sd(c)	((c)->state |= MMC_STATE_SDCARD)+#define mmc_card_set_readonly(c) ((c)->state |= MMC_STATE_READONLY)  #define mmc_card_name(c)	((c)->cid.prod_name) #define mmc_card_id(c)		((c)->dev.bus_id)diff -Nbur linux26-cvs/include/linux/mmc/host.h linux26-cvs.SD/include/linux/mmc/host.h--- linux26-cvs/include/linux/mmc/host.h	2005-09-06 10:00:42.000000000 -0500+++ linux26-cvs.SD/include/linux/mmc/host.h	2005-09-06 09:58:25.000000000 -0500@@ -51,11 +51,17 @@ #define MMC_POWER_OFF		0 #define MMC_POWER_UP		1 #define MMC_POWER_ON		2++	unsigned char	bus_width;		/* data bus width */++#define MMC_BUS_WIDTH_1		0+#define MMC_BUS_WIDTH_4		2 };  struct mmc_host_ops { 	void	(*request)(struct mmc_host *host, struct mmc_request *req); 	void	(*set_ios)(struct mmc_host *host, struct mmc_ios *ios);+	int	(*get_ro)(struct mmc_host *host); };  struct mmc_card;@@ -69,6 +75,10 @@ 	u32			ocr_avail; 	char			host_name[8]; +	unsigned long		caps;		/* Host capabilities */++#define MMC_CAP_4_BIT_DATA	(1 << 0)	/* Can the host do 4 bit transfers */+ 	/* host specific block data */ 	unsigned int		max_seg_size;	/* see blk_queue_max_segment_size */ 	unsigned short		max_hw_segs;	/* see blk_queue_max_hw_segments */@@ -80,6 +90,10 @@ 	struct mmc_ios		ios;		/* current io bus settings */ 	u32			ocr;		/* the current OCR setting */ +	unsigned int		mode;		/* current card mode of host */+#define MMC_MODE_MMC		0+#define MMC_MODE_SD		1+ 	struct list_head	cards;		/* devices attached to this host */  	wait_queue_head_t	wq;diff -Nbur linux26-cvs/include/linux/mmc/mmc.h linux26-cvs.SD/include/linux/mmc/mmc.h--- linux26-cvs/include/linux/mmc/mmc.h	2005-09-06 10:00:42.000000000 -0500+++ linux26-cvs.SD/include/linux/mmc/mmc.h	2005-09-06 09:58:25.000000000 -0500@@ -37,6 +37,7 @@ #define MMC_RSP_R1B	(MMC_RSP_SHORT|MMC_RSP_CRC|MMC_RSP_BUSY) #define MMC_RSP_R2	(MMC_RSP_LONG|MMC_RSP_CRC) #define MMC_RSP_R3	(MMC_RSP_SHORT)+#define MMC_RSP_R6	(MMC_RSP_SHORT|MMC_RSP_CRC)  	unsigned int		retries;	/* max number of retries */ 	unsigned int		error;		/* command error */@@ -47,6 +48,8 @@ #define MMC_ERR_FIFO	3 #define MMC_ERR_FAILED	4 #define MMC_ERR_INVALID	5+#define MMC_ERR_BUSY	6+#define MMC_ERR_DMA	7  	struct mmc_data		*data;		/* data segment associated with cmd */ 	struct mmc_request	*mrq;		/* assoicated request */@@ -73,11 +76,16 @@ 	struct scatterlist	*sg;		/* I/O scatter list */ }; +#define MMC_CMD_ACTIVE_BIT 0x01+ struct mmc_request { 	struct mmc_command	*cmd; 	struct mmc_data		*data; 	struct mmc_command	*stop; +	int			flags;+	wait_queue_head_t	wait;+ 	void			*done_data;	/* completion data */ 	void			(*done)(struct mmc_request *);/* completion function */ };@@ -85,8 +93,15 @@ struct mmc_host; struct mmc_card; +extern int mmc_uninterruptible_wait_for_req(struct mmc_host *,+		struct mmc_request *);+extern int mmc_uninterruptible_cmd(struct mmc_host *, struct mmc_command *, +		int);+ extern int mmc_wait_for_req(struct mmc_host *, struct mmc_request *); extern int mmc_wait_for_cmd(struct mmc_host *, struct mmc_command *, int);+extern int mmc_wait_for_app_cmd(struct mmc_host *, unsigned int,+	struct mmc_command *, int);  extern int __mmc_claim_host(struct mmc_host *host, struct mmc_card *card); diff -Nbur linux26-cvs/include/linux/mmc/protocol.h linux26-cvs.SD/include/linux/mmc/protocol.h--- linux26-cvs/include/linux/mmc/protocol.h	2005-09-06 10:00:42.000000000 -0500+++ linux26-cvs.SD/include/linux/mmc/protocol.h	2005-09-06 09:58:25.000000000 -0500@@ -76,6 +76,16 @@ #define MMC_APP_CMD              55   /* ac   [31:16] RCA        R1  */ #define MMC_GEN_CMD              56   /* adtc [0] RD/WR          R1b */ +/* SD commands                           type  argument     response */+  /* class 8 */+/* This is basically the same command as for MMC with some quirks. */+#define SD_SEND_RELATIVE_ADDR     3   /* ac                      R6  */++  /* Application commands */+#define SD_APP_SET_BUS_WIDTH      6   /* ac   [1:0] bus width    R1  */+#define SD_APP_OP_COND           41   /* bcr  [31:0] OCR         R3  */+#define SD_APP_SEND_SCR          51   /* adtc                    R1  */+ /*   MMC status in R1   Type@@ -113,7 +123,7 @@ #define R1_STATUS(x)            (x & 0xFFFFE000) #define R1_CURRENT_STATE(x)    	((x & 0x00001E00) >> 9)	/* sx, b (4 bits) */ #define R1_READY_FOR_DATA	(1 << 8)	/* sx, a */-#define R1_APP_CMD		(1 << 7)	/* sr, c */+#define R1_APP_CMD		(1 << 5)	/* sr, c */  /* These are unpacked versions of the actual responses */ @@ -199,5 +209,12 @@ #define CSD_SPEC_VER_2      2           /* Implements system specification 2.0 - 2.2 */ #define CSD_SPEC_VER_3      3           /* Implements system specification 3.1 */ ++/*+ * SD bus widths+ */+#define SD_BUS_WIDTH_1      0+#define SD_BUS_WIDTH_4      2+ #endif  /* MMC_MMC_PROTOCOL_H */ 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二区三区在线观看 | 国产高清久久久久| 成人欧美一区二区三区小说| 欧美一区二区免费| 97久久人人超碰| 国产乱人伦精品一区二区在线观看 | 国产婷婷色一区二区三区四区 | 欧美日韩综合色| 风间由美一区二区三区在线观看| 亚洲成人综合在线| 中文字幕一区二区三区在线播放| 日韩免费看的电影| 欧美人与禽zozo性伦| 色综合天天综合网天天看片 | 91.xcao| 日本久久电影网| 大陆成人av片| 福利一区福利二区| 国产电影精品久久禁18| 久久99精品久久久久久国产越南 | 国产成人精品一区二区三区四区 | 中文字幕欧美区| 日韩欧美国产一区二区三区| 欧美日韩一级视频| 在线观看av不卡| 色哟哟国产精品| 不卡电影一区二区三区| 丰满亚洲少妇av| 国产成人av一区二区三区在线| 免费成人在线观看视频| 日韩电影一二三区| 日韩激情在线观看| 日韩精品亚洲专区| 热久久久久久久| 日韩av不卡一区二区| 奇米影视一区二区三区| 蜜桃91丨九色丨蝌蚪91桃色| 免费久久精品视频| 激情久久五月天| 国产一区二区三区四区五区入口| 精品一区在线看| 国产在线播精品第三| 国产精品羞羞答答xxdd| 懂色av一区二区三区免费观看| 国产一区二区三区黄视频| 国产一区二区伦理片| 丁香啪啪综合成人亚洲小说| 成人手机电影网| 色噜噜狠狠色综合欧洲selulu| 色综合久久九月婷婷色综合| 色婷婷av一区| 欧美精品日韩综合在线| 911精品产国品一二三产区| 日韩三级高清在线| 国产欧美日本一区二区三区| 最新高清无码专区| 亚洲在线成人精品| 日本大胆欧美人术艺术动态| 国内偷窥港台综合视频在线播放| 国产.精品.日韩.另类.中文.在线.播放 | 日本欧美一区二区在线观看| 国产在线精品免费av| 99久久综合99久久综合网站| 在线观看www91| 日韩视频免费观看高清在线视频| 国产亚洲欧洲997久久综合| 国产精品久久久久久久久快鸭| 亚洲影院在线观看| 久久99在线观看| 91免费精品国自产拍在线不卡| 欧美写真视频网站| www久久精品| 亚洲男人的天堂一区二区| 日韩高清不卡在线| 国产成人精品三级| 欧美精品 国产精品| 久久精品免费在线观看| 一卡二卡三卡日韩欧美| 经典一区二区三区| 欧美性三三影院| 国产日韩av一区| 亚洲国产综合视频在线观看| 国产乱码精品1区2区3区| 在线免费观看成人短视频| 精品成人a区在线观看| 亚洲男人的天堂在线观看| 精一区二区三区| 在线观看免费一区| 欧美国产日韩精品免费观看| 午夜视频久久久久久| 成人免费视频播放| 日韩一区二区精品在线观看| 亚洲美女屁股眼交| 久久91精品久久久久久秒播| 欧美色图在线观看| 中文字幕中文字幕在线一区| 裸体一区二区三区| 欧美偷拍一区二区| 国产精品毛片久久久久久久| 精品一区二区精品| 欧美理论片在线| 亚洲欧美日韩久久| 成人午夜免费视频| 精品国产亚洲在线| 五月激情综合婷婷| 色先锋资源久久综合| 中文av一区二区| 国产精品自拍三区| 日韩欧美视频在线| 日韩国产成人精品| 欧美日产国产精品| 夜夜夜精品看看| jiyouzz国产精品久久| 国产人久久人人人人爽| 精品在线观看视频| 欧美不卡一区二区| 日本aⅴ精品一区二区三区| 精品视频123区在线观看| 亚洲精品免费在线观看| 成人国产精品免费| 国产亚洲一区二区在线观看| 狠狠色2019综合网| 26uuu另类欧美| 精品亚洲成a人| 精品成人免费观看| 国产乱人伦偷精品视频免下载 | 欧美一区二区美女| 日韩av一区二| 在线电影欧美成精品| 午夜电影网一区| 91精品视频网| 男女男精品视频| 欧美一区二区成人6969| 免费成人深夜小野草| 欧美一区二区播放| 久久精品国产免费| 久久这里只有精品6| 国产99久久久久| 中文字幕人成不卡一区| 色综合天天综合狠狠| 一区二区三区日韩欧美| 欧美日免费三级在线| 日韩av电影一区| 精品国产一区二区在线观看| 国产在线精品国自产拍免费| 欧美国产激情二区三区| 欧美亚洲免费在线一区| 国内久久精品视频| 欧美精品一区二区三区高清aⅴ| 免费在线观看日韩欧美| 精品对白一区国产伦| 成人午夜视频福利| 亚洲麻豆国产自偷在线| 久久色中文字幕| 国产成人在线看| 最近中文字幕一区二区三区| 99久久久国产精品免费蜜臀| 亚洲一级二级三级在线免费观看| 7878成人国产在线观看| 激情偷乱视频一区二区三区| 国产精品久久久久久久久久久免费看 | 日韩成人免费看| 精品国产三级电影在线观看| 国产精品一色哟哟哟| 国产精品国产三级国产| 欧美在线观看视频在线| 精品亚洲免费视频| 综合在线观看色| 欧美一区二区三区免费视频| 国产成人午夜高潮毛片| 亚洲小少妇裸体bbw| 日韩美女在线视频| 97se亚洲国产综合自在线 | 国产精品一二三四区| 亚洲丝袜另类动漫二区| 日韩av中文字幕一区二区三区| 欧美精品久久久久久久多人混战| 久草精品在线观看| 亚洲精品欧美专区| 久久这里只有精品6| 欧美色网站导航| 国产成人av影院| 日本在线观看不卡视频| 中文字幕五月欧美| 日韩亚洲欧美高清| 91免费看`日韩一区二区| 久久er99精品| 亚洲国产精品久久人人爱蜜臀| 久久久久九九视频| 欧美酷刑日本凌虐凌虐| 91在线高清观看| 国产乱码精品一区二区三区av| 亚洲国产裸拍裸体视频在线观看乱了 | 精品一区二区国语对白| 亚洲小说春色综合另类电影| 国产日韩欧美精品综合| 日韩欧美国产精品| 欧美日韩国产首页在线观看| 成人开心网精品视频| 久久成人久久爱|