From owner-freebsd-arm@freebsd.org Sat Sep 8 06:17:19 2018 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 737DBFE9282 for ; Sat, 8 Sep 2018 06:17:19 +0000 (UTC) (envelope-from marklmi@yahoo.com) Received: from sonic311-23.consmr.mail.gq1.yahoo.com (sonic311-23.consmr.mail.gq1.yahoo.com [98.137.65.204]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 002F3881A3 for ; Sat, 8 Sep 2018 06:17:18 +0000 (UTC) (envelope-from marklmi@yahoo.com) X-YMail-OSG: sp57OZkVM1mVMiDbmrRKwT3iSQrEtCfk76gzZifFoclLbzkop9ea3kAE21kC_l_ Ez7SL1RKSHKNCd7NOZSNDCg5PLcPaE0pI4LZdspubLnm_ko8EkVpTv7uBhaBJ_lrwWQAw1soCP7F Q6MoBZZOJC2Prvybj1G.tLE.gour_fnNlkNXOlzqI_ikx2k_ZdMBj8Kok5WKtguldb6eUXyEVDBq bQMEFnWbh3S8Ot3jLt2XyQm5YsW5O8e5Jm70kRXuq2eb7mS125lhtU_0LGVVmFze6zi1yG4iZUFF 0FFYDsom8GC1SBZ8LAk97CG8.1yzFV1ONWqQMGLa9qp.e__IzYZo.3Ut.XVgcxL15d5MpfdWwnSt nBPquVOBa1dnbaCNWsf4MtmpL9RQE9kS5i8br.X9qiphWbH.jmejttAa1BtZ.iA5dEPuKllbjD9S GUtRyyRp9e0L05KbnKWnRuu9igAIOjgE6iG.DBG9M7nsjV_0O4J7aCph5t3ek1WKcEh0lOEmRxIf fpqYofS4MTg3NszKF39agc0VnnhmQtz25naQBCKtEvC3OoEGLQEqtY_zw9hJH1l8IfpwlA3uabdt 64UKYamXMcHY_JSAXfEf6ikj2zw_AsXMRuuZi91Wvf2SCrIe1KhDntDGuv4XlWLCd5Bo178pXonE PxubLkFtaZTP51ea5lSCKv05P1emoyBabE_vpyQVtft.sB8kxacJOMAfvbHL85KJdGVKbEk_KwzP FKPatoK.WXo69h2mxv.wOaSaxpBJ9HljwX3CL6FEmyUgObrKO.sJTZhtg5G36uzRmt1Aw7ENHu0o qAsag1ZJcZQwawf7AuJDB.CilC9KotT18CCrPvyc.vHer5Ob.l58C2j_Y8SUG8UrMqwQ52GdX.fB YcX7Wrz3_2reinsBC8ZuhFWJnzFHIdV5eWGHGZ42lIo.EwbbgJ3p_docm5pxsQzeGtAPo9K1h4B3 9DzDv3ld1PN.a9qGltW6vI4RIuZK4fEqaKgf6Vx6_TmEjkf0OKGAwzIA8UFj9eIxfKJeNFNhisYU K1fh2UyIBdQ-- Received: from sonic.gate.mail.ne1.yahoo.com by sonic311.consmr.mail.gq1.yahoo.com with HTTP; Sat, 8 Sep 2018 06:17:11 +0000 Received: from ip70-189-131-151.lv.lv.cox.net (EHLO [192.168.0.105]) ([70.189.131.151]) by smtp413.mail.gq1.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID fadb5510a7785e9b25142eaa97deb3f3; Sat, 08 Sep 2018 06:17:10 +0000 (UTC) From: Mark Millard Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\)) Subject: An experimental hack that makes head -r338518 boot from e.MMC via an microsd card adapter, in DDR52 mode at that Message-Id: <6D375D5B-34E2-4124-9A32-92C320AD6A54@yahoo.com> Date: Fri, 7 Sep 2018 23:17:09 -0700 Cc: Emmanuel Vadot , Marius Strobl To: freebsd-arm X-Mailer: Apple Mail (2.3445.9.1) X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 08 Sep 2018 06:17:19 -0000 The following hack demonstrates what is blocking the use of e.MMC on an adapter on the Pine64+ 2GB that I can test with (and likely more). In essence the hack makes the code ignore "Failed to set VCCQ" for DDR52 and so use the default VCCQ and keep going. # svnlite diff /usr/src/sys/dev/mmc/mmc.c = = =20 Index: /usr/src/sys/dev/mmc/mmc.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- /usr/src/sys/dev/mmc/mmc.c (revision 338518) +++ /usr/src/sys/dev/mmc/mmc.c (working copy) @@ -2226,7 +2226,7 @@ if (mmc_set_vccq(sc, ivar, timing) !=3D = MMC_ERR_NONE) { device_printf(dev, "Failed to set VCCQ = for " "card at relative address %d\n", = rca); - continue; + //continue; } } But that does not show what ended up executing instead. So, giving more context: if (timing =3D=3D bus_timing_mmc_ddr52) { /* * Set EXT_CSD_BUS_WIDTH_n_DDR in = EXT_CSD_BUS_WIDTH * (must be done after switching to = EXT_CSD_HS_TIMING). */ if (mmc_set_card_bus_width(sc, ivar, timing) !=3D MMC_ERR_NONE) { device_printf(dev, "Card at relative = address " "%d failed to set bus width\n", = rca); continue; } mmcbr_set_bus_width(dev, ivar->bus_width); mmcbr_update_ios(dev); if (mmc_set_vccq(sc, ivar, timing) !=3D = MMC_ERR_NONE) { device_printf(dev, "Failed to set VCCQ = for " "card at relative address %d\n", = rca); //continue; } } =20 /* Set clock (must be done before initial tuning). */ mmcbr_set_clock(dev, max_dtr); mmcbr_update_ios(dev); . . . power_class: if (mmc_set_power_class(sc, ivar) !=3D MMC_ERR_NONE) { device_printf(dev, "Card at relative address %d = " "failed to set power class\n", rca); } This is inside the loop: for (i =3D 0; i < sc->child_count; i++) { in: static int mmc_calculate_clock(struct mmc_softc *sc) in: /usr/src/sys/dev/mmc/mmc.c The result is: mmc0: setting transfer rate to 52.000MHz (dual data rate timing) mmc0: Failed to set VCCQ for card at relative address 2 mmcsd0: 125GB at = mmc0 52.0MHz/4bit/32768-block mmcsd0boot0: 4MB partion 1 at mmcsd0 mmcsd0boot1: 4MB partion 2 at mmcsd0 mmcsd0rpmb: 4MB partion 3 at mmcsd0 . . . It boots to an operating multi-user environment just fine. (I've not yet done things like buildworld or poudriere bulk.) As evidence of DDR52 instead of High Speed: # dd if=3D/dev/mmcsd0 of=3D/dev/null bs=3D1m ^C 811+0 records in 811+0 records out 850395136 bytes transferred in 20.315078 secs (41860294 bytes/sec) =3D=3D=3D Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)