From: Li Peng <[email protected]> Move the opregion related source to seperate file.
Change-Id: Ideea745f93cf9a8796ccc9a2caa0814378a0deec Signed-off-by: Li Peng <[email protected]> Signed-off-by: Justin Dou <[email protected]> --- drivers/staging/mrst/drv/psb_drv.c | 30 ---------- drivers/staging/mrst/drv/psb_drv.h | 17 +++++ drivers/staging/mrst/drv/psb_intel_drv.h | 31 ---------- drivers/staging/mrst/drv/psb_intel_opregion.c | 78 +++++++++++++++++++++++++ drivers/staging/mrst/medfield/Makefile | 1 + drivers/staging/mrst/moorestown/Makefile | 1 + 6 files changed, 97 insertions(+), 61 deletions(-) create mode 100644 drivers/staging/mrst/drv/psb_intel_opregion.c diff --git a/drivers/staging/mrst/drv/psb_drv.c b/drivers/staging/mrst/drv/psb_drv.c index ad17a09..3624152 100644 --- a/drivers/staging/mrst/drv/psb_drv.c +++ b/drivers/staging/mrst/drv/psb_drv.c @@ -982,36 +982,6 @@ out_err: return ret; } -static int psb_intel_opregion_init(struct drm_device *dev) -{ - struct drm_psb_private *dev_priv = dev->dev_private; - /*struct psb_intel_opregion * opregion = &dev_priv->opregion;*/ - u32 opregion_phy; - void *base; - u32 *lid_state; - - dev_priv->lid_state = NULL; - - pci_read_config_dword(dev->pdev, 0xfc, &opregion_phy); - if (opregion_phy == 0) { - DRM_DEBUG("Opregion not supported, won't support lid-switch\n"); - return -ENOTSUPP; - } - DRM_DEBUG("OpRegion detected at 0x%8x\n", opregion_phy); - - base = ioremap(opregion_phy, 8*1024); - if (!base) - return -ENOMEM; - - lid_state = base + 0x01ac; - - DRM_DEBUG("Lid switch state 0x%08x\n", *lid_state); - - dev_priv->lid_state = lid_state; - dev_priv->lid_last_state = *lid_state; - return 0; -} - static int psb_driver_unload(struct drm_device *dev) { struct drm_psb_private *dev_priv = diff --git a/drivers/staging/mrst/drv/psb_drv.h b/drivers/staging/mrst/drv/psb_drv.h index 99603cf..6f25b7d 100644 --- a/drivers/staging/mrst/drv/psb_drv.h +++ b/drivers/staging/mrst/drv/psb_drv.h @@ -270,6 +270,19 @@ enum { #define PSB_PCIx_MSI_ADDR_LOC 0x94 #define PSB_PCIx_MSI_DATA_LOC 0x98 +struct opregion_header; +struct opregion_acpi; +struct opregion_swsci; +struct opregion_asle; + +struct psb_intel_opregion { + struct opregion_header *header; + struct opregion_acpi *acpi; + struct opregion_swsci *swsci; + struct opregion_asle *asle; + int enabled; +}; + /* *User options. */ @@ -1150,6 +1163,10 @@ extern int lnc_video_getparam(struct drm_device *dev, void *data, extern int psb_try_power_down_topaz(struct drm_device *dev); extern int psb_try_power_down_msvdx(struct drm_device *dev); +/* + * psb_opregion.c + */ +extern int psb_intel_opregion_init(struct drm_device *dev); /* *psb_fb.c diff --git a/drivers/staging/mrst/drv/psb_intel_drv.h b/drivers/staging/mrst/drv/psb_intel_drv.h index da575c7..9abe3fc 100644 --- a/drivers/staging/mrst/drv/psb_intel_drv.h +++ b/drivers/staging/mrst/drv/psb_intel_drv.h @@ -120,37 +120,6 @@ enum mipi_panel_type { TPO_864X480 = 3 }; -struct opregion_header { - u8 signature[16]; - u32 size; - u32 opregion_ver; - u8 bios_ver[32]; - u8 vbios_ver[16]; - u8 driver_ver[16]; - u32 mboxes; - u8 reserved[164]; -} __attribute__((packed)); - -struct opregion_apci { - /*FIXME: add it later*/ -} __attribute__((packed)); - -struct opregion_swsci { - /*FIXME: add it later*/ -} __attribute__((packed)); - -struct opregion_acpi { - /*FIXME: add it later*/ -} __attribute__((packed)); - -struct psb_intel_opregion { - struct opregion_header *header; - struct opregion_acpi *acpi; - struct opregion_swsci *swsci; - struct opregion_asle *asle; - int enabled; -}; - /** * Hold information useally put on the device driver privates here, * since it needs to be shared across multiple of devices drivers privates. diff --git a/drivers/staging/mrst/drv/psb_intel_opregion.c b/drivers/staging/mrst/drv/psb_intel_opregion.c new file mode 100644 index 0000000..65e3e9b --- /dev/null +++ b/drivers/staging/mrst/drv/psb_intel_opregion.c @@ -0,0 +1,78 @@ +/* + * Copyright 2010 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ + +#include "psb_drv.h" + +struct opregion_header { + u8 signature[16]; + u32 size; + u32 opregion_ver; + u8 bios_ver[32]; + u8 vbios_ver[16]; + u8 driver_ver[16]; + u32 mboxes; + u8 reserved[164]; +} __attribute__((packed)); + +struct opregion_apci { + /*FIXME: add it later*/ +} __attribute__((packed)); + +struct opregion_swsci { + /*FIXME: add it later*/ +} __attribute__((packed)); + +struct opregion_acpi { + /*FIXME: add it later*/ +} __attribute__((packed)); + +int psb_intel_opregion_init(struct drm_device *dev) +{ + struct drm_psb_private *dev_priv = dev->dev_private; + /*struct psb_intel_opregion * opregion = &dev_priv->opregion;*/ + u32 opregion_phy; + void *base; + u32 *lid_state; + + dev_priv->lid_state = NULL; + + pci_read_config_dword(dev->pdev, 0xfc, &opregion_phy); + if (opregion_phy == 0) { + DRM_DEBUG("Opregion not supported, won't support lid-switch\n"); + return -ENOTSUPP; + } + DRM_DEBUG("OpRegion detected at 0x%8x\n", opregion_phy); + + base = ioremap(opregion_phy, 8*1024); + if (!base) + return -ENOMEM; + + lid_state = base + 0x01ac; + + DRM_DEBUG("Lid switch state 0x%08x\n", *lid_state); + + dev_priv->lid_state = lid_state; + dev_priv->lid_last_state = *lid_state; + return 0; +} diff --git a/drivers/staging/mrst/medfield/Makefile b/drivers/staging/mrst/medfield/Makefile index e04562e..cbc5cbb 100644 --- a/drivers/staging/mrst/medfield/Makefile +++ b/drivers/staging/mrst/medfield/Makefile @@ -131,6 +131,7 @@ medfield_gfx-y += $(DRMDRVDIR)/psb_bl.medfield.o \ $(DRMDRVDIR)/psb_gtt.medfield.o \ $(DRMDRVDIR)/psb_hotplug.medfield.o \ $(DRMDRVDIR)/psb_intel_bios.medfield.o \ + $(DRMDRVDIR)/psb_intel_opregion.medfield.o \ $(DRMDRVDIR)/psb_intel_display.medfield.o \ $(DRMDRVDIR)/psb_intel_i2c.medfield.o \ $(DRMDRVDIR)/psb_intel_lvds.medfield.o \ diff --git a/drivers/staging/mrst/moorestown/Makefile b/drivers/staging/mrst/moorestown/Makefile index a3dad52..d5a2c92 100644 --- a/drivers/staging/mrst/moorestown/Makefile +++ b/drivers/staging/mrst/moorestown/Makefile @@ -131,6 +131,7 @@ mrst_gfx-y += $(DRMDRVDIR)/psb_bl.mrst.o \ $(DRMDRVDIR)/psb_gtt.mrst.o \ $(DRMDRVDIR)/psb_hotplug.mrst.o \ $(DRMDRVDIR)/psb_intel_bios.mrst.o \ + $(DRMDRVDIR)/psb_intel_opregion.mrst.o \ $(DRMDRVDIR)/psb_intel_display.mrst.o \ $(DRMDRVDIR)/psb_intel_i2c.mrst.o \ $(DRMDRVDIR)/psb_intel_lvds.mrst.o \ -- 1.7.1 _______________________________________________ MeeGo-kernel mailing list [email protected] http://lists.meego.com/listinfo/meego-kernel
