[Nouveau] [PATCH v2 8/9] acpi: Add support for Apple Gmux _DMS

Pierre Moreau pierre.morrow at free.fr
Thu May 28 01:52:56 PDT 2015


Hi Dave,


----- Mail original -----
> Changes since v1:
[...]
> diff --git a/drm/nouveau/nouveau_vga.c b/drm/nouveau/nouveau_vga.c
> index 9a6328f..7b13804 100644
> --- a/drm/nouveau/nouveau_vga.c
> +++ b/drm/nouveau/nouveau_vga.c
> @@ -36,7 +36,7 @@ nouveau_switcheroo_set_state(struct pci_dev *pdev,
>  {
>  	struct drm_device *dev = pci_get_drvdata(pdev);
>  
> -	if ((nouveau_is_optimus() || nouveau_has_mux()) && state ==
> VGA_SWITCHEROO_OFF)

If I understand it correctly, if the laptop is an Optimus one or has a mux, we are not "allowed" to opt-out of DynPwr/DynOff by powering down the card?
In the same commit adding this conditional (5addcf0a5f0fadceba6bd562d0616a1c5d4c1a4d), you added the possibility to enable/disable dynpm. How is it supposed to work, by simply echo'ing ON or OFF to vga_switcheroo/switch? Then I probably forgot some stuff as it doesn't want to work on my laptop.

Pierre

> +	if (nouveau_has_dsm() && state == VGA_SWITCHEROO_OFF)
>  		return;
>  
>  	if (state == VGA_SWITCHEROO_ON) {
> @@ -96,11 +96,11 @@ nouveau_vga_init(struct nouveau_drm *drm)
>  
>  	if (nouveau_runtime_pm == 1)
>  		runtime = true;
> -	if ((nouveau_runtime_pm == -1) && (nouveau_is_optimus() ||
> nouveau_has_mux()))
> +	if ((nouveau_runtime_pm == -1) && nouveau_has_dsm())
>  		runtime = true;
>  	vga_switcheroo_register_client(dev->pdev, &nouveau_switcheroo_ops,
>  	runtime);
>  
> -	if (runtime && nouveau_has_mux() && !nouveau_is_optimus())
> +	if (runtime && (nouveau_has_mux() || nouveau_has_gmux()) &&
> !nouveau_is_optimus())
>  		vga_switcheroo_init_domain_pm_ops(drm->dev->dev,
>  		&drm->vga_pm_domain);
>  }
>  
> @@ -112,11 +112,11 @@ nouveau_vga_fini(struct nouveau_drm *drm)
>  
>  	if (nouveau_runtime_pm == 1)
>  		runtime = true;
> -	if ((nouveau_runtime_pm == -1) && (nouveau_is_optimus() ||
> nouveau_has_mux()))
> +	if ((nouveau_runtime_pm == -1) && nouveau_has_dsm())
>  		runtime = true;
>  
>  	vga_switcheroo_unregister_client(dev->pdev);
> -	if (runtime && nouveau_has_mux() && !nouveau_is_optimus())
> +	if (runtime && (nouveau_has_mux() || nouveau_has_gmux()) &&
> !nouveau_is_optimus())
>  		vga_switcheroo_fini_domain_pm_ops(drm->dev->dev);
>  	vga_client_register(dev->pdev, NULL, NULL, NULL);
>  }
> --
> 2.4.2
> 
> _______________________________________________
> Nouveau mailing list
> Nouveau at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/nouveau
> 


More information about the Nouveau mailing list