summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-06-08 01:41:20 -0600
committerLinux Build Service Account <lnxbuild@localhost>2016-06-08 01:41:20 -0600
commitbb9837e5470b84149ece8812ee894c5ea08b99c1 (patch)
tree6113d94509b67349862f4077aebb1ea67a3189c2 /include/linux
parentc7cdc5071fdb0dd9dbcfce744fdf2c22d59dcf43 (diff)
parent33323b1e32430afab8c0509cf1b18b6d87359f55 (diff)
Promotion of kernel.lnx.4.4-160606.
CRs Change ID Subject -------------------------------------------------------------------------------------------------------------- Iead9ccab1fd0b7249baf670e67872fcffeccf21d mmc: sdhci: change msm bus header file Id209826fb9499084ae96c7d3a47e4032326f61e9 mmc: core: add support for devfreq suspend/resume 947299 If863771191ee7c2b717d5817f4a88e4ad936653a mmc: sdhci: revert MMC_PM_KEEP_POWER changes related to Ifc369687c13dae904271e8f92d3604edbd667d82 mmc: queue: Don't peek requests when queue is stopped I77959f462c874771a0a854d9a2bc48df446eff56 mmc: card: Fix RPMB IOCTL to handle all cards Ibfe151098f4f0395b5b9dbdc463723b8e0265487 mmc: sdhci-msm: Move common definitions to header file I422f2e6acb33ab97105944e3f7f90c3afb37ef47 mmc: core: Bypass clock scaling while accessing RPMB par 516314 I8a0f51206dc0e174519dd71f0c75267a9e08e7f7 mmc: sdhci: Add support for auto-calibration Ia7102b29a8979ad88820c60ed5874d4b2dab71a0 mmc: sdhci: Fix setting clock for HS400 I7ec45e49c5ce18ea6aef0e272e79325fa8952c5b mmc: core: fix disable clock scaling Iaad37044ec43f93e898ed0c011b0bce7b91ae13d mmc: block: do not pack REQ_FUA request 1020694 I8b44c2b2b5928f3bc9ecd9f67dc014fb3bfb13df clk: qcom: Remove CLK_IS_ROOT I1c792f7b32d79267f5c39f8bdbd2bd6884fb0dde mmc: cmdq_hci: fix compilation issue I6abf29aa928d3d8270405cfc104241043dadfe45 mmc: cmdq_hci: Add cyclic buffer to keep history of last I9cc39f03a01c34f2f5639d4c20776fd575c25231 mmc: sdhci-msm: Fix recursive tuning issue I9946828b9c9063da312f95483fcc47e26585489a mmc: card: Skip secure erase on MoviNAND; causes unrecov Ia96ebe80e4fb7987f9e98e42575ff2ebe153dd23 Revert "mmc: core: get drive types supported by eMMC car 545716 Ia710b6af5a95974fc930ca902e8ff18afa4e17ba mmc: core : fix arbitrary read/write to user space I52f4d854388a608c6a09e55a693e3b36bd801fd8 mmc: core: Make sure host is active before sending pon c 1020694 Ie0bb9fed36484bc65b09905bda6b248a17ae2964 clk: qcom: common: check for failure 567658 Ic97e600a6388fb64f1267a097b201f31d114a1fb mmc: sdhci-msm: enable controller clocks at MMC_POWER_UP 953541 I769cc25c14b6d873f64a898d6b73f33cc59d9c5d mmc: queue: Fix queue_lock spinlock bug from CMDQ shutdo I8e55f0798543b2de44b37da13f7770889e6fbe5f mmc: core: claim host before halt in pm runtime idle 770843 I77ae36f805e496d56ed96db3ccaa83f2c37c926c mmc: sdhci: Fix unclocked register access 1022719 I53ddfde39c78e78306bd746c1c4da9a94ec67cd8 sched: eliminate sched_upmigrate_min_nice knob I1242841d5fa063b542e35dcff95694ef5e88737a mmc: block: support RPMB with CMDQ framework Ia96e8d6ae0c28aad21f4a3cf46b27c7a5c878971 mmc: cmdq_hci: verify the doorbell bit for DCMD before s I2eeda8589ca4c83bbb4a1b372e9363224bbfb680 mmc: sdhci: clear host mrq in case of error I0486495ef57c64bf8427e917daeb184c69b8dc73 mmc: cmdq: support for command queue enabled host I55298f729949c39ebfa3eecd4746d77e40cb2e5c mmc: sdhci: Vote for new IRQ specific QoS request I82617d5a02674af24d330601e41fb3c20278f672 mmc: sdhci-msm: Fix wakeup functionality for SDIO I15365804e0986e01339ccaefdffdfaf9fd319160 mmc: sd: Use locally stored ocr on paranoid init I2ed1c5ecaff521db693db47928b0958ed0289645 mmc: core: Add 8-bit support for SDIO I69e972c08e89efebff9822de6d0e59692784652e mmc: sdhci-msm: Update DLL reset sequence 1022200 I4bed7add011e0c9b0e148d1b44132ba1873cf607 mm: zcache: fix merge issues I4572eb9e71a281b56e25e5b4864d5777b16e2bc2 mmc: block: avoid HPI for some Kingston cards I5df81bdfd9b19bee30a394ee0ff4390b292691d0 mmc: core: interrupt Background Operations if it takes t I19268009e76b8535fa4a7aa742a1cfc957f8aece msm: mdss: fix pipe cleanup for multi-rect pipes I6d2549ce04c9e4b19fdd8fe3dfee03d83bfd9d77 crypto: ice: general driver clean-up I901dc82312b4299e86a7812dd74d3682650966a2 mmc: sdhci-msm: Implement uhs_set_signaling to select ri Ib967ca3c0420f4e54b3e93c497eb538d7347199a mmc: core: add support for bkops during cmdq 1024245 I8a7556626035139e67ec3d722b60b6cf60232f6b ARM: dts: msm: Fix the clocks for Venus VMEM on msmcobal Iaa556e189cbbc6a7f9c3d485e94a43cb21a968a7 mmc: sdhci-msm: fix few compilation issues Icc158cf2c7a2dda6e8b9f1eee8a5924e14330d1f mmc: cmdq: disable bkops exception for auto bkops 1009740 I7194e72a191f2f52dd708c84d5a8ab55f03729fe ARM: dts: msm: fix DP PHY and PLL register base address If62378ba1dd369e69524365a4421d57317c22ca2 mmc: sdhci-msm: Fix issue with 1.8v switch sequence in 3 I2ae9b19e2cbde04366e7ecf06377a5efd81e3f26 mmc: core: halt CQE before suspend and un-halt CQE on re 1020694 Ie06e1bb4e6add624787faf0372bafdf0b1126d1c clk: qcom: common: Add API to register board clocks back Iebf6b74173dc91b0dc7230d1e87c65983d15148e mmc: core: add flush request support to command queue 1020694 I12323575c44b1a3ba4cb2764a498480b3e62dcaa clk: qcom: gdsc: Add GDSCs in msm8996 GCC I7c2218623fddfbeed0489aed330c9fe6e8bc5338 mmc: card: fix asymmetric claim host in mmc_blk_ioctl_rp 979630 Iaf0d8326c0e3fd6507b075339f2cc87ae1bdf6b2 mmc: revert runtime idle state I3b0f5101150de9f2c190ce69b306bd151cbb65ae mmc: sdhci-msm: add offset to CMDQ_COMMAND_DEBUG_RAM_x r I0032861b1e5218bdf3c5bed664869c708ce50148 mmc: card: Fix broken clock gating I80545486057c55c697b72b56d57e2ea47cff86b9 mmc: sdhci: delay the QoS vote removal Id35e0b9e47ea725202c8e4a3ca479d52cc872920 mmc: sdhci-msm: Add hs400 enhanced strobe mode support t If094658943a536f39afc814f6684c0dbb0806778 mmc: card: activate packing control only for eMMC4.5 car I424cd0a5ee9ffd7199be58a5a091984c5fcda52f mmc: sdhci-msm: use max discard size supported for mmc q I6c535cd5a641e23399bad284e9a1f89ac8811e62 mmc: sdhci-msm: use the generic sdhci_reset() Ie830ac218b242be7da63ef3b8082404a8f2f20f5 mmc: host: Fix driver level perf measurement If573de5025054a10de1dde544aa79022016f65fd mmc: cmdq: add new crypto_cfg_reset host operation Ide3a658ad51a3c3d4a05c47c0e8f013f647c9516 mmc: host: add SDHCI platform driver for msm chipsets Ide0863a5aa64f9990d39095de6f6b13f752a6b3e mmc: sdhci-msm: return correct error code if emmc is not 981519 Ice69a77b40dbd98bfff0c8095d78a25424527a2f defconfig: arm64: Enable app specific setting on MSM8996 If7d81e44a9b479c4c8e9fbaa7e092af2afb9cb9f mmc: sdhci-msm: Fix issue with MSM bus bandwidth voting I9f67442a79b2645cbdc3020d1a10c0b32840ce32 mmc: debugfs: add debugfs entry to force raise host erro I4fed1c2ccba7d5d7f978f161e7985c98e869d1d8 mmc: sdhci-msm: Add tracepoints to enhance pm debugging Ia78eb0416321755737438d28984ddabea6dbd527 mmc: sdhci-msm: enable clock scaling capability 548450 Idc005b8420a78b3566164102fbeaa243a8e73c7c mmc: core: Check for NULL pointer access in ioctl I05e70efa71a8b8b931dfff758194af6220a8bc46 mmc: core: Card specific custom settings for SDIO Id79098ff66bd36be2496b86bf71556204aca7fe3 mmc: core: Check if card supports strobe before calling Ia6f81f6cc4ec933f2e8423029f7236401aea04df mmc: core: hpi in TRAN state error handling I9e9a7e368f56d8e16548780288211bd8775fd048 mmc: core: Add a debugfs entry to set max clock rate I6ac78072563f77c481425a5ec149ec46a9b0a80d mmc: sdhci-msm-ice: Add Inline Crypto Engine (ICE) suppo I27b0357b4d88842a258332250bae66efac3ee5e2 mmc: sdhci-msm: add default qos 964435 I0955438a540ca9adf5bcd3a0dbf9201a5ef456a5 mmc: card: set dma_mask as the queue bounce limit 1022719 I5d59e89d5cc0f2c705c40036cd7b47f5d3f89e58 sched: eliminate sched_migration_fixup knob Id7095884755e1390ab928110bf585cb462317bea include: sdhci: Fix QUIRK2 defines I987605cd21f137dea49ddf3e8db3f1f41b5b501f mmc: sdhci: Notify sdhci-msm for enhanced strobe I75940cfca15fe88de6d46fe58cb33620a3b7ced1 mmc: sdhci: Add new callback to enable/disable CDR Ic58c36665e23cb921d76c482494a168289e83b83 mmc: sdhci-msm: Add polling sysfs entry I0f5eac47197fa7b59208d0a61776d4ba186aa3dc mmc: cmdq_hci: Don't reset tag id on error path If8e2d125b8246ca479f816a475940bb357138297 mmc: sdhci-msm: get lower bus speed mode for clock scali I288292f37d77507bf5aaa44bf156496b4df87234 mmc: sdhci-msm: Add software capabilities for 8-bit slot Id7cd4ed1235d4697dafb4f0876ee6598f4de75eb mmc: sdhci-msm: Disable packed commands I9ec4173063e2505eca179161cdf8cda033a3fd4b mmc: core: export mmc_host_may_gate_card function I5fcf9aa93da690c6e64ab70ea5b039ca663c80ad mmc: sdhci: Vote for PM QOS I1322e0d1ab4ffbf50956fec2921c778e0dcddf36 mmc: cmdq_hci: fix platform device power management refe 487962 If4693869210bc8b361dadb2b68a47b6ac8707e0f mmc: sdhci-msm: fix issue with power irq I24f144d3f727160c302966888fb439b3a39a0dde mmc: sdhci: Enable clock scaling feature 974940 I09fe888d0fbd1fde3f6a6f32806315ddbb5bf6e1 mmc: core: fix issue with devfreq clock scaling I7e9379d1e3ddc863132af31019604c22a42f8d59 mmc: core: Fix MMC clock scaling in case of tuning failu I895068edb487e6a44205e0769342b2ec2c89c876 mmc: core: Add retry mechanism for MMC resume failure I20bc683512ebdd22fcd7845c7e43dd645a2f146f mmc: sdhci-msm: adapt to allow drop-in use in place of d I5eea513991c794543fbb3d009d8b7db0b0912fc5 mmc: block: Add MMC write packing statistics I22a5054beec41b0b66b3bf030ddfcf284de448b3 mmc: core: Add load based clock scaling support I15387734f51ca4cadfc9e11270f14d8a0806a00f mmc: block: ensure CMDQ is empty before queuing cache fl 480596 Icef51f02abb54316710df30429fec875030d42d9 mmc: sdhci: Fix sdhci_led_control() path Idb89def9ff5c2fee6866759b9a8c652049552933 mmc: core: Fix debugfs and IOCTL calls in cmdq mode Ib65905fa263553842cd55f38edccc135cac4bcf9 mmc: sdhci: Add hs400 enhanced strobe mode support to ho I464ab1e0db41af50550bb5a9ea9b909ee0d27dd9 mmc: sdhci-msm: fix pwrsave bit handling Ie26b1b52fdcc0f4d5e3638801e28e965fae0cbeb mmc: sd: fix crash with sd card 975505 I1b340d13bfef3b71d049d53c9bb79e4effafc79a msm: vidc: Enable blur support for encode Iac064221199f69d162d91f5311becd735c15700a mmc: core: Allow changing bus frequency for SD/eMMC card I1333e1d4330393e446ba48a9474c83295744c050 mmc: add support for bkops I3a6eadde2023d974b0ce260a77082b01d8ba0b5d include: mmc: Export sanitized mmc headers Iaefc80305d101bd72ff22f792b1967379507a739 mmc: core: update host->card after getting RCA for SD ca I426ff4fc4798afae254d11a608c800dc0b7bf765 sdhci: sdhci-msm: fix issue with hs400 mode I487bdf3bd4afb18e69afa778aa38c3574d69e2f7 mmc: sdhci: Add new host->op and quirk to apply reset wo 1022719 Ie9501a898d0f423338293a8dde6bc56f493f1e75 sched: Remove the sched heavy task frequency guidance fe I60d06458767c817298783219caf767866e7bf12f mmc: sdhci-msm: get the load notification from clock sca Ic1945355a19ebfdb3bd000bf8138d8001cea53f6 mmc: sdhci: Add asynchronous interrupt support for sdio 439313 I3e959101a1c56c1e6631da3d660f4b914e100503 mmc: Keep track of current hard partition 1022719 I36b7a10982367f9c7ab8eefcb8ef1d0f9955601d sched: eliminate sched_early_detection_duration knob Iad6fc4dfc6e44d0a609b66432b0985d589c3e5b9 mmc: sdhci: Fix unclocked access during MMC_POWER_UP I23a15f94571da3ff9553a342dc37e1a8de6827c6 mmc: card: Add eMMC4.5 write packed commands unit-tests 430138 I0bc96d9faa823f3574623edd7948f141f0d40b79 mmc card: Initialize the packing info before running the I83d483c11fe2d7f2e462086cc3c0932057304c0d mmc: block: Error handling fixes and support of reset_al I5dbe6f91d5e530b289f4cf395ae7b673acd85fcf mmc: sdhci: enable 64-bit DMA support only if chipset su Idd1794e162c7a53cc63504e15e6e490481f104a3 mmc: cmdq_hci: Fix NULL pointer dereference crash I321d5bed95b802d4bcc00836ce9cdede316b29f5 mmc: cmdq_hci: Add a memory barrier before ringing doorb Iac2284b2df3b3d8af623da0f17697694994b34b8 mmc: sdhci-msm: configure regulators only if defined in Id5022f8d7db43750edf137d4293796615b56ae36 mmc: sd: Set the card removed if card detect fails I678cffb63af6a2013640a5eafa6ce9bfad8a51d6 mmc: sdio: enable asynchronous interrupt support in 4-bi 493685 I8342aa2f35d64a4dc7b8396bd9741c0aecaedc5c mmc: sdhci-msm: set the clock rate before enabling it I10b681ab955e0a9126b22df68d3601b75328c949 mmc: core: prevent calling ->post_req 2 times if request 1022719 I5de789b6349e6ea78ae3725af2a3ffa72b7b7f11 Revert "sched: add scheduling latency tracking procfs no Ic6cfa7fb2e713dcf1d2c6b2ae9df9cf0394f8c4a mmc: core: Remove BROKEN_CLK_GATING quirk for WCN1314 ca I7af77b2a2661c00f2b1da47953717b1506bdba83 mmc: host: sdhci: don't queue zero length descriptor I9cb31269638d9db4e630eb22b973a5335af1bda4 mmc: core: Fix race between runtime PM suspend and block 849567 I4fcd51b82e41746620a68a0a0eb5a18d630ccbea mmc: sd: Error out on bus speed switch failure 1007860 Ic3d55d88c61ab215139de7fe0c53b8bb89bf85f8 msm: mdss: Fix NULL pointer dereference I4753c75c3b3eeea91e93bceba7af2535b793612e mmc: core: Add sysfs entries for dynamic control of cloc I5a93df8b5b7c48d355c3cc881699a3f9592914e6 mmc: card: Add eMMC4.5 packing control unit-tests If99d82679c07bc2d36e0aad9354757288aa400b8 mmc: sdhci: initialize sdhci_host lock in sdhci_alloc_ho Ief70cf2f86e9eb3817f8a390626be8433180ed87 mmc: queue: issue requests when dcmd is in progress Iff608fba4c58bf37a6f4ce8eb36876c79969feaf mmc: sdhci-msm: Vote for MSM bus clocks before enabling I0fb1345cab1055ed2f5f2e36debf5ea273241628 mmc: sdhci-msm: use the generic sdhci_set_bus_width() Icf6125066d96331392d98a387974e54c96553306 mmc: host: sdhci: allow definition of pm QoS via dts fil I2d784cc31027a551a466beec63ee8cd0a1f67af7 mmc: core/card: maintain clock gating reference count in 1005434 1018875 I210e43b53c6170425ee35c02b728698b33afb591 msm: Fix failure in deregistering custom topologies 1023609 I99a95cb48190dd2efc9c78be1e2c26b0b8eb53cb coresight-etm4x: handle invalid CPU id I7756731760298c6766d00a22160c6328faaaf4a7 mmc: sdhci-msm: support dual voltage pad for eMMC 515513 Id1013e1705d8efdba0171dcad14f783607d38ef3 mmc: sdhci: fix issue with auto cmd err detection I9c2fa984740aa9a0f8135d2196be6b3639ec22d1 mmc: sdhci-msm: do not disable test-bus Ic6af2979e7c8c56841d509f3f25fadd4dd2fe9d2 mmc: host: Reorder MMC_SDHCI_MSM_ICE config I4498c302914a81bf19f61d20b30bd4426e21d3d0 mmc: cmdq_hci: Fix timing and response type for busy com I12343b35d45774668b7e823ccaa067813fcea4cf mmc: sdhci-msm: Enable one MID for SDHCI controller I80e869dd7ecb6e24e81d1cc73ef8101c44110873 mmc: sdhci-msm: Initialize card-detect polarity Ie4cd6db2e7230bc22cd393c8e37d99f49c777cd0 mmc: sdhci-msm: Add dual voltage capability Ic397e4378c290b604037e69b7df58200810e981c mmc: sdhci-msm: dump cmdq debug ram only for command que Id11165967e316b1e556aaeb6d67bd18844cee6e1 mmc: block: Do not call post_req in DCMD case 1023377 I8ae05d0f98a33a8608a4caef93d50e4dabad05a1 msm: mdss: Add PA dither support for msmcobalt Ib497556f10c9c6576a3e0a3592f6755c8725370c mmc: core: Remove disabling of clk-gating for sdio cards I6a1e426c156d4ddb92bba00b5ec0cfb156d9550b mmc: sdhci: Replace SDHCI_USE_ADMA_64BIT flag 630894 I40f3fb590aeba787de8ca3356a8eed5f2780bcc1 mmc: core: fix issue with sleep cmd that follows an RPMB I6c31a265fd801dfc4169530e3f39ffcf6590f5a8 mmc: mmc_test: Fix possible NULL pointer dereference 1018146 Ifb45db29d5475ede42a11613b99c4504fbe10b54 msm: ipa: fix the order issue of meq128 equation I234ebf6cc46d2a3b70bf9ba3f94b4b1abc1acd44 mmc: sdhci-msm: disable runtime pm and clock gating for 470661 Ie1e192eb9c38ca3922bb1f518073a8ff0cb57f0c mmc: sdhci-msm: Use maximum possible data timeout value Iec1a0aac80ee41dff56f192e7253c2bd00c15694 mmc: schci: add support for MMC_PM_KEEP_POWER in eMMC I4bcc0f4bfd608745626816ca261369b432602c45 mmc: core: set MMC_PM_KEEP_POWER for certain Hynix mmc c I8976e8c0b5e9bda910634464202578dbacd7666e mmc: sdhci-msm-ice: add crypto register dump for debug I088f74c77026ccd901276e1214e4466ac7815bf1 mmc: block: stop BKOPs before handling RPMB and ioctl I82f44d313b3d499462977a0a9bbc0759f489ae95 mmc: core: Workaround to fix a hardware bug in Qualcomm- I30a9664d8ba2f4b4f580c2cf71c5d01b735c9491 mmc: queue: fix race in mmc shutdown Iabb473696fb11827dfcce9b137c26b2c5a5a879d mmc: sdhci: cmdq: add notification for cmdq halt Ieaca7887001daabd4a6a0b05f7b0048dc11bbeee mmc: sdhci-msm: Fix NULL pointer dereference I231aa6e5c02669cf1aa3f21764642fa7da9a01ff mmc: sdhci: Fix issues with msm 3.9 kernel I07707ac5df731a0d3e4abead28076f0bbbf75c0a mmc: sdhci: Fix issues with power IRQ handling Icac865629b21ce0207c46c1907cf25401d6e8339 mmc: sdhci-msm: increase number of testbuses to 60 1001862 I8a8842250fe459cb523b607ca379f9a036b4c09b ARM: dts: msm: Add system stats driver for msm8996 I6108a9dc5b188e2086aa5e6d2fe87414bb2a2539 mmc: sdhci-msm: fix tracepoint for pm debugging I1c4f27e131992ef036ebe64fbb2c52613ba396cc mmc: sdhci-msm: Fix HW issue with power IRQ handling dur I8e9a8d5094db82336917fcca4361ce84316c34ef mmc: cmdq_hci: Helper API/info in cmdq for halt I8347e2d5ad1816f549ef8ab2607546203aa4a21d mmc: core: Fix crash in mmc clk-scaling I318d3db72fc09248c5dada2fb6d69ade1bbf85cb mmc: sdhci-msm: add nonhotplug support I6817de46d895b61f410dd732be57ba60efb58fb2 mmc: sdhci-msm-ice: implement crypto_cfg_reset host oper 568227 Ida53f5ad7249cd0cd8428b4839dfd932b04e31fa mmc: sdhci-msm: Add software capabilities for voltage in I496802e244745bc7550402027a594d967cf7b756 mmc: block: do not query the sd card if a fault is injec Ic0e89becbfded35c90c4061f0fe03d61125f66d5 mmc: core: fix deadlock between runtime-suspend and devf I6bef5dc18b561871689b3d730fd3486323b12520 mmc: sdhci: Add host driver support to enable clock gati Idaffe14d4e54a27b15e5a5d82dad41d843714d57 mmc: sdhci-msm: update dma_mask for SDHC device Icaab9520135e384f5470db68b2f25c5cdce5663a mmc: core: Add support for notifying host driver while s I31b6723f53397be1ba151305ead89e739560eb20 mmc: sdhci-msm: Fix power IRQ issue uncovered in 3.10 ke 434831 I4a70bfc8dff31b216a6097c08f824a1f1b002d5d mmc: sdio: Update the argument for data copy 1011072 I408fb7e62ef13b21dfea68bb6b878cdbeee411cd ARM: dts: msm: Add LMH DCVSh interrupt information for m I25bcb35aa2cecd98f6f04cd98a616a76c75b6784 mmc: sd: add support for UHS card to get max frequency Id43d300bf8fabea921c80931fbf45cd3782ff3fa mmc: sdhci: Add a quirk to ignore CMD CRC err for tuning I3d4f28cedb24ff2292ab08bdd7470358cf134dd5 mmc: Enable clock gating for cmdq I78b505326d245b1ddcd9d6f1cdd4294850889d45 mmc: core: check if manual BKOPS is ongoing before scali 625855 Ic8462dd9c67e4f18a3ce73d972591772be8c6d10 mmc: sdhci-msm: fix issue with tuning command 1023778 I01ccdc4d2831cf252a4b35f9f856f3256d9b7429 cfg80211: avoid restoring the regulatory during disconne I141887dcef2ceee14848634cc27c3c85f8edc7a5 mmc: do not pack random requests I3abbf15a441300af9828ac907ea67975302d5352 mmc: core: declare local stack arrays as const Iea26ca5240f6031218dcf374cafcf2708df1f125 mmc: block: fix dump cmdq registers on request timeout Idd1d1bab343cf5cf1e35f229d913d16a7854f358 mmc: sdhci-msm: fix compilation errors I91d36765c4a50be0e2805cd07c58962fb87153c6 mmc: card: Fix packing control enabling algorithm I93a8810e4031eafcd44b5152296e065dc3330b63 mmc: quirks: add new quirk that allows HPI disable Ieff00382894a0841496776dc6a6b1db53e204d6d mmc: core: Remove BROKEN_CLK_GATING quirk for AR6003 car If4188b8b80aaa0e6c4e00e1807aa9589d5e7efdb mmc: core: Update PON based on the system state I3c6f224398450cf10463cbb316613fd430d1e8d2 mmc: Add long power off notification support Id151c0fd0dc8eccdec8f842a5ee13af415b7ffe6 mmc: sdhci-msm: Update mmc DDR timing mode Id4f60dc15688a6f02f31d77705ad1ef0181a1ce9 mmc: sdhci-msm: remove mach/gpio.h I6ac6fbd9703253d31a14c07399423b1c8a0b3301 mmc: sdhci-msm: Update the args for sdhci_pltfm_init Idef53d5bd66fa6f1faaf79644c8efb5177c75e89 mmc: block: Fix an invalid use of req->cmd_flag in DISCA Ie453df2f62b6716c6c0aa83dd4822b8555c4e555 revert "mmc: core: Set correct bus mode before card init Ifd906146eb61d413880693ec7f306067895f5dac HACK: mmc: sdhci-msm: setup vdd and vdd-io supplies Ied1a82e385547f7f5d60807fc896ea5a13084657 mmc: sdhci: Add check_power_status host operation 364206 I7213b11c8e9e055894c9902af7e975de3be1c519 mmc: host: remove mmcq performance numbers statistics I90ff99fb8e018b00600bf18197a2bcaf83ff1bc4 mmc: core: fix race between mmc_power_off and mmc_power_ I9da4aa7d28dbf8e1d2bf62f6d5fa0875bd5b6064 mmc: cmdq: add platform device reference counting for ru 979630 I4ac3b7c45fdba36d014f4c88cb704bbf36011d59 mmc: core: update AUTO_EN in BKOPS_EN field on runtime r I8de39ea547fa0d5eca478719a4cf9255b6652503 mmc: sd: fix the issue with paranoid SD card init retry Icf0c8710adbe2770f4eae283a50f4a13671f703f mmc: sdhci: Vote for the required MSM bus bandwidth I3a8455ce404988ab5eb3ed04c0f90ab6edf76d86 mmc: sdhci-msm: Fix SD card detection issue I58ddbd93648ded82b304411956e035fb353cd97e mmc: core: devfreq: migrate to devfreq based clock scali I8196d6666bcc0ef327659253df53a17792fa51f7 mmc: core: add clock-scaling support to HS400 cards 507926 Ia1408d95503d19ae0f7c49c7bb7905b0ddaddbd5 mmc: sdhci-msm: remove MMC_CAP_HW_RESET capability Ie68c5b04096e77074fd8c91469d2173990fac9bc mmc: sdhci-msm: Setting coherent_dma_mask I53a323b55df4d7c27e3ee3426ee4e856e533522c mmc: cmdq: add clock scaling for CMDQ mode 759398 I051b6e3b204dde22cdc973759c3e32d0a81c369a mmc: sdhci: Dont enable CDR for tuning commands I175432639d28378ec74669e31deb4d1667c49bb8 mmc: core: Call cmdq_post_req with tag info instead of m Iea3f8c8f4e5498a8742fa408a19e3e169d1fa8cb mmc: quirks: add new quirk that allows Cache disable If5b8e4b155090343112916c9c57a766bb2104e10 mmc: sdhci-msm: add sysfs entries for PM QoS 1022750 I978d217fe41c2d62bb96c6f6816d5cbf851b9add icnss: Synchronize driver probe I1a94978ca66823d2ce78ee230cf36b4ebb72e6d8 mmc: sdhci-msm: add PM QoS properties for IRQ and cpu gr If1c7f5debfca6f45a0fdb08bc759ad04b96fd86c mmc: sdhci-msm: wait for SW reset to be complete Ic3e280b975d293ea8adadadafecfa8115fe5f428 mmc: sdhci-msm: Add wakeup functionality support for sdi I97bc517adfe4a1a81a97a2789d77404b0f22b124 mmc: sdhci-msm: Disable SDHC slots at bootup if required I6339cad5857732ec6b66280940cd6b8b7ed30614 mmc: core: claim mmc host while enabling clock scaling f I28741554f8e1b5843671ee0d6b08bdcf8e4469c9 mmc: sdhci-msm: fix possible NULL pointer dereference 891366 Ic2807c6334a778b5f0c89fb605c6923a44f7624a mmc: cmdq: decrease the QSR polling period Ib47d0641f02c4390d26567102ee178beaf63516c mmc: core: sdio: Ensure clocks are always enabled before 1023864 I895e70163e54e5f28c97f592cb203c6576215877 defconfig: msmcortex: enable MMC/SD support for msmcobal 355347 If4fdd2724dc407450da8529222efca7ee94f50df mmc: quirks: Fix data timeout values for certain SanDisk I7e8f1b8d2d735685ede87df4bb7fb32ad0a10246 mmc: sdhci: Add new quirk for broken SDHCI LED control I59e199681e46085f804636f4c07249e6f21de1d5 mmc: cmdq_hci: Add retry mechanism for cmdq_halt I9582bbb4b37594d4d59a7398a00656846516d675 mmc: sdhci-msm: enable clock scaling capability Ic5818f5c2b8356bda9b1612d78b65e07dad011d7 mmc: card: fix null pointer deference in cmdq timeout ha I3ec2da150dc5ee656b8156040bf539812b0e4d2b mmc: sdhci-msm: Improvise tuning to check the card statu 589992 If82d6d2e303b8d1189b76712e514f41fe6e2cf8b mmc: sdhci-msm: Fix clock gating while voltage switch is 837631 I08fffb7e77584ac7fe7ba7152677cc12293e1655 mmc: sdhci: use pr_err_ratelimited for AUTO CMD command If984ff1f393968c0d76eb6eb8a98c83fb5a7bc92 Revert "mmc: sdhci-msm: Disable pm functionalities" 1001862 If5a5ef6e080ab6d75139472c5204eb6d5e9c6614 drivers: soc: qcom: system_stats: Support for System sta 876453 I976cd5061c2a7d8321e48ee23a44acfd552a37fc mmc: sdhci-msm: Reenable cd gpio on system resume Idbe7e939e01327061dfa5de93c0eaed59b910592 mmc: block: serialize the requests if we are scaled down I4ada286aefe57b90bfd20d60f8fbe2c013d9db71 mmc: cmdq-host: add halt support to command queue host I3ec62146982c9db0263d5e19f60274163f514859 mmc: sdhci-msm: Add Inline Crypto Engine (ICE) support If1532213aaf265bdb4f5ddf68d9f70005ed97037 mmc: core: Skip frequency retries for SDCC slots Ifba3ddcb18c3c0917343d99fe58d5ed04b2da871 mmc: sdhci: Enhance debug register dump I5a98c54ad4998e6439f83081628c9c083e95bbf0 mmc: sdhci-msm: add the ability to fake 3.0v support for I6b5c9b10daf7cd8a7faf16ac6bdb09c5079a39e9 mmc: sdhci: Fix timeout mdelay bug in sdhci_reset I347e8f0373264574a80e460967afba6859607ac9 mmc: sdhci-msm: dump vendor specific registers during er Ie25664516f782812fe39fba574be50e44ece815c mmc: block: fix cmdq shutdown flow 684185 Ib57ce03834d741c0fda4195a58d6b287ee9fb0a0 mmc: sdhci-msm: Reduce the max descriptors I775e1582ad32a8f798e8b2bd2b3178aef357e747 mmc: add dynamic trigger for packed control 498159 I503fd16132bf17e590239997d6970b9b730d4202 mmc: sdhci-msm: calculate timeout value based on the bas I3d1e7b38d7d281594b49d8452198ed4c1e550b73 mmc: core: resolve deadlock between devfreq update and s 499579 I8e1df1d1f2294e85068aebcc876bef701e088b07 mmc: sdio: Update the buffer copy to include the last ch I6fc7e2236b44b1f3a322da36552a7f9237c4dac6 mmc: core: add runtime PM voting to devfreq context Iebffc993241e5fadb2962fedc44576566dc66e9c mmc: queue: fix the cmdq thread wake up handling I348fb30daa43d97c58f83f7e4a22019f94ef4954 mmc: sdhci-msm: improve tuning process I32d04100bbf31995a249188eace164c8761e9141 mmc: sdhci: disable pm qos voting when in cmdq mode I122971e4fb4a3ab98f0078ceafca3380e9c0e2d1 mmc: core: get drive types supported by eMMC cards 1018000 Ia1a36ad6336305fe8383863cfab066a56525fd9f staging/android/ion : fix a race condition in the ion dr Id4c530f8e2a8f565f9b957f46e5086078f808c96 Revert "mmc: sdhci-msm: enable clock scaling capability" I20ddeaee9309c43cd51bebdfc02d70553c9d2a87 sdhci: sdhci-msm: update dll configuration 671153 Ic6db66b571aa425aec32c82d52789c68fe0cb0e9 mmc: core: Avoid infinite retries of failed mmc command Ie725bbf1c859a2dc91b64274e05e71328dfeb1b2 mmc: sdhci: Clear error interrupt status in CMDQ mode 981387 Ie959b8e565ee2dad53cdd9d913bcb8696519d7ca mmc: host: Set max frequency when disabling clock scalin 766702 I6e3522c2764047a773e028078b63e6e94e230d41 mmc: sdhci-msm: change the rclk delay value If41704758d097229ffc0204d581886e137e8b581 mmc: sdhci-msm: Implement platform_execute_tuning and to Ifa1343c3e7f14b031da30b06203a8831ba544889 mmc: sdhci-msm: add quirk for max_discard calculation I651f86e42595cc82f99093c06ee220a1d0ec95a9 mmc: quirks: enable clock gating for AR6004 card 563264 I0e23c45856355565534146f5fabb957fd4b1d007 mmc: block: Fix error path of mmc_blk_alloc_req() 501712 I82166b0ce9416eb0d519f7da26e5a96956093cb2 mmc: sdhci: Defer release of CPU DMA PM QoS vote in high I855e32f988ec1af475df6ed91f04618525e1a59f mmc: core: add checks for pointers before driver shutdow Ib832aef6eb9ef3941fbe9e73852929c835e97847 mmc: sdhci: Panic after dumping SDHC registers I36fb03b1ddf8e04ecc9fe449496b656db84e77d2 mmc: sdhci-msm: don't bug on PM QoS request counter goin 640424 I59a8d5f017243d8391269bc98998bb37fc44f685 mmc: sdhci-msm: fix issue with SD card tuning functional Ia2765c302bd16be5ee87c42629ff8f36b41242ca mmc: host: fix compilation issue when clk_gating config Idffd1247ec1275e782e1ad9eb91faa81bc3ba347 mmc: card: fix active data requests handling I8f2344a72acbd48df745cc9b2602fe4ac6f034d4 mmc: sdhci-msm: Fix issue with SD card detect GPIO I172e0e29a5584f02dd96c8af5ea1b97dc8c46083 mmc: cmdq_hci: Add atomic context support in certain cmd 439192 Ic7ba2f013d10a1952c30ea2ed93f74b831fcc27d mmc: card: abort the suspend if the card is busy Icbfb3b6560285fa0a0ce7e83eee66b651d4594a0 mmc: core: kick block queue after unhalting cmdq I8c77ca08dcf440293844120c1b59d2dada84bac5 mmc: sdhci: Handle cmdq_irq before clearing error interr Ida88f3999fd5e7d09ebe73bb3481d3f1f4cf30c2 mmc: sdhci-msm: set dma mask for lpae/64-bit machines Ic2e762d192f1fed8f94d4d2579d6a4b5d4c2c8b5 mmc: core: fix downdifferential for clock scaling Ide2b8050b56e858cda7bb22b4acf43b5bd3db786 mmc: sdhci-msm: enable partial initialization in resume I636dc933915127a43ad4da87a565f8f585e6df90 mmc: block: use pr_err_ratelimited for command errors I42366f7acdde022705f4b3dd06122d54ad817078 mmc: sdhci-msm: Fix incorrect flags passed during spin_u I31c4449dead1d4ad4e10a4822cce2298ec5fb4b6 mmc: core: cmdq helper for reset and claim host context 935717 Ie75ba225412d0fecce9c98f07334b570a6cd5772 mmc: block: fix partition switch failure observed during 536832 I6739de3eb5d9cccf8e39d9dc4730056782334162 mmc: sdhci: Use max timeout and skip timeout calculation If9bec799de77714d7183c812a0ba04a9a4ac48f5 mmc: Fix bus width setting in enhanced strobe mode I340cd784829f389f18df6bff664337aca0f3c867 mmc: sdhci: remove support for pm_qos I4e8530e72c8bf581ffaeed7d35d8b8c61d282ffa mmc: cmdq: trigger get queue status after dcmd I35def3ef6a260ebe78e92874ac121aca529f00cf mmc: block: Fix invalid data from freed request pointer 759398 Ic137ae2a28e912ab131644ff9d81e41f4256dd05 mmc: sdhci-msm: Correct the CDR toggle logic Ie2ad32106422bb5bdbf72b08d1ecdd74d9a93c19 mmc: sdhci-msm: configure adma descriptors for large req I961b090c814d9182aff11da7a3b090d9a84fc299 mmc: sdhci: Fix mmc_power_off sequence Idbca6ff3a420a954c61cf4fb79c9094542888d89 mmc: block: handle flush request timeout 981519 997757 Id81f8b70de64f291a8586150f4d2c7c8f8b4420f arm64: Add support for app specific settings 562259 I0182c216ec73347cdd2ea464f593839fffd242a9 mmc: block: check for NULL pointer before dereferencing 615537 I8e2950c3999ac3806f9d631c52d86f0dc13b992f mmc: sdhci: finish the request if sdhc is in bad state 424685 I4f1d76a6bfc4bfec16661aedba85c45b601f24ac mmc: sdio: fix sdio_reset_comm() to take care of UHS car Ib7a72a4bb9b901e32413acf440c925c4cd50a73d mmc: core: Update HS400 timing mode before performing tu I7aa4e2d3ba3383d25758b21b8ae261a0220f35f9 crypto: ice: Make ICE init & reset API synchronous I9a10d18d617102916526e994e9f9d22d2aa5446b mmc: cmdq_hci: Add Inline Crypto Engine (ICE) support I5fe4e998bc04bfd8f50de63f3beae3cb25f1c8ba mmc: core: fix shutdown in cmdq mode I7007a68232bfba76409e2dbae3060622fa5c1913 mmc: sdhci-msm: Correct usage of readl_poll_timeout() AP 1021445 Ieb8aca4dab96ee8bad7c5ad0a47f83e4316bf990 arm64: dma-mapping: Export arch_setup_dma_ops symbol 1017496 I4b09b7e9ee97129f952d737a530fc04205259f24 icnss: Export APIs for power on/off WLAN hardware I791d05f6b31d8f9b35a56fe85007b320c14e8b46 mmc: block: Add error handling to command queue host I3eb2dbb40c76ec77626f647d6ec24df4a0858fcb mmc: cmdq_hci: Fix ADMA error issue Ia71a5f1e278a039ba22f6ac42614d9ae79dba7e9 mmc: block: fix DCMD timeout err handling 787554 I3989d3f5b8228785e6d3bc49c7eb01ebf2fa2f38 mmc: add support for scheduling mmcqd on idle CPU I75211adee1179b0636a918f5ceb68a072ad02a6c mmc: sdhci: clear interrupt status during controller res I74c2877d5906ee9e2180fdb8d50167af6d03b3af mmc: sdhci-msm: Remove MMC_CAP2_ASYNC_SDIO_IRQ_4BIT_MODE Ie69c64f4dc0c31290dec50d905e8b3d436c86d62 mmc: block: add req pointer to mmc request I870eff40ea9fa91eedb4c0d2600c32d8534a3868 mmc: card: stop BKOPS in mmc_blk_cmdq_issue_rq I12446e094302f51853cc0c56a5c13b4a6a46d8cb mmc: core: Fix bustest timeout value I86dad94c77607b4e8f8fa67035323716f5eb197d mmc: core: disable clock scaling before system suspend 639538 Iba9cdd32470e29d35d3bb35012eb404b7c78d601 cfg80211: unblock user hint when cfg80211_regdom is inte If3d062bad4cf87c2543e6d5345f9ab6a0afa23bf mmc: cmdq_hci: Add DCMD response to mrq Iaaa4e57fba830d626fad693ff33dd966994bc50f mmc: sdhci: add post halt helper to support command queu Ia12917286a7d791e6a6ad826c0b7edd71c8694ae mmc: sdhci: Fix spinlock handling in sdhci_do_set_ios() Ie8cd0c2fb6c1bd6ab13883123be021081f8b8f78 mmc: sdhci: Add tracepoints to enhance debugging 345170 I3ab9288fd87cc8a8ada6c0c3d066cac4f68d79b7 mmc: core: capture performance numbers only when asked I21724a73af7b997e128b56a2600bdcb12e414996 mmc: sdhci-msm: Add retry mechanism in case of tuning fa I136ddea8e5ca57eb4f85ca6e72c60001a7e24f78 mmc: card: add read/write support in command queue mode Ia6c411f516bf27b8a5865109dcf4b290eb3d8e46 mmc: core: change test of auto_bkops configured 515513 I69880a72ece7730645dcfe699d58271d60cab33d mmc: sdhci: add auto command error interrupt support I3e081f2eff54d6932a89f826cc85c201c52ca840 mmc: sdhci-msm: Add support for hardware based card dete Id9be4fa95fd1cbbbe28a3c63b63bbd6c8c29fa85 mmc: sdhci-msm: Fix compatible list termination I0962d46d85415e77b978e1f7dd9f2f49446655bb mmc: sdhci-msm: Disable pm functionalities I742baa48eb3f6eccf782d77a03aafe16ab7188f1 mmc: cmdq-host: add post halt helper after halt ack inte 640344 I8c5ee817e3f116dedf0bf4fb51eb6b70d52467b7 mmc: core: Exit clock scaling prior to removing the card I0c5e6556d3d881f1a675db4fff4f995de024ddf8 mmc: queue: Check for CQE disable state Ic2b9beffdb555598bdc15b4b03c8adb78fbd0c2c mmc: host: add pad and tlmm configuration Iba0f0be314474e607a40383bc0b28eef66a31d63 mmc: core: Fix NULL pointer dereference issue with mmc_b I5d2b71fc4eabfa5060f343634fbc7363f2ee1344 mmc: sdhci-msm: add PM QoS legacy voting 957968 I755b0b5602345ad6bf557c6055b9057012de0797 mmc: sdhci-msm: Set sdio_pending_processing default stat I6044f65de55f3eb683747a09b1e20322342222c2 mmc: sd: fix SD card runtime suspend sequence for clock I65ec6ee464d658cd938d9254a0a748e6137f9223 mmc: host: add detect vops chain I6c424bed3158132af7f9c2a2a701af7369fd5ec7 mmc: core: dont send PON during suspend 1018090 I691984543f8beb3c52d3d578c7cc311c285a1fcc qcom-charger: smb2: allow vfloat and fcc via psy propert Ie8ea8ec57015f36689a119249003eeaa48391393 mmc: sdhci: add support nonhotplug 326610 I4ca88651f80f5a1bfccb6e0c07e3ea83fadcdc57 mmc: msm_sdcc: Fix deadlock in mmc_suspend_host and mmc_ I5aaddbb7bec1de7dbc959144dc2f1a5ad16789ff mmc: cmdq_hci: Add CQE WA for CQE HW bugs I7b9eab0d04a86dfeaf7565dcda8bc9d2035fe02d mmc: sdhci-msm: disable BKOPS feature 473435 I61f7463cf09648ad9fab83437abf5004effc7758 mmc: sdhci-msm: Ignore data timeout error for R1B comman 719303 Ifb8095763136bbc795227bdfcb346d1e1fae42c7 mmc: sdhci-msm: force 32bit ADMA descriptors I22e8ab04cd9aca220678784c39306068a0996790 mmc: block: Add write packing control 474518 Iee1241355d14e6bcebc66c3a43abf1ec94d869c3 mmc: sdhci-msm: Do not enable preset value I88a610ecbcc4036ac8ba99bc54706243b40db391 mmc: core: Fix mmc_set_ios w.r.t. error handling sequenc Iec9487fd73ecf2bdd5e62732cd42cdb3a639d0dc mmc: core: Fix error handling of MMC_BLK_DATA_ERR I761ba6a2e2974d955bb72ff993b1cc2c32c9ec29 mmc: card: fix race with shutdown handler Ie9c797589151bcfc17c7ddee33dd93d9ea683822 mmc: sdhci-msm: Fix clk gating on MSM8996-v2/v3 revision Ic8d696d53cf48290dbcc92f1567650989dd45755 mmc: sdhci_msm: keep a reference to the sdhc host instan Ifd986825c10f1475bfcdac37ea1f3b99e5f6daaf Revert "mmc: core: Remove the ->enable|disable() callbac I1e607329c4377897a7cb4086db02cbc150bd02b7 mmc: core: allow hosts to specify a large discard size I28a37917b49acde7f5d75bf9a639d0eb67a1c169 mmc: cmdq_hci: release runtime PM reference after halt/u 587284 I758f9e5ecf407aba371928a86c313cf69e3cda63 mmc: sdhci: do not use maximum timeout for all cards I58b647fb576c694aaa16c1e827d0784d4a5b4456 mmc: host: add support to allow SANITIZE operation Ie0fff6d6dba5aebb3584cba9fb98de24515c4cd8 mmc: core: Fix null pointer dereference due to race cond I0da3bd2e7d41e4933ad3b1333d7135705a1eafec mmc: core: fix issue with HPI polling timeout I52142d7a0262ca8927c7c1c509235ead676aac97 mmc: core: clock-scaling: scale only for data requests I1df1c5d7bbcd7b526236651077b7dade2626cb30 mmc: block: workaround for timeout issue with some vendo I4e4a87aebd24e5669b03a914c6e0f4b469f5ec7b mmc: sdhci-msm: fix register address change for DDR_CONF I658eecabfff074044b23c7c270c9101a34d37a45 mmc: queue: fix high power consumption I05dc8a4a760f658935de3831aaf8dd3b2b996466 mmc: sdhci-msm: Fix issue with power save bit enablement I60029bae67cebb2c91147ad741b96f4caed9c1d9 mmc: auto bkops fixes I8b4062f101085adadd66560f77b98b04d75cb836 mmc: sdhci: Add SW workarounds for HW bugs Icb14a3e997875e3ab094ef51a2307972d0788a89 mmc: sdhci-msm: Adjust host capabilities Ifdfff35309e8667cd2c2ac2761b9a708d5b785d3 mmc: core: Determine correct access mode for eMMC cards 568232 Ib6b8f41fd6ced9aa62c980d7e4a73469603cbc5b mmc: sdhci: Add support for pinctrl interface Ica46e30df24b4f95f457271087e1e03823ed2959 mmc: mmc_ops: Add retry mechanism to mmc_switch I308b0d6406631febe364d14de7551eb7f628cb40 mmc: clk-scaling: fix invalid state handling during cmdq I630091cbd94ffcdcec71626257f912c15fd2e21e mmc: block: add discard and secdiscard support for CMDQ I29c7b22848d3d728a79ba215f8d2f594d19fba63 mmc: sdhci: propagate error to command queue engine Ica0f10573d654021449c32197b126e12bb1a3c10 mmc: sdhci-msm: ignore data-end-bit error in 1 bit mode Idecff761754fe394c01425e7fd4dd5f6a083135d mmc: core: fix bkops init for cmdq I68b2f7989d68b51b4810346458e1966d45aee5a2 mmc: card: kick command queue thread on completion of RP 1022719 I200d0e9e8dad5047522cd02a68de25d4a70a91a4 Revert "sched: warn/panic upon excessive scheduling late Ia29ca4759ead2e4c9ea1d72908444a03bf205bac mmc: host: sdhci: don't set SDMA buffer boundary in ADMA I7cf22532af2b4048afccf07a5aeba89d808799f0 mmc: core: Use usleep_range for delays less than 20ms 503227 I86f32d68ec4c4799648785681c5776f090ea6e36 mmc: block: fix the block driver shutdown Ie275326627a84bfcd4352637a043296c01c175a6 mmc: sdhci: Fix possible spec. violation during voltage Ie7c38721b4f96d066260e7aeb01043a5a909ed01 mmc: sdhci-msm: Add missing register defines Ic334ce653bf13fef5969f08e19f6202377b8fd2e mmc: sdhci-msm: parse and configure TLMM iomem resource I3258eedf87b1bc945f43b85627948e6c92b74686 mmc: sdhci-msm: Reset vendor specific func register on p Icb71a8e74a9afdc70380a5901cd3d28931959e9c mmc: core: run clock scaling only in valid card state I096132bc715909b1ff2ac84448ec0adb32ca06ba mmc: fix MMC clock scaling to meet upstream HS400 implem Ide89eebbce5a193cd44a1ea4ec65403f98e2a7ab mmc: cmdq: configure task descriptor list base register 1023377 I159bca8278a1638286cc2392bb5b059e067dbb1b msm: mdss: Add support for IGC v3 feature Ic8d5c98073e8ed3f676eb42fc0ce1f13a11cb40f mmc: core: add wakeup functionality to sdio cards 1023377 I03fdf88c741135f83d1939952e76b7460229a284 msm: mdss: Update the default PP binding 1022671 Ibf30b1ea533ab7480950d3e255de74e2324561f5 ARM: dts: msm: enable SW power collapse for venus on msm Ib01b1984291682dad709a3e38500ad31e2d3e4bc mmc: sdhci: Call host ops set_clock when disabling clock I2d1456333f1d04f0e7a77485443b80a0ccaa3b4e mmc: core: ignore cmdq halt failure when no change is ne I40113ccf56050b3c46604112846e9b37b254d2be mmc: sdhci: Poll for register status much tightly 1022671 I5781532ca667424a00c74805cc1178910f476c9b ARM: dts: msm: Enable video interframe power collapse on I3b8b14ce2f741631ef7554e3763d1d7f145077a8 mmc: sdhci-msm: Read version register properly 1022139 Id2425041b14554d58f944794e1b5db273f5ded26 msm: thermal: Check clients request just after frequency I1e0fa7d3f8b54c102b4055f910b58a42412748da mmc: core: Add tracepoints to enhance pm debugging I1fdc633c218447c15c8caad24e2805e7510088f2 mmc: sdhci-msm: set core in proper mode before reset Iadce572fa4618b18f2fadf9e00812e75144af1c9 mmc: sdhci-msm: Free pltfm_host on probe defer Ib0bf945560107ec732e7ffeb7653d271d8d91c2f mmc: sdhci-msm: add support for fourth drive strength 313388 Ibf8ec6bc9eb7adff9bb6ac6af2a2f1af33a76bb8 mmc: Fixing few warning messages. 1022772 Ib694339fa9f7cca5e2882277bcc5888c4db9ecde defconfig: msmcortex: enable qseecom hdcp Iaf87bb069c3ffb13c9b3f174c07c25d612bdcee9 mmc: sdhci: Check device state before starting a request If0467855e23cb93e57a4581b375885136902835d mmc: sdhci-msm: Configure CMDEN_HS400_INPUT_MASK_CNT for I2e712f5d8f6ff8da9fdabe8cf30e378c560e067f mmc: sdio: Fix sdio_disable_wide to properly handle 8 bi I4c1fefd5bff753915c9858fb35c958335986c778 mmc: card: read the firmware version from ext_csd I6100a3c6c34ee4c965595e422f793b195a758a46 mmc: sdhci: Enable MMC_CAP_HW_RESET capability I733f98bdb99e54d6cd3a074fcece2c89aaaee12f mmc: Fix clock scaling for HS400 with enhanced strobe 583929 I5d69e37f6fd1f5249479d454c353be050df40b6d mmc: core: fix buffer overflow during memcpy of ext_csd I1b19a2ce4c124c96dc6c3852d8f58ad076851f4b mmc: sdhci-msm: add support for command-queue Iffba175787837e7f95bde8970f19d0f0f9d7d67d mmc: core: Fix clock frequency transitions during invali I1663891c367a59b520bc505641c6c4ddad56fd1a mmc: quirks: add support for quirks based on EXT_CSD_REV Ib6be6d563e47c2d2e9e1b6b0410c2c45712a9b17 mmc: sdhci: rate limit sdhci_dumpregs() prints I1e03c81bc6fee8266cf1c86bada015e548770d7a mmc: block: cmdq discard should use softirq completion p I68e5fca57ae5cbc154f5dd7001df368900cb3f57 mmc: core: support DDR52 bus-speed during eMMC clock sca I0fefe7eb9a578b5d897e7f4258f7c0221950509e mmc: sdhci-msm: Kconfig: select devfreq ondemand for sdh 1021009 I9242849d4da84007d1384de0e3e2bf63e7f57ea9 ARM: dts: msm: Add missing clocks for csid on msmcobalt I7f1465b609afed68886256bd605d4019716964f4 mmc: core: Add halt support I3ea8e9e498b25b75fb1f5ccc4ffe5f6986cd564a mmc: sdhci: clean up legacy adma related variables I7180c68c1f13240faa5f432335d72e7f6b198183 mmc: sdhci: Provide sysfs attributes to tune PM QoS unvo Ie644e24279ca30de42bbc9f8e1ae4326609d38a5 mmc: cmdq_hci: fix race between req completion and clear Iebdc7b1b22871bf845f10a55e2272816c72d9964 mmc: core: Attribute the IO wait time properly in mmc_wa I3895aabddce4dbecb208e3c522957e656f37e30d mmc: core: Add workaround for hosts that need addtional I126ae689f7fea2e7545dfda7c4c6abda286a0f11 mmc: queue: Fix pull new requests condition, when in cmd Ifc3dfbad59705db86c133b26baef0bc739a5dc30 mmc: sdhci-msm: Disable HS200 mode 935719 I6d2738b21c3cd44c8fb6c99f63291059d5b18ee1 mmc: core: fix debugfs path to read ext_csd Ie7acc50cb932a7b531434ebe72f78e2e7ad27408 mmc: sdhci-msm: Add calibration tuning for CDCLP533 circ I0ac0ffbd0e792a76931e21b321b39c35195ac8d6 mmc: sdhci: add support for configurable request size I804b0cfd77dec21d45016aafbbb001dafb050241 mmc: sdhci-msm: dump ICE registers also on error Ie95a3c631f519c7993b0032f0b674871b64e4cb6 mmc: block: add card device reference counting for CQ mo I7b3629b958e953bab66c32e6131b7fd577c7c9f2 mmc: sdhci-msm: move pwr_irq to sdhci_msm_host 1011072 I38bc0c80710038f135289420d6b20c1ff0ab06eb drivers: thermal: Read the mitigation frequency and noti Ia832da6341b3053f0e4825d711668a3642482221 mmc: relocation of print_mmc_packed_stats 866059 Ibd12c94ad691eca1fa3ea2049b750a6e98178678 mmc: core: set REL_WR_SEC_C register to 0x1 per eMMC5.0 Ic91bfdc93e117c5e627360a4d0ef80f661aa1b60 mmc: sdhci-msm: add MMC_PM_KEEP_POWER flag I1efee7f1c86e102364083e9158e4d45c887dd06e mmc: sdhci: add command queue support to sdhci I952b08667177272fdc30fea79b445f96a3fc2182 mmc: sdhci-msm: remove support for Qualcomm chipsets I44681f3c2fd0435bffa393abbbd1e8eacc5a07da mmc: core: remove shutdown handler I8a20653eeb6348d5b442c846708d92c8fb64a8e9 mmc: sdhci-msm: add PM QoS voting I53fd962fd7e04b5d2d7804c289d7865c2c5618d5 mmc: core: expose info about enhanced rpmb support Ia670bc901af2196a415c2aa54357704949a7b112 mmc: sdhci-msm: avoid using NOP ADMA descriptor for EOT I1003352cb31dfaec01fde352da7b879a13c94b3f mmc: enable Enhance Strobe for HS400 I1304fe0f01df493ead48bf9ff3c7baee5ab040d4 mmc: sdhci-msm: Add HS400 platform support 1023452 Icb92ab9a430d7c49d4aac2d7c53fc6179407d082 msm: ADSPRPC: Handle glink channel errors Ibb3a70575a06a5ffd1ccc3adaa96dfb3c3e22e3a mmc: sdhci-msm: Set MMC_CAP_WAIT_WHILE_BUSY capability I131b3d154adab29bef367c8ce31c2f2edd159fd2 mmc: core: fix possible clock gating issue during voltag I35a036c1a5585e3088301c07ade7d09ebd2cfc1b mmc: block: differentiate system suspend and shutdown fl Ic5b914cf6a5237ac51b2104453caba2c49c1efbc mmc: cmdq_hci: Fix issue with triggering queue status af I717a2de1261ed2de1a8c730b005b137f0687d969 mmc: card: fix quirk bit map Id8dadf03ef4226f7c4675fadbacac7bb15c0289e mmc: core: add partial initialization support I4e8eaf29c836a81419220f312ee867b0dd5cccc7 mmc: block: reduce the block timeout to 30 secs I64946d15d2f6ec8981e95c8817e82a2115b1196c mmc: sdhci: Add Inline Crypto Engine (ICE) support I9663830e7ccedf8bf7970d0724a4c7ce212073fd mmc: Add host ops for enhanced strobe 1020694 Id7faa0b6531ec787484ab17204a524858e6375dd clk: qcom: gdsc: Add support for hierarchical power doma 644221 Icff6db0d8fe17f01cf751896ae09aee215edc548 mmc: sdhci: Fix issue with host op card_event() Iab4833e80600c4ad89b16c76b52e917f885eea0e mmc: sdhci-msm: Add checks to know if card supports stro I20918a459e8b35ac666971b8ebf179f44aa9c40f mmc: host: Fix spinbug in performance sysfs nodes I78637dc787964ec5cafe297587d6a12ecf1d31c6 mmc: block: Add quirk and increase read data timeout for Ice2ba1e4d17ffde48b2f4d59801bb962f2e9aae7 mmc: cmdq_hci: Fix pm ref count handling on error scenar Ib683809faed8afc74bf0faff8636ead210013e6f mmc: card: disable cache for specific Kingston cards I916a5a414adb3f21dc3a75f3f86c3a81d6956dc8 mmc: sdhci-msm: Enable controller power save feature 1022772 Id5b275a6c7aabd835e94e2acd338dea14d2d8f57 defconfig: msmcortex: add hdmi support 979630 Ib38d1ce58e4195d4969e9a367b5738c8e598d0ba mmc: core: postpone runtime suspend in case BKOPS is req I92d893d1503396d4b00848813cc546fc263e77fd mmc: core: Add command queue initialzation support Ib0c177635bb8d87ba68c98e08b8d940c73f2b80c mmc: core: Export mmc_set_ios so that host drivers can u I25c4ee39dcbe30e7665902a9f723a5a421b55ca3 mmc: core: Log MMC clock frequency transitions Ia7af316800a6895942d3cabcd64600d56fab25a6 mmc: block: Add cache barrier support Id660db89dc531336621f40908fd3a4ad4777a12d mmc: clk-scaling: change locking from irq_save to bh Id49009736beb410ccb2535d614786a7c48098f85 mmc: sdhci-msm: Implement reset workaround and enable it I934e35de4c566c9ba351e39d6eab3d88ae61a4d0 sdhci: msm: add support for new vendor capabilities Ibeb0e6ab3d889d48fdee91244bec720a6994b907 mmc: core: add long read time fixup for certain Samsung I7c65bfe25a1f7774e3a9abf1f9539e690b3718ec mmc: Add profiling code to measure performance at MMC la If47d7f9ce250c46249c5ddc061d8b808100d2f94 mmc: card: re-run test because of timing issues Idb666680f99277ae509c642595821448c21b6c90 mmc: sdhci-msm: configure MMC_PM_KEEP_POWER for SDIO I9a21431b5fd9bb9bbcb5c18a9895096fe845e64b mmc: core: Fix null pointer dereference due to illegal m I9454d0d6997ccbd1778a147354859467f4a9a7d3 mmc: core: Add support to read command queue parameters 1024276 Iffdefa9536352dcaf411622b1d99b01b40100ce0 edac: cortex: Update the function name to reflect Kryo2x I36ead91ca8c9aeed967f120f8bdc3d2180af7746 mmc: cmdq_hci: Notify sdhci for enhanced strobe 567658 I2d66eae1581b9b136faaba4cafc330aeb6a3f364 mmc: sdhci: Turn on controller clocks and card power at I96ac0c1c7627e8e5c2d18782e2fc08608f0a7f91 Revert "mmc: core: Remove MMC_CLKGATE" I5b48d1b3ed17585b907ec70ff7c8d583003ec9e1 mmc: queue: initialization of command queue Id5a86bc70b7b798b23be3a0fc0d59b2db05e0409 mmc: sdhci-msm: enable asynchronous interrupt support in I0f4edba3da93fde28cf47ac95754a95e411fa2af mmc: block: add mmc_blk_disable_wr_packing() disables pa Idbd785da83e6ed00ede2b1b09529f7c81714ccf8 mmc: core: avoid returning error value for clk-scaling 284262 I6b58aab1865a93a025fd9912200ab0beea21be92 mmc: core: Claim host while freeing card I24fdca1b4562fd7c1f3a1584d1efccd94ed6698a mmc: block: Fix use after free issue with request pointe 516314 I020c61cb9dee56c0ebe37864e67e4753ddee1adc mmc: sdhci-msm: Enable auto-calibration using auto-cmd21 I39d31d5343d8aa453f29294e340e52d94bfd0ade mmc: sdhci: Add notify_load host->op I6d9d15a421225c5b4179cb19e467a17d01ad176f mmc: core: Add clock hold and release pair for cmdq_ops I37a03d9a75acf2ab3ebda57da87e246b449abf18 mmc: core: kick cmdq thread after suspend 583267 I072724afa44854dacc58654e6329531c1bb11120 mmc: queue: scale down the max_segs if memory allocation 733074 I91ea2b949c34446fb629446aabb21505734e27bb mmc: sdhci: Reset cmd err only for sbc commands Ifcd690411770ab266c12a01bb0993f92b0f18bc6 mmc: queue: add timeout capability to requests Ib84319aedfb49dc022bc27efbda842a5db38c7e9 mmc: core: Add MMC BKOPS statistics and debugfs ability I79b296bc4dff015dac76036c231d197748aa03cb mmc: sdhci-msm: enable 64-bit ADMA I01a8d4437f372abdf33230c34a73b5806e97188b mmc: block: Fix error handling of device attributes crea Ifb0a1f4b9508c5884d381401216ae6c1373bb7de mmc: cmdq: Set the timeout before unhalt Ia30757192e49865698c5f52940e1dc5d97746185 mmc: sdhci: Add timestamp debug info for data timeout er 683894 Id7de28b7b9222c35e6b419e416f72bd8f98cbaf8 mmc: sdhci-msm: configure CORE_CSR_CDC_DELAY_CFG to reco I88f668d7a6dd6403407ac8208265e4439b35173c mmc: queue: fix for system suspend flow for eMMC command I92fa8c2ef373fd8a9140dbfb41356684aaa28e4e mmc: sdhci-msm: skip eMMC slot probe if eMMC isn't a boo I26bf97962d31522a9cb25009c6a048dfff6e4535 mmc: core: Fix CQ runtime suspend I9eca350572fd88476dfee9642696a223c5cd7ada mmc: block: add support for partition switch Ief03926e0b9c6ff2f6335a422c576dd489fba9d5 mmc: sdhci-msm: Dont enable PWRSAVE_DLL for certain sdhc I45f0b2f1709361f41f7c38c57b95f692f8a0e486 mmc: sdhci-msm: add registration to pm core framework 491789 I24b8bfe44cee4367c22846747f439365d8795d2e ARM: dts: msm: Reduce the clocks for SD card slot for MS Change-Id: I434cc6d41eaf0183295af094a35b572cd7628cb0 CRs-Fixed: 439313, 997757, 766702, 1024276, 981387, 1001862, 563264, 1021009, 866059, 1022200, 548450, 516314, 1023377, 1023778, 1022750, 837631, 640424, 671153, 487962, 964435, 935717, 947299, 935719, 583267, 1023609, 1018000, 1022139, 1024245, 981519, 640344, 583929, 787554, 644221, 568232, 1023452, 480596, 364206, 625855, 498159, 1011072, 499579, 974940, 439192, 474518, 562259, 430138, 639538, 1021445, 326610, 615537, 567658, 568227, 470661, 759398, 1007860, 491789, 683894, 849567, 313388, 979630, 1017496, 957968, 501712, 493685, 953541, 284262, 1023864, 1005434, 1018090, 1022719, 1022671, 891366, 630894, 1020694, 770843, 1009740, 345170, 1018146, 587284, 719303, 1018875, 876453, 473435, 355347, 503227, 515513, 684185, 545716, 975505, 424685, 434831, 733074, 1022772, 536832, 589992, 507926
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/mm_types.h4
-rw-r--r--include/linux/mmc/card.h209
-rw-r--r--include/linux/mmc/core.h55
-rw-r--r--include/linux/mmc/host.h264
-rw-r--r--include/linux/mmc/mmc.h21
-rw-r--r--include/linux/mmc/sdio.h5
-rw-r--r--include/linux/sched/sysctl.h12
7 files changed, 547 insertions, 23 deletions
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index ea0009064bbc..9f9e60736eba 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -522,6 +522,10 @@ struct mm_struct {
#ifdef CONFIG_HUGETLB_PAGE
atomic_long_t hugetlb_usage;
#endif
+#ifdef CONFIG_MSM_APP_SETTINGS
+ int app_setting;
+#endif
+
};
static inline void mm_init_cpumask(struct mm_struct *mm)
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
index eb0151bac50c..e7578be38ddf 100644
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
@@ -12,7 +12,11 @@
#include <linux/device.h>
#include <linux/mmc/core.h>
+#include <linux/mmc/mmc.h>
#include <linux/mod_devicetable.h>
+#include <linux/notifier.h>
+
+#define MMC_CARD_CMDQ_BLK_SIZE 512
struct mmc_cid {
unsigned int manfid;
@@ -52,6 +56,7 @@ struct mmc_ext_csd {
u8 sec_feature_support;
u8 rel_sectors;
u8 rel_param;
+ bool enhanced_rpmb_supported;
u8 part_config;
u8 cache_ctrl;
u8 rst_n_function;
@@ -83,11 +88,13 @@ struct mmc_ext_csd {
bool hpi; /* HPI support bit */
unsigned int hpi_cmd; /* cmd used as HPI */
bool bkops; /* background support bit */
- bool man_bkops_en; /* manual bkops enable bit */
+ u8 bkops_en; /* bkops enable */
unsigned int data_sector_size; /* 512 bytes or 4KB */
unsigned int data_tag_unit_size; /* DATA TAG UNIT size */
unsigned int boot_ro_lock; /* ro lock support */
bool boot_ro_lockable;
+ u8 raw_ext_csd_cmdq; /* 15 */
+ u8 raw_ext_csd_cache_ctrl; /* 33 */
bool ffu_capable; /* Firmware upgrade support */
#define MMC_FIRMWARE_LEN 8
u8 fwrev[MMC_FIRMWARE_LEN]; /* FW version */
@@ -95,6 +102,10 @@ struct mmc_ext_csd {
u8 raw_partition_support; /* 160 */
u8 raw_rpmb_size_mult; /* 168 */
u8 raw_erased_mem_count; /* 181 */
+ u8 raw_ext_csd_bus_width; /* 183 */
+ u8 strobe_support; /* 184 */
+#define MMC_STROBE_SUPPORT (1 << 0)
+ u8 raw_ext_csd_hs_timing; /* 185 */
u8 raw_ext_csd_structure; /* 194 */
u8 raw_card_type; /* 196 */
u8 raw_driver_strength; /* 197 */
@@ -116,9 +127,15 @@ struct mmc_ext_csd {
u8 raw_pwr_cl_ddr_52_195; /* 238 */
u8 raw_pwr_cl_ddr_52_360; /* 239 */
u8 raw_pwr_cl_ddr_200_360; /* 253 */
+ u8 cache_flush_policy; /* 240 */
u8 raw_bkops_status; /* 246 */
u8 raw_sectors[4]; /* 212 - 4 bytes */
+ u8 cmdq_depth; /* 307 */
+ u8 cmdq_support; /* 308 */
+ u8 barrier_support; /* 486 */
+ u8 barrier_en;
+ u8 fw_version; /* 254 */
unsigned int feature_support;
#define MMC_DISCARD_FEATURE BIT(0) /* CMD38 feature */
};
@@ -189,7 +206,8 @@ struct sdio_cccr {
wide_bus:1,
high_power:1,
high_speed:1,
- disable_cd:1;
+ disable_cd:1,
+ async_intr_sup:1;
};
struct sdio_cis {
@@ -218,6 +236,28 @@ enum mmc_blk_status {
MMC_BLK_NEW_REQUEST,
};
+enum mmc_packed_stop_reasons {
+ EXCEEDS_SEGMENTS = 0,
+ EXCEEDS_SECTORS,
+ WRONG_DATA_DIR,
+ FLUSH_OR_DISCARD,
+ EMPTY_QUEUE,
+ REL_WRITE,
+ THRESHOLD,
+ LARGE_SEC_ALIGN,
+ RANDOM,
+ FUA,
+ MAX_REASONS,
+};
+
+struct mmc_wr_pack_stats {
+ u32 *packing_events;
+ u32 pack_stop_reason[MAX_REASONS];
+ spinlock_t lock;
+ bool enabled;
+ bool print_in_read;
+};
+
/* The number of MMC physical partitions. These consist of:
* boot partitions (2), general purpose partitions (4) and
* RPMB partition (1) in MMC v4.4.
@@ -242,6 +282,62 @@ struct mmc_part {
#define MMC_BLK_DATA_AREA_RPMB (1<<3)
};
+enum {
+ MMC_BKOPS_NO_OP,
+ MMC_BKOPS_NOT_CRITICAL,
+ MMC_BKOPS_PERF_IMPACT,
+ MMC_BKOPS_CRITICAL,
+ MMC_BKOPS_NUM_SEVERITY_LEVELS,
+};
+
+/**
+ * struct mmc_bkops_stats - BKOPS statistics
+ * @lock: spinlock used for synchronizing the debugfs and the runtime accesses
+ * to this structure. No need to call with spin_lock_irq api
+ * @manual_start: number of times START_BKOPS was sent to the device
+ * @hpi: number of times HPI was sent to the device
+ * @auto_start: number of times AUTO_EN was set to 1
+ * @auto_stop: number of times AUTO_EN was set to 0
+ * @level: number of times the device reported the need for each level of
+ * bkops handling
+ * @enabled: control over whether statistics should be gathered
+ *
+ * This structure is used to collect statistics regarding the bkops
+ * configuration and use-patterns. It is collected during runtime and can be
+ * shown to the user via a debugfs entry.
+ */
+struct mmc_bkops_stats {
+ spinlock_t lock;
+ unsigned int manual_start;
+ unsigned int hpi;
+ unsigned int auto_start;
+ unsigned int auto_stop;
+ unsigned int level[MMC_BKOPS_NUM_SEVERITY_LEVELS];
+ bool enabled;
+};
+
+/**
+ * struct mmc_bkops_info - BKOPS data
+ * @stats: statistic information regarding bkops
+ * @needs_check: indication whether need to check with the device
+ * whether it requires handling of BKOPS (CMD8)
+ * @needs_manual: indication whether have to send START_BKOPS
+ * to the device
+ */
+struct mmc_bkops_info {
+ struct mmc_bkops_stats stats;
+ bool needs_check;
+ bool needs_bkops;
+ u32 retry_counter;
+};
+
+enum mmc_pon_type {
+ MMC_LONG_PON = 1,
+ MMC_SHRT_PON,
+};
+
+#define MMC_QUIRK_CMDQ_DELAY_BEFORE_DCMD 6 /* microseconds */
+
/*
* MMC device
*/
@@ -249,6 +345,10 @@ struct mmc_card {
struct mmc_host *host; /* the host this device belongs to */
struct device dev; /* the device */
u32 ocr; /* the current OCR setting */
+ unsigned long clk_scaling_lowest; /* lowest scaleable
+ * frequency */
+ unsigned long clk_scaling_highest; /* highest scaleable
+ * frequency */
unsigned int rca; /* relative card address of device */
unsigned int type; /* card type */
#define MMC_TYPE_MMC 0 /* MMC card */
@@ -261,14 +361,17 @@ struct mmc_card {
#define MMC_STATE_BLOCKADDR (1<<2) /* card uses block-addressing */
#define MMC_CARD_SDXC (1<<3) /* card is SDXC */
#define MMC_CARD_REMOVED (1<<4) /* card has been removed */
-#define MMC_STATE_DOING_BKOPS (1<<5) /* card is doing BKOPS */
+#define MMC_STATE_DOING_BKOPS (1<<5) /* card is doing manual BKOPS */
#define MMC_STATE_SUSPENDED (1<<6) /* card is suspended */
+#define MMC_STATE_CMDQ (1<<12) /* card is in cmd queue mode */
+#define MMC_STATE_AUTO_BKOPS (1<<13) /* card is doing auto BKOPS */
unsigned int quirks; /* card quirks */
#define MMC_QUIRK_LENIENT_FN0 (1<<0) /* allow SDIO FN0 writes outside of the VS CCCR range */
#define MMC_QUIRK_BLKSZ_FOR_BYTE_MODE (1<<1) /* use func->cur_blksize */
/* for byte mode */
#define MMC_QUIRK_NONSTD_SDIO (1<<2) /* non-standard SDIO card attached */
/* (missing CIA registers) */
+#define MMC_QUIRK_BROKEN_CLK_GATING (1<<3) /* clock gating the sdio bus will make card fail */
#define MMC_QUIRK_NONSTD_FUNC_IF (1<<4) /* SDIO card has nonstd function interfaces */
#define MMC_QUIRK_DISABLE_CD (1<<5) /* disconnect CD/DAT[3] resistor */
#define MMC_QUIRK_INAND_CMD38 (1<<6) /* iNAND devices have broken CMD38 */
@@ -279,7 +382,17 @@ struct mmc_card {
#define MMC_QUIRK_SEC_ERASE_TRIM_BROKEN (1<<10) /* Skip secure for erase/trim */
#define MMC_QUIRK_BROKEN_IRQ_POLLING (1<<11) /* Polling SDIO_CCCR_INTx could create a fake interrupt */
#define MMC_QUIRK_TRIM_BROKEN (1<<12) /* Skip trim */
+ /* byte mode */
+#define MMC_QUIRK_INAND_DATA_TIMEOUT (1<<13) /* For incorrect data timeout */
+#define MMC_QUIRK_BROKEN_HPI (1 << 14) /* For devices which gets */
+ /* broken due to HPI feature */
+#define MMC_QUIRK_CACHE_DISABLE (1 << 15) /* prevent cache enable */
+#define MMC_QUIRK_QCA6574_SETTINGS (1 << 16) /* QCA6574 card settings*/
+#define MMC_QUIRK_QCA9377_SETTINGS (1 << 17) /* QCA9377 card settings*/
+
+/* Make sure CMDQ is empty before queuing DCMD */
+#define MMC_QUIRK_CMDQ_EMPTY_BEFORE_DCMD (1 << 17)
unsigned int erase_size; /* erase size in sectors */
unsigned int erase_shift; /* if erase unit is power 2 */
@@ -313,6 +426,14 @@ struct mmc_card {
struct dentry *debugfs_root;
struct mmc_part part[MMC_NUM_PHY_PARTITION]; /* physical partitions */
unsigned int nr_parts;
+ unsigned int part_curr;
+
+ struct mmc_wr_pack_stats wr_pack_stats; /* packed commands stats*/
+ struct notifier_block reboot_notify;
+ enum mmc_pon_type pon_type;
+ u8 *cached_ext_csd;
+ bool cmdq_init;
+ struct mmc_bkops_info bkops;
};
/*
@@ -353,19 +474,43 @@ struct mmc_fixup {
/* SDIO-specfic fields. You can use SDIO_ANY_ID here of course */
u16 cis_vendor, cis_device;
+ /* MMC-specific field, You can use EXT_CSD_REV_ANY here of course */
+ unsigned int ext_csd_rev;
+
void (*vendor_fixup)(struct mmc_card *card, int data);
int data;
};
+#define CID_MANFID_SANDISK 0x2
+#define CID_MANFID_TOSHIBA 0x11
+#define CID_MANFID_MICRON 0x13
+#define CID_MANFID_SAMSUNG 0x15
+#define CID_MANFID_KINGSTON 0x70
+#define CID_MANFID_HYNIX 0x90
+
#define CID_MANFID_ANY (-1u)
#define CID_OEMID_ANY ((unsigned short) -1)
#define CID_NAME_ANY (NULL)
+#define EXT_CSD_REV_ANY (-1u)
#define END_FIXUP { NULL }
+/* extended CSD mapping to mmc version */
+enum mmc_version_ext_csd_rev {
+ MMC_V4_0,
+ MMC_V4_1,
+ MMC_V4_2,
+ MMC_V4_41 = 5,
+ MMC_V4_5,
+ MMC_V4_51 = MMC_V4_5,
+ MMC_V5_0,
+ MMC_V5_01 = MMC_V5_0,
+ MMC_V5_1
+};
+
#define _FIXUP_EXT(_name, _manfid, _oemid, _rev_start, _rev_end, \
_cis_vendor, _cis_device, \
- _fixup, _data) \
+ _fixup, _data, _ext_csd_rev) \
{ \
.name = (_name), \
.manfid = (_manfid), \
@@ -376,23 +521,30 @@ struct mmc_fixup {
.cis_device = (_cis_device), \
.vendor_fixup = (_fixup), \
.data = (_data), \
+ .ext_csd_rev = (_ext_csd_rev), \
}
#define MMC_FIXUP_REV(_name, _manfid, _oemid, _rev_start, _rev_end, \
- _fixup, _data) \
+ _fixup, _data, _ext_csd_rev) \
_FIXUP_EXT(_name, _manfid, \
_oemid, _rev_start, _rev_end, \
SDIO_ANY_ID, SDIO_ANY_ID, \
- _fixup, _data) \
+ _fixup, _data, _ext_csd_rev) \
#define MMC_FIXUP(_name, _manfid, _oemid, _fixup, _data) \
- MMC_FIXUP_REV(_name, _manfid, _oemid, 0, -1ull, _fixup, _data)
+ MMC_FIXUP_REV(_name, _manfid, _oemid, 0, -1ull, _fixup, _data, \
+ EXT_CSD_REV_ANY)
+
+#define MMC_FIXUP_EXT_CSD_REV(_name, _manfid, _oemid, _fixup, _data, \
+ _ext_csd_rev) \
+ MMC_FIXUP_REV(_name, _manfid, _oemid, 0, -1ull, _fixup, _data, \
+ _ext_csd_rev)
#define SDIO_FIXUP(_vendor, _device, _fixup, _data) \
_FIXUP_EXT(CID_NAME_ANY, CID_MANFID_ANY, \
CID_OEMID_ANY, 0, -1ull, \
_vendor, _device, \
- _fixup, _data) \
+ _fixup, _data, EXT_CSD_REV_ANY) \
#define cid_rev(hwrev, fwrev, year, month) \
(((u64) hwrev) << 40 | \
@@ -431,6 +583,8 @@ static inline void __maybe_unused remove_quirk(struct mmc_card *card, int data)
#define mmc_card_removed(c) ((c) && ((c)->state & MMC_CARD_REMOVED))
#define mmc_card_doing_bkops(c) ((c)->state & MMC_STATE_DOING_BKOPS)
#define mmc_card_suspended(c) ((c)->state & MMC_STATE_SUSPENDED)
+#define mmc_card_cmdq(c) ((c)->state & MMC_STATE_CMDQ)
+#define mmc_card_doing_auto_bkops(c) ((c)->state & MMC_STATE_AUTO_BKOPS)
#define mmc_card_set_present(c) ((c)->state |= MMC_STATE_PRESENT)
#define mmc_card_set_readonly(c) ((c)->state |= MMC_STATE_READONLY)
@@ -441,6 +595,12 @@ static inline void __maybe_unused remove_quirk(struct mmc_card *card, int data)
#define mmc_card_clr_doing_bkops(c) ((c)->state &= ~MMC_STATE_DOING_BKOPS)
#define mmc_card_set_suspended(c) ((c)->state |= MMC_STATE_SUSPENDED)
#define mmc_card_clr_suspended(c) ((c)->state &= ~MMC_STATE_SUSPENDED)
+#define mmc_card_set_cmdq(c) ((c)->state |= MMC_STATE_CMDQ)
+#define mmc_card_clr_cmdq(c) ((c)->state &= ~MMC_STATE_CMDQ)
+#define mmc_card_set_auto_bkops(c) ((c)->state |= MMC_STATE_AUTO_BKOPS)
+#define mmc_card_clr_auto_bkops(c) ((c)->state &= ~MMC_STATE_AUTO_BKOPS)
+
+#define mmc_card_strobe(c) (((c)->ext_csd).strobe_support & MMC_STROBE_SUPPORT)
/*
* Quirk add/remove for MMC products.
@@ -511,10 +671,37 @@ static inline int mmc_card_broken_irq_polling(const struct mmc_card *c)
return c->quirks & MMC_QUIRK_BROKEN_IRQ_POLLING;
}
+static inline bool mmc_card_support_auto_bkops(const struct mmc_card *c)
+{
+ return c->ext_csd.rev >= MMC_V5_1;
+}
+
+static inline bool mmc_card_configured_manual_bkops(const struct mmc_card *c)
+{
+ return c->ext_csd.bkops_en & EXT_CSD_BKOPS_MANUAL_EN;
+}
+
+static inline bool mmc_card_configured_auto_bkops(const struct mmc_card *c)
+{
+ return c->ext_csd.bkops_en & EXT_CSD_BKOPS_AUTO_EN;
+}
+
+static inline bool mmc_enable_qca6574_settings(const struct mmc_card *c)
+{
+ return c->quirks & MMC_QUIRK_QCA6574_SETTINGS;
+}
+
+static inline bool mmc_enable_qca9377_settings(const struct mmc_card *c)
+{
+ return c->quirks & MMC_QUIRK_QCA9377_SETTINGS;
+}
+
#define mmc_card_name(c) ((c)->cid.prod_name)
#define mmc_card_id(c) (dev_name(&(c)->dev))
#define mmc_dev_to_card(d) container_of(d, struct mmc_card, dev)
+#define mmc_get_drvdata(c) dev_get_drvdata(&(c)->dev)
+#define mmc_set_drvdata(c,d) dev_set_drvdata(&(c)->dev, d)
/*
* MMC device driver (e.g., Flash card, I/O card...)
@@ -531,5 +718,9 @@ extern void mmc_unregister_driver(struct mmc_driver *);
extern void mmc_fixup_device(struct mmc_card *card,
const struct mmc_fixup *table);
-
+extern struct mmc_wr_pack_stats *mmc_blk_get_packed_statistics(
+ struct mmc_card *card);
+extern void mmc_blk_init_packed_statistics(struct mmc_card *card);
+extern int mmc_send_pon(struct mmc_card *card);
+extern void mmc_blk_cmdq_req_done(struct mmc_request *mrq);
#endif /* LINUX_MMC_CARD_H */
diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h
index f7b930b735fc..89efaa67cc59 100644
--- a/include/linux/mmc/core.h
+++ b/include/linux/mmc/core.h
@@ -67,6 +67,8 @@ struct mmc_command {
unsigned int busy_timeout; /* busy detect timeout in ms */
/* Set this flag only for blocking sanitize request */
bool sanitize_busy;
+ /* Set this flag only for blocking bkops request */
+ bool bkops_busy;
struct mmc_data *data; /* data segment associated with cmd */
struct mmc_request *mrq; /* associated request */
@@ -93,6 +95,7 @@ struct mmc_data {
int sg_count; /* mapped sg entries */
struct scatterlist *sg; /* I/O scatter list */
s32 host_cookie; /* host private data */
+ bool fault_injected; /* fault injected */
};
struct mmc_host;
@@ -105,10 +108,43 @@ struct mmc_request {
struct completion completion;
void (*done)(struct mmc_request *);/* completion function */
struct mmc_host *host;
+ struct mmc_cmdq_req *cmdq_req;
+ struct request *req;
+};
+
+struct mmc_bus_ops {
+ void (*remove)(struct mmc_host *);
+ void (*detect)(struct mmc_host *);
+ int (*pre_suspend)(struct mmc_host *);
+ int (*suspend)(struct mmc_host *);
+ int (*resume)(struct mmc_host *);
+ int (*runtime_suspend)(struct mmc_host *);
+ int (*runtime_resume)(struct mmc_host *);
+ int (*runtime_idle)(struct mmc_host *);
+ int (*power_save)(struct mmc_host *);
+ int (*power_restore)(struct mmc_host *);
+ int (*alive)(struct mmc_host *);
+ int (*shutdown)(struct mmc_host *);
+ int (*reset)(struct mmc_host *);
+ int (*change_bus_speed)(struct mmc_host *, unsigned long *);
};
struct mmc_card;
struct mmc_async_req;
+struct mmc_cmdq_req;
+
+extern int mmc_cmdq_discard_queue(struct mmc_host *host, u32 tasks);
+extern int mmc_cmdq_halt(struct mmc_host *host, bool enable);
+extern int mmc_cmdq_halt_on_empty_queue(struct mmc_host *host);
+extern void mmc_cmdq_post_req(struct mmc_host *host, int tag, int err);
+extern int mmc_cmdq_start_req(struct mmc_host *host,
+ struct mmc_cmdq_req *cmdq_req);
+extern int mmc_cmdq_prepare_flush(struct mmc_command *cmd);
+extern int mmc_cmdq_wait_for_dcmd(struct mmc_host *host,
+ struct mmc_cmdq_req *cmdq_req);
+extern int mmc_cmdq_erase(struct mmc_cmdq_req *cmdq_req,
+ struct mmc_card *card, unsigned int from, unsigned int nr,
+ unsigned int arg);
extern int mmc_stop_bkops(struct mmc_card *);
extern int mmc_read_bkops_status(struct mmc_card *);
@@ -120,10 +156,15 @@ extern int mmc_wait_for_cmd(struct mmc_host *, struct mmc_command *, int);
extern int mmc_app_cmd(struct mmc_host *, struct mmc_card *);
extern int mmc_wait_for_app_cmd(struct mmc_host *, struct mmc_card *,
struct mmc_command *, int);
-extern void mmc_start_bkops(struct mmc_card *card, bool from_exception);
+extern void mmc_check_bkops(struct mmc_card *card);
+extern void mmc_start_manual_bkops(struct mmc_card *card);
extern int mmc_switch(struct mmc_card *, u8, u8, u8, unsigned int);
+extern int __mmc_switch_cmdq_mode(struct mmc_command *cmd, u8 set, u8 index,
+ u8 value, unsigned int timeout_ms,
+ bool use_busy_signal, bool ignore_timeout);
extern int mmc_send_tuning(struct mmc_host *host, u32 opcode, int *cmd_error);
extern int mmc_get_ext_csd(struct mmc_card *card, u8 **new_ext_csd);
+extern int mmc_set_auto_bkops(struct mmc_card *card, bool enable);
#define MMC_ERASE_ARG 0x00000000
#define MMC_SECURE_ERASE_ARG 0x80000000
@@ -150,6 +191,7 @@ extern int mmc_set_blocklen(struct mmc_card *card, unsigned int blocklen);
extern int mmc_set_blockcount(struct mmc_card *card, unsigned int blockcount,
bool is_rel_write);
extern int mmc_hw_reset(struct mmc_host *host);
+extern int mmc_cmdq_hw_reset(struct mmc_host *host);
extern int mmc_can_reset(struct mmc_card *card);
extern void mmc_set_data_timeout(struct mmc_data *, const struct mmc_card *);
@@ -160,11 +202,22 @@ extern void mmc_release_host(struct mmc_host *host);
extern void mmc_get_card(struct mmc_card *card);
extern void mmc_put_card(struct mmc_card *card);
+extern void __mmc_put_card(struct mmc_card *card);
+extern void mmc_set_ios(struct mmc_host *host);
extern int mmc_flush_cache(struct mmc_card *);
+extern int mmc_cache_barrier(struct mmc_card *);
extern int mmc_detect_card_removed(struct mmc_host *host);
+extern void mmc_blk_init_bkops_statistics(struct mmc_card *card);
+
+extern void mmc_deferred_scaling(struct mmc_host *host);
+extern void mmc_cmdq_clk_scaling_start_busy(struct mmc_host *host,
+ bool lock_needed);
+extern void mmc_cmdq_clk_scaling_stop_busy(struct mmc_host *host,
+ bool lock_needed, bool is_cmdq_dcmd);
+
/**
* mmc_claim_host - exclusively claim a host
* @host: mmc host to claim
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
index 40025b28c1fb..4438833ca935 100644
--- a/include/linux/mmc/host.h
+++ b/include/linux/mmc/host.h
@@ -15,14 +15,19 @@
#include <linux/timer.h>
#include <linux/sched.h>
#include <linux/device.h>
+#include <linux/devfreq.h>
#include <linux/fault-inject.h>
#include <linux/mmc/core.h>
#include <linux/mmc/card.h>
#include <linux/mmc/pm.h>
+#define MMC_AUTOSUSPEND_DELAY_MS 3000
+
struct mmc_ios {
unsigned int clock; /* clock rate */
+ unsigned int old_rate; /* saved clock rate */
+ unsigned long clk_ts; /* time stamp of last updated clock */
unsigned short vdd;
/* vdd stores the bit number of the selected voltage range from below. */
@@ -79,7 +84,31 @@ struct mmc_ios {
#define MMC_SET_DRIVER_TYPE_D 3
};
+/* states to represent load on the host */
+enum mmc_load {
+ MMC_LOAD_HIGH,
+ MMC_LOAD_LOW,
+};
+
+struct mmc_cmdq_host_ops {
+ int (*init)(struct mmc_host *host);
+ int (*enable)(struct mmc_host *host);
+ void (*disable)(struct mmc_host *host, bool soft);
+ int (*request)(struct mmc_host *host, struct mmc_request *mrq);
+ void (*post_req)(struct mmc_host *host, int tag, int err);
+ int (*halt)(struct mmc_host *host, bool halt);
+ void (*reset)(struct mmc_host *host, bool soft);
+ void (*dumpstate)(struct mmc_host *host);
+};
+
struct mmc_host_ops {
+ int (*init)(struct mmc_host *host);
+ /*
+ * 'enable' is called when the host is claimed and 'disable' is called
+ * when the host is released. 'enable' and 'disable' are deprecated.
+ */
+ int (*enable)(struct mmc_host *host);
+ int (*disable)(struct mmc_host *host);
/*
* It is optional for the host to implement pre_req and post_req in
* order to support double buffering of requests (prepare one
@@ -132,6 +161,7 @@ struct mmc_host_ops {
/* Prepare HS400 target operating frequency depending host driver */
int (*prepare_hs400_tuning)(struct mmc_host *host, struct mmc_ios *ios);
+ int (*enhanced_strobe)(struct mmc_host *host);
int (*select_drive_strength)(struct mmc_card *card,
unsigned int max_dtr, int host_drv,
int card_drv, int *drv_type);
@@ -144,11 +174,42 @@ struct mmc_host_ops {
*/
int (*multi_io_quirk)(struct mmc_card *card,
unsigned int direction, int blk_size);
+
+ unsigned long (*get_max_frequency)(struct mmc_host *host);
+ unsigned long (*get_min_frequency)(struct mmc_host *host);
+
+ int (*notify_load)(struct mmc_host *, enum mmc_load);
+ void (*notify_halt)(struct mmc_host *mmc, bool halt);
+ void (*force_err_irq)(struct mmc_host *host, u64 errmask);
};
struct mmc_card;
struct device;
+struct mmc_cmdq_req {
+ unsigned int cmd_flags;
+ u32 blk_addr;
+ /* active mmc request */
+ struct mmc_request mrq;
+ struct mmc_data data;
+ struct mmc_command cmd;
+#define DCMD (1 << 0)
+#define QBR (1 << 1)
+#define DIR (1 << 2)
+#define PRIO (1 << 3)
+#define REL_WR (1 << 4)
+#define DAT_TAG (1 << 5)
+#define FORCED_PRG (1 << 6)
+ unsigned int cmdq_req_flags;
+
+ unsigned int resp_idx;
+ unsigned int resp_arg;
+ unsigned int dev_pend_tasks;
+ bool resp_err;
+ int tag; /* used for command queuing */
+ u8 ctx_id;
+};
+
struct mmc_async_req {
/* active mmc request */
struct mmc_request *mrq;
@@ -175,6 +236,33 @@ struct mmc_slot {
void *handler_priv;
};
+
+/**
+ * mmc_cmdq_context_info - describes the contexts of cmdq
+ * @active_reqs requests being processed
+ * @data_active_reqs data requests being processed
+ * @curr_state state of cmdq engine
+ * @cmdq_ctx_lock acquire this before accessing this structure
+ * @queue_empty_wq workqueue for waiting for all
+ * the outstanding requests to be completed
+ * @wait waiting for all conditions described in
+ * mmc_cmdq_ready_wait to be satisified before
+ * issuing the new request to LLD.
+ */
+struct mmc_cmdq_context_info {
+ unsigned long active_reqs; /* in-flight requests */
+ unsigned long data_active_reqs; /* in-flight data requests */
+ unsigned long curr_state;
+#define CMDQ_STATE_ERR 0
+#define CMDQ_STATE_DCMD_ACTIVE 1
+#define CMDQ_STATE_HALT 2
+#define CMDQ_STATE_CQ_DISABLE 3
+#define CMDQ_STATE_REQ_TIMED_OUT 4
+ wait_queue_head_t queue_empty_wq;
+ wait_queue_head_t wait;
+ int active_small_sector_read_reqs;
+};
+
/**
* mmc_context_info - synchronization details for mmc context
* @is_done_rcv wake up reason was done request
@@ -199,11 +287,68 @@ struct mmc_supply {
struct regulator *vqmmc; /* Optional Vccq supply */
};
+enum dev_state {
+ DEV_SUSPENDING = 1,
+ DEV_SUSPENDED,
+ DEV_RESUMED,
+};
+
+/**
+ * struct mmc_devfeq_clk_scaling - main context for MMC clock scaling logic
+ *
+ * @lock: spinlock to protect statistics
+ * @devfreq: struct that represent mmc-host as a client for devfreq
+ * @devfreq_profile: MMC device profile, mostly polling interval and callbacks
+ * @ondemand_gov_data: struct supplied to ondemmand governor (thresholds)
+ * @state: load state, can be HIGH or LOW. used to notify mmc_host_ops callback
+ * @start_busy: timestamped armed once a data request is started
+ * @measure_interval_start: timestamped armed once a measure interval started
+ * @devfreq_abort: flag to sync between different contexts relevant to devfreq
+ * @skip_clk_scale_freq_update: flag that enable/disable frequency change
+ * @freq_table_sz: table size of frequencies supplied to devfreq
+ * @freq_table: frequencies table supplied to devfreq
+ * @curr_freq: current frequency
+ * @polling_delay_ms: polling interval for status collection used by devfreq
+ * @upthreshold: up-threshold supplied to ondemand governor
+ * @downthreshold: down-threshold supplied to ondemand governor
+ * @need_freq_change: flag indicating if a frequency change is required
+ * @clk_scaling_in_progress: flag indicating if there's ongoing frequency change
+ * @is_busy_started: flag indicating if a request is handled by the HW
+ * @enable: flag indicating if the clock scaling logic is enabled for this host
+ */
+struct mmc_devfeq_clk_scaling {
+ spinlock_t lock;
+ struct devfreq *devfreq;
+ struct devfreq_dev_profile devfreq_profile;
+ struct devfreq_simple_ondemand_data ondemand_gov_data;
+ enum mmc_load state;
+ ktime_t start_busy;
+ ktime_t measure_interval_start;
+ atomic_t devfreq_abort;
+ bool skip_clk_scale_freq_update;
+ int freq_table_sz;
+ u32 *freq_table;
+ unsigned long total_busy_time_us;
+ unsigned long target_freq;
+ unsigned long curr_freq;
+ unsigned long polling_delay_ms;
+ unsigned int upthreshold;
+ unsigned int downthreshold;
+ unsigned int lower_bus_speed_mode;
+#define MMC_SCALING_LOWER_DDR52_MODE 1
+ bool need_freq_change;
+ bool clk_scaling_in_progress;
+ bool is_busy_started;
+ bool enable;
+};
+
struct mmc_host {
struct device *parent;
struct device class_dev;
+ struct mmc_devfeq_clk_scaling clk_scaling;
int index;
const struct mmc_host_ops *ops;
+ const struct mmc_cmdq_host_ops *cmdq_ops;
struct mmc_pwrseq *pwrseq;
unsigned int f_min;
unsigned int f_max;
@@ -289,9 +434,33 @@ struct mmc_host {
#define MMC_CAP2_HSX00_1_2V (MMC_CAP2_HS200_1_2V_SDR | MMC_CAP2_HS400_1_2V)
#define MMC_CAP2_SDIO_IRQ_NOTHREAD (1 << 17)
#define MMC_CAP2_NO_WRITE_PROTECT (1 << 18) /* No physical write protect pin, assume that card is always read-write */
+#define MMC_CAP2_PACKED_WR_CONTROL (1 << 19) /* Allow write packing control */
+#define MMC_CAP2_CLK_SCALE (1 << 20) /* Allow dynamic clk scaling */
+/* Allows Asynchronous SDIO irq while card is in 4-bit mode */
+#define MMC_CAP2_ASYNC_SDIO_IRQ_4BIT_MODE (1 << 21)
+/* Some hosts need additional tuning */
+#define MMC_CAP2_HS400_POST_TUNING (1 << 22)
+#define MMC_CAP2_NONHOTPLUG (1 << 25) /*Don't support hotplug*/
+#define MMC_CAP2_CMD_QUEUE (1 << 26) /* support eMMC command queue */
+#define MMC_CAP2_SANITIZE (1 << 27) /* Support Sanitize */
+#define MMC_CAP2_SLEEP_AWAKE (1 << 28) /* Use Sleep/Awake (CMD5) */
+/* use max discard ignoring max_busy_timeout parameter */
+#define MMC_CAP2_MAX_DISCARD_SIZE (1 << 29)
mmc_pm_flag_t pm_caps; /* supported pm features */
+#ifdef CONFIG_MMC_CLKGATE
+ int clk_requests; /* internal reference counter */
+ unsigned int clk_delay; /* number of MCI clk hold cycles */
+ bool clk_gated; /* clock gated */
+ struct delayed_work clk_gate_work; /* delayed clock gate */
+ unsigned int clk_old; /* old clock value cache */
+ spinlock_t clk_lock; /* lock for clk fields */
+ struct mutex clk_gate_mutex; /* mutex for clock gating */
+ struct device_attribute clkgate_delay_attr;
+ unsigned long clkgate_delay;
+#endif
+
/* host specific block data */
unsigned int max_seg_size; /* see blk_queue_max_segment_size */
unsigned short max_segs; /* see blk_queue_max_segments */
@@ -305,6 +474,7 @@ struct mmc_host {
spinlock_t lock; /* lock for claim and bus ops */
struct mmc_ios ios; /* current io bus settings */
+ struct mmc_ios cached_ios;
/* group bitfields together to minimize padding */
unsigned int use_spi_crc:1;
@@ -331,6 +501,7 @@ struct mmc_host {
wait_queue_head_t wq;
struct task_struct *claimer; /* task that has host claimed */
+ struct task_struct *suspend_task;
int claim_cnt; /* "claim" nesting count */
struct delayed_work detect;
@@ -379,10 +550,42 @@ struct mmc_host {
} embedded_sdio_data;
#endif
+ /*
+ * Set to 1 to just stop the SDCLK to the card without
+ * actually disabling the clock from it's source.
+ */
+ bool card_clock_off;
+
+#ifdef CONFIG_MMC_PERF_PROFILING
+ struct {
+
+ unsigned long rbytes_drv; /* Rd bytes MMC Host */
+ unsigned long wbytes_drv; /* Wr bytes MMC Host */
+ ktime_t rtime_drv; /* Rd time MMC Host */
+ ktime_t wtime_drv; /* Wr time MMC Host */
+ ktime_t start;
+ } perf;
+ bool perf_enable;
+#endif
+ enum dev_state dev_status;
+ bool wakeup_on_idle;
+ struct mmc_cmdq_context_info cmdq_ctx;
+ int num_cq_slots;
+ int dcmd_cq_slot;
+ bool cmdq_thist_enabled;
+ /*
+ * several cmdq supporting host controllers are extensions
+ * of legacy controllers. This variable can be used to store
+ * a reference to the cmdq extension of the existing host
+ * controller.
+ */
+ void *cmdq_private;
+ struct mmc_request *err_mrq;
unsigned long private[0] ____cacheline_aligned;
};
struct mmc_host *mmc_alloc_host(int extra, struct device *);
+extern bool mmc_host_may_gate_card(struct mmc_card *);
int mmc_add_host(struct mmc_host *);
void mmc_remove_host(struct mmc_host *);
void mmc_free_host(struct mmc_host *);
@@ -401,6 +604,11 @@ static inline void *mmc_priv(struct mmc_host *host)
return (void *)host->private;
}
+static inline void *mmc_cmdq_private(struct mmc_host *host)
+{
+ return host->cmdq_private;
+}
+
#define mmc_host_is_spi(host) ((host)->caps & MMC_CAP_SPI)
#define mmc_dev(x) ((x)->parent)
@@ -478,6 +686,12 @@ static inline int mmc_boot_partition_access(struct mmc_host *host)
return !(host->caps2 & MMC_CAP2_BOOTPART_NOACC);
}
+static inline bool mmc_card_and_host_support_async_int(struct mmc_host *host)
+{
+ return ((host->caps2 & MMC_CAP2_ASYNC_SDIO_IRQ_4BIT_MODE) &&
+ (host->card->cccr.async_intr_sup));
+}
+
static inline int mmc_host_uhs(struct mmc_host *host)
{
return host->caps &
@@ -491,6 +705,56 @@ static inline int mmc_host_packed_wr(struct mmc_host *host)
return host->caps2 & MMC_CAP2_PACKED_WR;
}
+static inline void mmc_host_set_halt(struct mmc_host *host)
+{
+ set_bit(CMDQ_STATE_HALT, &host->cmdq_ctx.curr_state);
+}
+
+static inline void mmc_host_clr_halt(struct mmc_host *host)
+{
+ clear_bit(CMDQ_STATE_HALT, &host->cmdq_ctx.curr_state);
+}
+
+static inline int mmc_host_halt(struct mmc_host *host)
+{
+ return test_bit(CMDQ_STATE_HALT, &host->cmdq_ctx.curr_state);
+}
+
+static inline void mmc_host_set_cq_disable(struct mmc_host *host)
+{
+ set_bit(CMDQ_STATE_CQ_DISABLE, &host->cmdq_ctx.curr_state);
+}
+
+static inline void mmc_host_clr_cq_disable(struct mmc_host *host)
+{
+ clear_bit(CMDQ_STATE_CQ_DISABLE, &host->cmdq_ctx.curr_state);
+}
+
+static inline int mmc_host_cq_disable(struct mmc_host *host)
+{
+ return test_bit(CMDQ_STATE_CQ_DISABLE, &host->cmdq_ctx.curr_state);
+}
+
+#ifdef CONFIG_MMC_CLKGATE
+void mmc_host_clk_hold(struct mmc_host *host);
+void mmc_host_clk_release(struct mmc_host *host);
+unsigned int mmc_host_clk_rate(struct mmc_host *host);
+
+#else
+static inline void mmc_host_clk_hold(struct mmc_host *host)
+{
+}
+
+static inline void mmc_host_clk_release(struct mmc_host *host)
+{
+}
+
+static inline unsigned int mmc_host_clk_rate(struct mmc_host *host)
+{
+ return host->ios.clock;
+}
+#endif
+
static inline int mmc_card_hs(struct mmc_card *card)
{
return card->host->ios.timing == MMC_TIMING_SD_HS ||
diff --git a/include/linux/mmc/mmc.h b/include/linux/mmc/mmc.h
index 5b085532fc2d..9cd5afaef626 100644
--- a/include/linux/mmc/mmc.h
+++ b/include/linux/mmc/mmc.h
@@ -26,6 +26,11 @@
#include <uapi/linux/mmc/mmc.h>
+/* class 11 */
+#define MMC_CMDQ_TASK_MGMT 48 /* ac [31:0] task ID R1b */
+#define DISCARD_QUEUE 0x1
+#define DISCARD_TASK 0x2
+
static inline bool mmc_op_multi(u32 opcode)
{
return opcode == MMC_WRITE_MULTIPLE_BLOCK ||
@@ -165,6 +170,7 @@ struct _mmc_csd {
* OCR bits are mostly in host.h
*/
#define MMC_CARD_BUSY 0x80000000 /* Card Power up status bit */
+#define MMC_CARD_SECTOR_ADDR 0x40000000 /* Card supports sectors */
/*
* Card Command Classes (CCC)
@@ -214,6 +220,8 @@ struct _mmc_csd {
* EXT_CSD fields
*/
+#define EXT_CSD_CMDQ 15 /* R/W */
+#define EXT_CSD_BARRIER_CTRL 31 /* R/W */
#define EXT_CSD_FLUSH_CACHE 32 /* W */
#define EXT_CSD_CACHE_CTRL 33 /* R/W */
#define EXT_CSD_POWER_OFF_NOTIFICATION 34 /* R/W */
@@ -239,6 +247,7 @@ struct _mmc_csd {
#define EXT_CSD_PART_CONFIG 179 /* R/W */
#define EXT_CSD_ERASED_MEM_CONT 181 /* RO */
#define EXT_CSD_BUS_WIDTH 183 /* R/W */
+#define EXT_CSD_STROBE_SUPPORT 184 /* RO */
#define EXT_CSD_HS_TIMING 185 /* R/W */
#define EXT_CSD_POWER_CLASS 187 /* R/W */
#define EXT_CSD_REV 192 /* RO */
@@ -266,12 +275,17 @@ struct _mmc_csd {
#define EXT_CSD_PWR_CL_200_360 237 /* RO */
#define EXT_CSD_PWR_CL_DDR_52_195 238 /* RO */
#define EXT_CSD_PWR_CL_DDR_52_360 239 /* RO */
+#define EXT_CSD_CACHE_FLUSH_POLICY 240 /* RO */
#define EXT_CSD_BKOPS_STATUS 246 /* RO */
#define EXT_CSD_POWER_OFF_LONG_TIME 247 /* RO */
#define EXT_CSD_GENERIC_CMD6_TIME 248 /* RO */
#define EXT_CSD_CACHE_SIZE 249 /* RO, 4 bytes */
#define EXT_CSD_PWR_CL_DDR_200_360 253 /* RO */
#define EXT_CSD_FIRMWARE_VERSION 254 /* RO, 8 bytes */
+#define EXT_CSD_CMDQ_DEPTH 307 /* RO */
+#define EXT_CSD_CMDQ_SUPPORT 308 /* RO */
+#define EXT_CSD_BARRIER_SUPPORT 486 /* RO */
+ #define EXT_CSD_TAG_UNIT_SIZE 498 /* RO */
#define EXT_CSD_SUPPORTED_MODE 493 /* RO */
#define EXT_CSD_TAG_UNIT_SIZE 498 /* RO */
#define EXT_CSD_DATA_TAG_SUPPORT 499 /* RO */
@@ -284,7 +298,8 @@ struct _mmc_csd {
* EXT_CSD field definitions
*/
-#define EXT_CSD_WR_REL_PARAM_EN (1<<2)
+#define EXT_CSD_WR_REL_PARAM_EN (1<<2)
+#define EXT_CSD_WR_REL_PARAM_EN_RPMB_REL_WR (1<<4)
#define EXT_CSD_BOOT_WP_B_PWR_WP_DIS (0x40)
#define EXT_CSD_BOOT_WP_B_PERM_WP_DIS (0x10)
@@ -328,6 +343,7 @@ struct _mmc_csd {
#define EXT_CSD_BUS_WIDTH_8 2 /* Card is in 8 bit mode */
#define EXT_CSD_DDR_BUS_WIDTH_4 5 /* Card is in 4 bit DDR mode */
#define EXT_CSD_DDR_BUS_WIDTH_8 6 /* Card is in 8 bit DDR mode */
+#define EXT_CSD_BUS_WIDTH_STROBE 0x80 /* Card is in 8 bit DDR mode */
#define EXT_CSD_TIMING_BC 0 /* Backwards compatility */
#define EXT_CSD_TIMING_HS 1 /* High speed */
@@ -355,6 +371,9 @@ struct _mmc_csd {
#define EXT_CSD_PACKED_EVENT_EN BIT(3)
+#define EXT_CSD_BKOPS_MANUAL_EN BIT(0)
+#define EXT_CSD_BKOPS_AUTO_EN BIT(1)
+
/*
* EXCEPTION_EVENT_STATUS field
*/
diff --git a/include/linux/mmc/sdio.h b/include/linux/mmc/sdio.h
index 17446d3c3602..3fc07d701cd1 100644
--- a/include/linux/mmc/sdio.h
+++ b/include/linux/mmc/sdio.h
@@ -102,6 +102,7 @@
#define SDIO_BUS_WIDTH_1BIT 0x00
#define SDIO_BUS_WIDTH_RESERVED 0x01
#define SDIO_BUS_WIDTH_4BIT 0x02
+#define SDIO_BUS_WIDTH_8BIT 0x03
#define SDIO_BUS_ECSI 0x20 /* Enable continuous SPI interrupt */
#define SDIO_BUS_SCSI 0x40 /* Support continuous SPI interrupt */
@@ -163,6 +164,10 @@
#define SDIO_DTSx_SET_TYPE_A (1 << SDIO_DRIVE_DTSx_SHIFT)
#define SDIO_DTSx_SET_TYPE_C (2 << SDIO_DRIVE_DTSx_SHIFT)
#define SDIO_DTSx_SET_TYPE_D (3 << SDIO_DRIVE_DTSx_SHIFT)
+
+#define SDIO_CCCR_INTERRUPT_EXTENSION 0x16
+#define SDIO_SUPPORT_ASYNC_INTR (1<<0)
+#define SDIO_ENABLE_ASYNC_INTR (1<<1)
/*
* Function Basic Registers (FBR)
*/
diff --git a/include/linux/sched/sysctl.h b/include/linux/sched/sysctl.h
index 30ba03d1679b..3e5fd5619367 100644
--- a/include/linux/sched/sysctl.h
+++ b/include/linux/sched/sysctl.h
@@ -44,8 +44,6 @@ extern unsigned int sysctl_sched_wakeup_load_threshold;
extern unsigned int sysctl_sched_window_stats_policy;
extern unsigned int sysctl_sched_ravg_hist_size;
extern unsigned int sysctl_sched_cpu_high_irqload;
-extern unsigned int sysctl_sched_migration_fixup;
-extern unsigned int sysctl_sched_heavy_task_pct;
#if defined(CONFIG_SCHED_FREQ_INPUT) || defined(CONFIG_SCHED_HMP)
extern unsigned int sysctl_sched_init_task_load_pct;
@@ -61,7 +59,6 @@ extern unsigned int sysctl_sched_spill_nr_run;
extern unsigned int sysctl_sched_spill_load_pct;
extern unsigned int sysctl_sched_upmigrate_pct;
extern unsigned int sysctl_sched_downmigrate_pct;
-extern int sysctl_sched_upmigrate_min_nice;
extern unsigned int sysctl_early_detection_duration;
extern unsigned int sysctl_sched_boost;
extern unsigned int sysctl_sched_small_wakee_task_load_pct;
@@ -134,15 +131,6 @@ extern unsigned int sysctl_sched_cfs_bandwidth_slice;
extern unsigned int sysctl_sched_autogroup_enabled;
#endif
-#ifdef CONFIG_SCHEDSTATS
-extern unsigned int sysctl_sched_latency_panic_threshold;
-extern unsigned int sysctl_sched_latency_warn_threshold;
-
-extern int sched_max_latency_sysctl(struct ctl_table *table, int write,
- void __user *buffer, size_t *lenp,
- loff_t *ppos);
-#endif
-
extern int sched_rr_timeslice;
extern int sched_rr_handler(struct ctl_table *table, int write,