{"push_id":3953875454,"size":17,"distinct_size":17,"ref":"refs/heads/upstream/rt5677","head":"32caa451fe2f29e5d77a1fdd8bfd42baa74daa5d","before":"e629bc24f08ae71e94702bb84c7eb88ffdc7f2e6","commits":[{"sha":"2ef802e1021de1c3464d6492dde74ff4ec75104e","author":{"name":"Curtis Malainey","email":"9427d954bf16a65878c953cc565cfe9ab51a3885@chromium.org"},"message":"[NOT FOR UPSTREAM] Revert \"x86/mm: Identify the end of the kernel area to be reserved\"\n\nThis reverts commit c603a309cc75f3dd018ddb20ee44c05047918cbf.\n\nChange-Id: I7dde282559b685e5a5095ac42168780265105f48\nSigned-off-by: Curtis Malainey <cujomalainey@chromium.org>","distinct":true,"url":"https://api.github.com/repos/cujomalainey/linux/commits/2ef802e1021de1c3464d6492dde74ff4ec75104e"},{"sha":"c2672e13005a620a51480e7eb0cb7e5d4f1cfcf3","author":{"name":"Jarkko Nikula","email":"ed47dfa4cd43d03d92ccc66ffdb9609c96fcf22b@linux.intel.com"},"message":"ACPI / LPSS: Save/restore LPSS private registers also on Lynxpoint\n\nMy assumption in the commit b53548f9d9e4 (\"spi: pxa2xx: Remove LPSS private\nregister restoring during resume\") that Intel Lynxpoint and compatible\nbased chipsets may not need LPSS private registers saving and restoring\nover suspend/resume cycle turned out to be false on Intel Broadwell.\n\nCurtis Malainey sent a patch bringing above change back and reported the\nLPSS SPI Chip Select control was lost over suspend/resume cycle on\nBroadwell machine.\n\nInstead of reverting above commit lets add LPSS private register\nsaving/restoring also for all LPSS SPI, I2C and UART controllers on\nLynxpoint and compatible chipset to make sure context is not lost in\ncase nothing else preserves it like firmware or if LPSS is always on.\n\nFixes: b53548f9d9e4 (\"spi: pxa2xx: Remove LPSS private register restoring during resume\")\nReported-by: Curtis Malainey <cujomalainey@chromium.org>\nCc: <stable@vger.kernel.org>\nSigned-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>\nSigned-off-by: Curtis Malainey <cujomalainey@chromium.org>","distinct":true,"url":"https://api.github.com/repos/cujomalainey/linux/commits/c2672e13005a620a51480e7eb0cb7e5d4f1cfcf3"},{"sha":"98bc6d52cb7c03b000f1f18b93b8bbf5a92de63e","author":{"name":"Curtis Malainey","email":"9427d954bf16a65878c953cc565cfe9ab51a3885@chromium.org"},"message":"ASoC: rt5677: Remove magic number register writes\n\nIn order to simplify understanding what register values are being\nwritten to the codec for debugging more advanced features (such as\nhotwording) it is best to remove magic numbers\n\nSigned-off-by: Curtis Malainey <cujomalainey@chromium.org>","distinct":true,"url":"https://api.github.com/repos/cujomalainey/linux/commits/98bc6d52cb7c03b000f1f18b93b8bbf5a92de63e"},{"sha":"ccafadea5e6e4116b7b408b2df1098bdb9f1811e","author":{"name":"Ben Zhang","email":"db8778e62b312ccbd77ecba18560f4a84e4e16cf@chromium.org"},"message":"ASoC: rt5677: keep analog power register at SND_SOC_BIAS_OFF\n\nInstead of clearing RT5677_PWR_ANLG2 (MX-64h) to 0 at SND_SOC_BIAS_OFF,\nwe only clear the RT5677_PWR_CORE bit which is set at SND_SOC_BIAS_PREPARE.\nMICBIAS control bits are left unchanged.\n\nThis fixed the bug where if MICBIAS1 widget is forced on, MICBIAS\ncontrol bits will be cleared at suspend and never turned back on again,\nsince DAPM thinks the widget is always on.\n\nSigned-off-by: Ben Zhang <benzh@chromium.org>\nSigned-off-by: Curtis Malainey <cujomalainey@chromium.org>","distinct":true,"url":"https://api.github.com/repos/cujomalainey/linux/commits/ccafadea5e6e4116b7b408b2df1098bdb9f1811e"},{"sha":"ec240cfe66854dfcd61dacb218f8d8bbcccf2a55","author":{"name":"Ben Zhang","email":"db8778e62b312ccbd77ecba18560f4a84e4e16cf@chromium.org"},"message":"ASoC: rt5677: Add a PCM device for streaming hotword via SPI\n\nThis patch implements a PCM interface for streaming hotword\nphrases over SPI. Userspace can open the PCM device at anytime.\nThe stream is blocked when no hotword is detected. The mic\naudio buffer on the DSP is a ~128KByte ring buffer that holds\n~4sec of audio samples recorded from the DMIC (S16_LE, mono,\n16KHz). After a hotword is detected, previous 2 seconds of audio\n(containing the detected hotword) is streamed first, then live\ncapture continues until userspace closes the PCM stream.\n\nSigned-off-by: Ben Zhang <benzh@chromium.org>\nSigned-off-by: Curtis Malainey <cujomalainey@chromium.org>","distinct":true,"url":"https://api.github.com/repos/cujomalainey/linux/commits/ec240cfe66854dfcd61dacb218f8d8bbcccf2a55"},{"sha":"d4486c9f49a57835e51beec22ec9670203604ea7","author":{"name":"Ben Zhang","email":"db8778e62b312ccbd77ecba18560f4a84e4e16cf@chromium.org"},"message":"ASoC: rt5677: Load firmware via SPI\n\nThe firmware rt5677_elf_vad is an ELF binary obtained from\nrequest_firmware(). Sections of the ELF are loaded to\nthe DSP via SPI. A model (e.g. en_us.mmap) can optionally be\nloaded to the DSP at RT5677_MODEL_ADDR to overwrite the\nbaked-in model in rt5677_elf_vad.\n\nWhen 'DSP VAD Switch' is turned on, rt5677_set_vad_source()\nenables the following digital path:\n\nDMIC L1 ->\nMono DMIC L Mux ->\nMono ADC2 L Mux ->\nMono ADC MIXL ->\nVAD ADC Mux ->\nIB01 Mux\n\nThen we switch to DSP mode, load firmware, and let DSP run.\nWhen a hotword is detected, an interrupt is fired and\nrt5677_irq() is called. When 'DSP VAD Switch' is turned off,\nthe codec is set back to normal mode.\n\nSigned-off-by: Ben Zhang <benzh@chromium.org>\nSigned-off-by: Curtis Malainey <cujomalainey@chromium.org>","distinct":true,"url":"https://api.github.com/repos/cujomalainey/linux/commits/d4486c9f49a57835e51beec22ec9670203604ea7"},{"sha":"b47170d30e352f5671527b88c1191510e3e66a9a","author":{"name":"Ben Zhang","email":"db8778e62b312ccbd77ecba18560f4a84e4e16cf@chromium.org"},"message":"ASoC: rt5677: Auto enable/disable DSP for hotwording\n\nThe kcontrol 'DSP VAD Switch' is automatically enabled/disabled\nwhen the hotwording PCM stream is opened/closed.\n\nA function pointer in struct rt5677_priv is used to avoid module\ndependency cycle between snd_soc_rt5677 and snd_soc_rt5677_spi.\n\nSigned-off-by: Ben Zhang <benzh@chromium.org>\nSigned-off-by: Curtis Malainey <cujomalainey@chromium.org>","distinct":true,"url":"https://api.github.com/repos/cujomalainey/linux/commits/b47170d30e352f5671527b88c1191510e3e66a9a"},{"sha":"5ecab9e6cd54fea6724c189e68f16bf1617f2d25","author":{"name":"Ben Zhang","email":"db8778e62b312ccbd77ecba18560f4a84e4e16cf@chromium.org"},"message":"ASoC: bdw-rt5677: Add a DAI link for rt5677 SPI PCM device\n\nThis link is needed for the RT5677 DSP to do hotwording\n\nSigned-off-by: Ben Zhang <benzh@chromium.org>\nSigned-off-by: Curtis Malainey <cujomalainey@chromium.org>","distinct":true,"url":"https://api.github.com/repos/cujomalainey/linux/commits/5ecab9e6cd54fea6724c189e68f16bf1617f2d25"},{"sha":"3e743be6beee0857fb5c0dd6bc51c8de8279d24c","author":{"name":"Ben Zhang","email":"db8778e62b312ccbd77ecba18560f4a84e4e16cf@chromium.org"},"message":"ASoC: rt5677: Enable jack detect while DSP is running\n\nBefore a hotword is detected, GPIO1 pin is configured as IRQ\noutput so that jack detect works. When a hotword is detected,\nthe DSP firmware configures the GPIO1 pin as GPIO1 and\ndrives a 1. rt5677_irq() is called after a rising edge on\nthe GPIO1 pin, due to either jack detect event or hotword\nevent, or both. All possible events are checked and handled\nin rt5677_irq() where GPIO1 pin is configured back to IRQ\noutput if a hotword is detected.\n\nSigned-off-by: Ben Zhang <benzh@chromium.org>\nSigned-off-by: Curtis Malainey <cujomalainey@chromium.org>","distinct":true,"url":"https://api.github.com/repos/cujomalainey/linux/commits/3e743be6beee0857fb5c0dd6bc51c8de8279d24c"},{"sha":"aa965d1c498f9f0c31153bb403b3b9c4e3f148dd","author":{"name":"Ben Zhang","email":"db8778e62b312ccbd77ecba18560f4a84e4e16cf@chromium.org"},"message":"ASoC: rt5677: Use delayed work for DSP firmware load\n\nWithout this patch, the DSP firmware is loaded/unloaded synchronously\nin snd_pcm_ops.open/close context. When a hotword stream is opened,\nsnd_pcm_ops.open/close is called multiple times. Loading firmware\nin the open/close context takes too long and makes audio playback\nchoppy.\n\nThis patch moves the firmware load to a delayed work.\nsnd_pcm_ops.open/close sets a flag to request DSP VAD enable/disable,\nand schedules the delayed work.\n\nSigned-off-by: Ben Zhang <benzh@chromium.org>\nSigned-off-by: Curtis Malainey <cujomalainey@chromium.org>","distinct":true,"url":"https://api.github.com/repos/cujomalainey/linux/commits/aa965d1c498f9f0c31153bb403b3b9c4e3f148dd"},{"sha":"a7c120d6b6f7e9329942722f7b6e7dd65f63df3b","author":{"name":"Ben Zhang","email":"db8778e62b312ccbd77ecba18560f4a84e4e16cf@chromium.org"},"message":"ASoC: rt5677: Add DAPM audio path for hotword stream\n\nAdd a DAPM audio path from \"DMIC L1\" to \"DSP Buffer\" so that\nwhen hotwording is enabled, DAPM does not power off the codec\nwith SND_SOC_BIAS_OFF.\n\nSigned-off-by: Ben Zhang <benzh@chromium.org>\nSigned-off-by: Curtis Malainey <cujomalainey@chromium.org>","distinct":true,"url":"https://api.github.com/repos/cujomalainey/linux/commits/a7c120d6b6f7e9329942722f7b6e7dd65f63df3b"},{"sha":"b9c5e420c556aee097ae9ebd87e6bc4ef7f9f076","author":{"name":"Ben Zhang","email":"db8778e62b312ccbd77ecba18560f4a84e4e16cf@chromium.org"},"message":"ASoC: rt5677: Mark reg RT5677_PWR_ANLG2 as volatile\n\nThe codec dies when RT5677_PWR_ANLG2(MX-64h) is set to 0xACE1\nwhile it's streaming audio over SPI. The DSP firmware turns\non PLL2 (MX-64 bit 8) when SPI streaming starts.  However regmap\ndoes not believe that register can change by itself. When\nBST1 (bit 15) is turned on with regmap_update_bits(), it doesn't\nread the register first before write, so PLL2 power bit is\ncleared by accident.\n\nMarking MX-64h as volatile in regmap solved the issue.\n\nSigned-off-by: Ben Zhang <benzh@chromium.org>\nSigned-off-by: Curtis Malainey <cujomalainey@chromium.org>","distinct":true,"url":"https://api.github.com/repos/cujomalainey/linux/commits/b9c5e420c556aee097ae9ebd87e6bc4ef7f9f076"},{"sha":"7184ae71efb0150be4f9f6199643ab7056e38ac6","author":{"name":"Ben Zhang","email":"db8778e62b312ccbd77ecba18560f4a84e4e16cf@chromium.org"},"message":"ASoC: rt5677: Stop and restart DSP over suspend/resume\n\nMCLK1 gets disabled at suspend and re-enabled at resume. Before\nMCLK1 is re-enabled, if the DSP is already on (either the DSP was\nleft on during suspend, or the DSP is turned on early at resume),\ni2c register read returns garbage and corrupts the regmap cache.\n\nThis patch stops the DSP before suspend and restarts it after\nresume with a dalay to ensure MCLK is on while loading firmware.\n\nSigned-off-by: Ben Zhang <benzh@chromium.org>\nSigned-off-by: Curtis Malainey <cujomalainey@chromium.org>","distinct":true,"url":"https://api.github.com/repos/cujomalainey/linux/commits/7184ae71efb0150be4f9f6199643ab7056e38ac6"},{"sha":"bedd9c2e6c9fb1e717421c8c4a9a11fb612364e2","author":{"name":"Ben Zhang","email":"db8778e62b312ccbd77ecba18560f4a84e4e16cf@chromium.org"},"message":"ASoC: rt5677: Transfer one period at a time over SPI\n\nRewrite the ring buffer transfer functions to copy one period\nat a time then call snd_pcm_period_elapsed(). This reduces the\nlatency of transferring the initial ~2sec of audio after hotword\ndetect since audio samples are available for userspace earlier.\n\nSigned-off-by: Ben Zhang <benzh@chromium.org>\nSigned-off-by: Curtis Malainey <cujomalainey@chromium.org>","distinct":true,"url":"https://api.github.com/repos/cujomalainey/linux/commits/bedd9c2e6c9fb1e717421c8c4a9a11fb612364e2"},{"sha":"deb21c49f39939b8456e4de34509785fdf6cf283","author":{"name":"Ben Zhang","email":"db8778e62b312ccbd77ecba18560f4a84e4e16cf@chromium.org"},"message":"ASoC: rt5677: Disable irq at suspend\n\nThe irq is disabled at suspend to avoid running the threaded irq\nhandler after the codec has been powered off. At resume, codec irq is\nre-enabled and the interrupt status register is checked to see if\nheadphone has been pluggnd/unplugged while the device is suspended.\n\nThere is still a chance that the headphone gets enabled or disabled\nafter the codec is suspended. disable_irq syncs the threaded irq\nhandler, but soc-jack's threaded irq handler schedules a delayed\nwork to poll gpios (for debounce). This is still OK. The codec won't\nbe powered back on again because all audio paths have been suspended,\nand there are no force enabled supply widgets (MICBIAS1 is disabled).\nThe gpio status read after codec power off could be wrong, so the\ngpio values are checked again after resume.\n\nSigned-off-by: Ben Zhang <benzh@chromium.org>\nSigned-off-by: Curtis Malainey <cujomalainey@chromium.org>","distinct":true,"url":"https://api.github.com/repos/cujomalainey/linux/commits/deb21c49f39939b8456e4de34509785fdf6cf283"},{"sha":"183f110e1ba8153931509229ceadada1235c1a94","author":{"name":"Curtis Malainey","email":"9427d954bf16a65878c953cc565cfe9ab51a3885@chromium.org"},"message":"ASoC: rt5677: Allow VAD to be shut on/off at all times\n\nDue to limitations of the clocking configuration, we have no way of\nscheduling our hibernation before the bdw dsp hibernates. This causes\nissues when the system suspends with an open stream. We need userspace\nto toggle the kcontrol before we are suspended so that any writes on\nsuspend are not lost and we don't corrupt the regmap.\n\nSigned-off-by: Curtis Malainey <cujomalainey@chromium.org>","distinct":true,"url":"https://api.github.com/repos/cujomalainey/linux/commits/183f110e1ba8153931509229ceadada1235c1a94"},{"sha":"32caa451fe2f29e5d77a1fdd8bfd42baa74daa5d","author":{"name":"Curtis Malainey","email":"9427d954bf16a65878c953cc565cfe9ab51a3885@chromium.org"},"message":"ASoC: rt5677: Turn on MCLK1 for DSP via DAPM\n\nThe RT5677 DSP needs the I2S MCLK1 to run its DSP. Add a dapm route to\nSSP0 CODEC IN so the clock is turned on automatically when the DSP is\nturned on.\n\nSigned-off-by: Curtis Malainey <cujomalainey@chromium.org>","distinct":true,"url":"https://api.github.com/repos/cujomalainey/linux/commits/32caa451fe2f29e5d77a1fdd8bfd42baa74daa5d"}]}
{"actor":{"display_login":"cujomalainey"}}