[alsa-devel] [PATCH v3 4/6] ASoC: Intel: mrfld- add ACPI module

Vinod Koul vinod.koul at intel.com
Thu Nov 6 14:09:09 CET 2014


On Thu, Nov 06, 2014 at 12:43:49PM +0000, Mark Brown wrote:
> On Tue, Nov 04, 2014 at 04:25:18PM +0530, Vinod Koul wrote:
> 
> > @@ -323,7 +324,11 @@ EXPORT_SYMBOL_GPL(sst_context_init);
> >  void sst_context_cleanup(struct intel_sst_drv *ctx)
> >  {
> >  	pm_runtime_get_noresume(ctx->dev);
> > +#if IS_ENABLED(CONFIG_ACPI)
> > +	pm_runtime_disable(ctx->dev);
> > +#else
> >  	pm_runtime_forbid(ctx->dev);
> > +#endif
> >  	sst_unregister(ctx->dev);
> >  	sst_set_fw_state_locked(ctx, SST_SHUTDOWN);
> >  	flush_scheduled_work();
> 
> No, we should be able to build a kernel which runs with or without ACPI
> - make this a runtime check if it's required (a comment might be in
> order too since this is a weird thing to do).
yes that is doable by adding a parameter and setting that in specfic probe,
will add.

> 
> > @@ -371,8 +376,19 @@ void sst_configure_runtime_pm(struct intel_sst_drv *ctx)
> >  {
> >  	pm_runtime_set_autosuspend_delay(ctx->dev, SST_SUSPEND_DELAY);
> >  	pm_runtime_use_autosuspend(ctx->dev);
> > +#if IS_ENABLED(CONFIG_ACPI)
> > +	/*
> > +	 * For acpi devices, the actual physical device state is
> > +	 * initially active. So change the state to active before
> > +	 * enabling the pm
> > +	 */
> > +	pm_runtime_set_active(ctx->dev);
> > +	pm_runtime_enable(ctx->dev);
> > +	sst_save_shim64(ctx, ctx->shim, ctx->shim_regs64);
> > +#else
> >  	pm_runtime_allow(ctx->dev);
> >  	pm_runtime_put_noidle(ctx->dev);
> > +#endif
> 
> The general idiom for runtime PM is that we should default to bringing
> the device to power up anyway, that way the kernel continues to work if
> runtime PM has been disabled.
ok

> 
> > +	/* save the shim registers because PMC doesn't save state */
> > +	if (ctx->dev_id == SST_BYT_ACPI_ID)
> > +		sst_save_shim64(ctx, ctx->shim, ctx->shim_regs64);
> 
> Is there any harm in doing this unconditionally?
Shouldnt be, let me verify

> 
> > +static acpi_status sst_acpi_mach_match(acpi_handle handle, u32 level,
> > +				       void *context, void **ret)
> > +{
> > +	*(bool *)context = true;
> > +	return AE_OK;
> > +}
> > +
> > +static struct sst_machines *sst_acpi_find_machine(
> > +	struct sst_machines *machines)
> > +{
> > +	struct sst_machines *mach;
> > +	bool found = false;
> > +
> > +	for (mach = machines; mach->codec_id; mach++)
> > +		if (ACPI_SUCCESS(acpi_get_devices(mach->codec_id,
> > +						  sst_acpi_mach_match,
> > +						  &found, NULL)) && found)
> > +			return mach;
> 
> acpi_get_devices() seems painful.
> 
> > +#else
> > +int sst_acpi_probe(struct platform_device *pdev)
> > +{
> > +	return -EINVAL;
> > +}
> > +
> > +int sst_acpi_remove(struct platform_device *pdev)
> > +{
> > +	return -EINVAL;
> > +}
> > +#endif
> 
> Why not just not build this file if !CONFIG_ACPI?
Yes, anway this is only for ACPI systems.

> 
> > +static struct sst_machines sst_acpi_bytcr[] = {
> > +	{"10EC5640", "T100", "bytt100_rt5640", NULL, "fw_sst_0f28.bin",
> > +						&byt_rvp_platform_data },
> > +	{},
> > +};
> 
> Yay.  Much win.  Not that there's much that can be done at this point.
Yup, hopefully _DSD migration will help us here

-- 
~Vinod
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20141106/59761e31/attachment.sig>


More information about the Alsa-devel mailing list