On 2020-09-16 5:24 PM, Andy Shevchenko wrote: > On Tue, Sep 15, 2020 at 06:29:32PM +0200, Cezary Rojewski wrote: >> Declare base structures, registers and device routines for the catpt >> solution. Catpt deprecates and is a direct replacement for >> sound/soc/intel/haswell. Supports Lynxpoint and Wildcat Point both. > > Few nit-picks below. Overall looks good, FWIW, > Reviewed-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > ... >> +#include <linux/acpi.h> >> +#include <linux/dma-mapping.h> >> +#include <linux/interrupt.h> >> +#include <linux/module.h> >> +#include <linux/platform_device.h> >> +#include <linux/pm_runtime.h> > >> +#include <linux/pci.h> > > Perhaps sorted? > Ack. fixed in v6. >> +#include <sound/soc.h> >> +#include <sound/soc-acpi.h> >> +#include <sound/soc-acpi-intel-match.h> >> +#include "core.h" >> +#include "registers.h" >> + >> +#define CREATE_TRACE_POINTS >> +#include "trace.h" >> + >> +static int __maybe_unused catpt_suspend(struct device *dev) >> +{ >> + struct catpt_dev *cdev = dev_get_drvdata(dev); >> + struct dma_chan *chan; >> + int ret; >> + >> + chan = catpt_dma_request_config_chan(cdev); >> + if (IS_ERR(chan)) >> + return PTR_ERR(chan); >> + >> + memset(&cdev->dx_ctx, 0, sizeof(cdev->dx_ctx)); >> + ret = catpt_ipc_enter_dxstate(cdev, CATPT_DX_STATE_D3, &cdev->dx_ctx); >> + if (ret) { >> + ret = CATPT_IPC_ERROR(ret); >> + goto exit; >> + } >> + >> + ret = catpt_dsp_stall(cdev, true); >> + if (ret) >> + goto exit; >> + >> + ret = catpt_store_memdumps(cdev, chan); >> + if (ret) { >> + dev_err(cdev->dev, "store memdumps failed: %d\n", ret); >> + goto exit; >> + } >> + >> + ret = catpt_store_module_states(cdev, chan); >> + if (ret) { >> + dev_err(cdev->dev, "store module states failed: %d\n", ret); >> + goto exit; >> + } >> + >> + ret = catpt_store_streams_context(cdev, chan); >> + if (ret) { >> + dev_err(cdev->dev, "store streams ctx failed: %d\n", ret); >> + goto exit; >> + } > >> +exit: > > I would rather name it as 'out_dma_release' or so to explain what's going to be > done. > I find more descriptive labels inviting reader into: "this is an error path" thinking and that's why I prefer to stick with simple 'exit'. If you think that's not a way to go, can change this. >> + dma_release_channel(chan); >> + if (ret) >> + return ret; >> + return cdev->spec->power_down(cdev); >> +} >> + >> +static int __maybe_unused catpt_resume(struct device *dev) >> +{ >> + struct catpt_dev *cdev = dev_get_drvdata(dev); >> + int ret, i; >> + >> + ret = cdev->spec->power_up(cdev); >> + if (ret) >> + return ret; >> + >> + if (!module_is_live(dev->driver->owner)) { >> + dev_info(dev, "module unloading, skipping fw boot\n"); >> + return 0; >> + } >> + >> + ret = catpt_boot_firmware(cdev, true); >> + if (ret) { >> + dev_err(cdev->dev, "boot firmware failed: %d\n", ret); >> + return ret; >> + } >> + >> + /* reconfigure SSP devices after dx transition */ > > Dx ? > Reworded in v6, thanks.