From mboxrd@z Thu Jan 1 00:00:00 1970 From: erik quanstrom Date: Sat, 2 Jan 2016 18:28:13 -0800 To: 9fans@9fans.net Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Subject: [9fans] rpi emmc Topicbox-Message-UUID: 7d43853c-ead9-11e9-9d60-3106f5b1d025 in diffing bls' version and sources, i see some significant differences, but it's not clear which one is more up-to-date. anyone? - erik ---- ; 9diff emmc.c /n/sources/plan9/sys/src/9/bcm/emmc.c:178,184 - emmc.c:178,188 static int datadone(void*) { - return emmc.datadone; + int i; + + u32int *r = (u32int*)EMMCREGS; + i = r[Interrupt]; + return i & (Datadone|Err); } static int /n/sources/plan9/sys/src/9/bcm/emmc.c:310,318 - emmc.c:314,322 if((c & Respmask) == Resp48busy){ WR(Irpten, Datadone|Err); tsleep(&emmc.r, datadone, 0, 3000); - i = emmc.datadone; - emmc.datadone = 0; WR(Irpten, 0); + emmc.datadone = 0; + i = r[Interrupt]; if((i & Datadone) == 0) print("emmcio: no Datadone after CMD%d\n", cmd); if(i & Err) /n/sources/plan9/sys/src/9/bcm/emmc.c:380,390 - emmc.c:384,396 &r[Data], buf, len); if(dmawait(DmaChanEmmc) < 0) error(Eio); + if(!write) + cachedinvse(buf, len); WR(Irpten, Datadone|Err); tsleep(&emmc.r, datadone, 0, 3000); - i = emmc.datadone; - emmc.datadone = 0; WR(Irpten, 0); + emmc.datadone = 0; + i = r[Interrupt]; if((i & Datadone) == 0){ print("emmcio: %d timeout intr %ux stat %ux\n", write, i, r[Status]); /n/sources/plan9/sys/src/9/bcm/emmc.c:407,419 - emmc.c:413,423 mmcinterrupt(Ureg*, void*) { u32int *r; - int i; - r = (u32int*)EMMCREGS; - i = r[Interrupt]; - r[Interrupt] = i & (Datadone|Err); - emmc.datadone = i; - wakeup(&emmc.r); + if(r[Interrupt]&(Datadone|Err)){ + WR(Irpten, 0); + wakeup(&emmc.r); + } } SDio sdio = {