Loading drivers/gpu/drm/nouveau/Makefile +3 −1 Original line number Diff line number Diff line Loading @@ -167,6 +167,9 @@ nouveau-y += nv50_fbcon.o nvc0_fbcon.o # drm/kms/nvd9- # other random bits nouveau-$(CONFIG_ACPI) += nouveau_acpi.o ## ## unported bits below ## Loading Loading @@ -200,7 +203,6 @@ nouveau-y += nouveau_mem.o # optional stuff nouveau-$(CONFIG_COMPAT) += nouveau_ioc32.o nouveau-$(CONFIG_DRM_NOUVEAU_BACKLIGHT) += nouveau_backlight.o nouveau-$(CONFIG_ACPI) += nouveau_acpi.o obj-$(CONFIG_DRM_NOUVEAU)+= nouveau.o drivers/gpu/drm/nouveau/nouveau_acpi.c +11 −16 Original line number Diff line number Diff line Loading @@ -7,16 +7,13 @@ #include <acpi/acpi.h> #include <linux/mxm-wmi.h> #include "drmP.h" #include "drm.h" #include "drm_sarea.h" #include "drm_crtc_helper.h" #include "nouveau_drv.h" #include <nouveau_drm.h> #include "nouveau_connector.h" #include <linux/vga_switcheroo.h> #include "drm_edid.h" #include "nouveau_drm.h" #include "nouveau_acpi.h" #define NOUVEAU_DSM_LED 0x02 #define NOUVEAU_DSM_LED_STATE 0x00 #define NOUVEAU_DSM_LED_OFF 0x10 Loading Loading @@ -389,10 +386,9 @@ int nouveau_acpi_get_bios_chunk(uint8_t *bios, int offset, int len) return nouveau_rom_call(nouveau_dsm_priv.rom_handle, bios, offset, len); } int void * nouveau_acpi_edid(struct drm_device *dev, struct drm_connector *connector) { struct nouveau_connector *nv_connector = nouveau_connector(connector); struct acpi_device *acpidev; acpi_handle handle; int type, ret; Loading @@ -404,21 +400,20 @@ nouveau_acpi_edid(struct drm_device *dev, struct drm_connector *connector) type = ACPI_VIDEO_DISPLAY_LCD; break; default: return -EINVAL; return NULL; } handle = DEVICE_ACPI_HANDLE(&dev->pdev->dev); if (!handle) return -ENODEV; return NULL; ret = acpi_bus_get_device(handle, &acpidev); if (ret) return -ENODEV; return NULL; ret = acpi_video_get_edid(acpidev, type, -1, &edid); if (ret < 0) return ret; return NULL; nv_connector->edid = kmemdup(edid, EDID_LENGTH, GFP_KERNEL); return 0; return kmemdup(edid, EDID_LENGTH, GFP_KERNEL); } drivers/gpu/drm/nouveau/nouveau_acpi.h 0 → 100644 +22 −0 Original line number Diff line number Diff line #ifndef __NOUVEAU_ACPI_H__ #define __NOUVEAU_ACPI_H__ #define ROM_BIOS_PAGE 4096 #if defined(CONFIG_ACPI) void nouveau_register_dsm_handler(void); void nouveau_unregister_dsm_handler(void); void nouveau_switcheroo_optimus_dsm(void); int nouveau_acpi_get_bios_chunk(uint8_t *bios, int offset, int len); bool nouveau_acpi_rom_supported(struct pci_dev *pdev); void *nouveau_acpi_edid(struct drm_device *, struct drm_connector *); #else static inline void nouveau_register_dsm_handler(void) {} static inline void nouveau_unregister_dsm_handler(void) {} static inline void nouveau_switcheroo_optimus_dsm(void) {} static inline bool nouveau_acpi_rom_supported(struct pci_dev *pdev) { return false; } static inline int nouveau_acpi_get_bios_chunk(uint8_t *bios, int offset, int len) { return -EINVAL; } static inline void *nouveau_acpi_edid(struct drm_device *dev, struct drm_connector *connector) { return NULL; } #endif #endif drivers/gpu/drm/nouveau/nouveau_connector.c +2 −1 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ #include "nouveau_crtc.h" #include "nouveau_connector.h" #include "nouveau_hw.h" #include "nouveau_acpi.h" #include <subdev/bios/gpio.h> Loading Loading @@ -335,7 +336,7 @@ nouveau_connector_detect_lvds(struct drm_connector *connector, bool force) * valid - it's not (rh#613284) */ if (nv_encoder->dcb->lvdsconf.use_acpi_for_edid) { if (!nouveau_acpi_edid(dev, connector)) { if (!(nv_connector->edid = nouveau_acpi_edid(dev, connector))) { status = connector_status_connected; goto out; } Loading drivers/gpu/drm/nouveau/nouveau_drv.c +1 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ #include "nouveau_fence.h" #include "nouveau_pm.h" #include "nv50_display.h" #include "nouveau_acpi.h" #include "drm_pciids.h" Loading Loading
drivers/gpu/drm/nouveau/Makefile +3 −1 Original line number Diff line number Diff line Loading @@ -167,6 +167,9 @@ nouveau-y += nv50_fbcon.o nvc0_fbcon.o # drm/kms/nvd9- # other random bits nouveau-$(CONFIG_ACPI) += nouveau_acpi.o ## ## unported bits below ## Loading Loading @@ -200,7 +203,6 @@ nouveau-y += nouveau_mem.o # optional stuff nouveau-$(CONFIG_COMPAT) += nouveau_ioc32.o nouveau-$(CONFIG_DRM_NOUVEAU_BACKLIGHT) += nouveau_backlight.o nouveau-$(CONFIG_ACPI) += nouveau_acpi.o obj-$(CONFIG_DRM_NOUVEAU)+= nouveau.o
drivers/gpu/drm/nouveau/nouveau_acpi.c +11 −16 Original line number Diff line number Diff line Loading @@ -7,16 +7,13 @@ #include <acpi/acpi.h> #include <linux/mxm-wmi.h> #include "drmP.h" #include "drm.h" #include "drm_sarea.h" #include "drm_crtc_helper.h" #include "nouveau_drv.h" #include <nouveau_drm.h> #include "nouveau_connector.h" #include <linux/vga_switcheroo.h> #include "drm_edid.h" #include "nouveau_drm.h" #include "nouveau_acpi.h" #define NOUVEAU_DSM_LED 0x02 #define NOUVEAU_DSM_LED_STATE 0x00 #define NOUVEAU_DSM_LED_OFF 0x10 Loading Loading @@ -389,10 +386,9 @@ int nouveau_acpi_get_bios_chunk(uint8_t *bios, int offset, int len) return nouveau_rom_call(nouveau_dsm_priv.rom_handle, bios, offset, len); } int void * nouveau_acpi_edid(struct drm_device *dev, struct drm_connector *connector) { struct nouveau_connector *nv_connector = nouveau_connector(connector); struct acpi_device *acpidev; acpi_handle handle; int type, ret; Loading @@ -404,21 +400,20 @@ nouveau_acpi_edid(struct drm_device *dev, struct drm_connector *connector) type = ACPI_VIDEO_DISPLAY_LCD; break; default: return -EINVAL; return NULL; } handle = DEVICE_ACPI_HANDLE(&dev->pdev->dev); if (!handle) return -ENODEV; return NULL; ret = acpi_bus_get_device(handle, &acpidev); if (ret) return -ENODEV; return NULL; ret = acpi_video_get_edid(acpidev, type, -1, &edid); if (ret < 0) return ret; return NULL; nv_connector->edid = kmemdup(edid, EDID_LENGTH, GFP_KERNEL); return 0; return kmemdup(edid, EDID_LENGTH, GFP_KERNEL); }
drivers/gpu/drm/nouveau/nouveau_acpi.h 0 → 100644 +22 −0 Original line number Diff line number Diff line #ifndef __NOUVEAU_ACPI_H__ #define __NOUVEAU_ACPI_H__ #define ROM_BIOS_PAGE 4096 #if defined(CONFIG_ACPI) void nouveau_register_dsm_handler(void); void nouveau_unregister_dsm_handler(void); void nouveau_switcheroo_optimus_dsm(void); int nouveau_acpi_get_bios_chunk(uint8_t *bios, int offset, int len); bool nouveau_acpi_rom_supported(struct pci_dev *pdev); void *nouveau_acpi_edid(struct drm_device *, struct drm_connector *); #else static inline void nouveau_register_dsm_handler(void) {} static inline void nouveau_unregister_dsm_handler(void) {} static inline void nouveau_switcheroo_optimus_dsm(void) {} static inline bool nouveau_acpi_rom_supported(struct pci_dev *pdev) { return false; } static inline int nouveau_acpi_get_bios_chunk(uint8_t *bios, int offset, int len) { return -EINVAL; } static inline void *nouveau_acpi_edid(struct drm_device *dev, struct drm_connector *connector) { return NULL; } #endif #endif
drivers/gpu/drm/nouveau/nouveau_connector.c +2 −1 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ #include "nouveau_crtc.h" #include "nouveau_connector.h" #include "nouveau_hw.h" #include "nouveau_acpi.h" #include <subdev/bios/gpio.h> Loading Loading @@ -335,7 +336,7 @@ nouveau_connector_detect_lvds(struct drm_connector *connector, bool force) * valid - it's not (rh#613284) */ if (nv_encoder->dcb->lvdsconf.use_acpi_for_edid) { if (!nouveau_acpi_edid(dev, connector)) { if (!(nv_connector->edid = nouveau_acpi_edid(dev, connector))) { status = connector_status_connected; goto out; } Loading
drivers/gpu/drm/nouveau/nouveau_drv.c +1 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ #include "nouveau_fence.h" #include "nouveau_pm.h" #include "nv50_display.h" #include "nouveau_acpi.h" #include "drm_pciids.h" Loading