2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2025-01-02 10:43:57 +08:00

gma500: do a pass over the FIXME tags

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Alan Cox 2011-08-26 11:18:41 +01:00 committed by Greg Kroah-Hartman
parent 0a0691a20d
commit 6b8402b5fe
10 changed files with 38 additions and 38 deletions

View File

@ -30,7 +30,6 @@
#define VGA_SR_INDEX 0x3c4 #define VGA_SR_INDEX 0x3c4
#define VGA_SR_DATA 0x3c5 #define VGA_SR_DATA 0x3c5
/* FIXME: should check if we are the active VGA device ?? */
static void cdv_disable_vga(struct drm_device *dev) static void cdv_disable_vga(struct drm_device *dev)
{ {
u8 sr1; u8 sr1;

View File

@ -733,9 +733,12 @@ static void psb_setup_outputs(struct drm_device *dev)
clone_mask = (1 << INTEL_OUTPUT_MIPI2); clone_mask = (1 << INTEL_OUTPUT_MIPI2);
break; break;
case INTEL_OUTPUT_HDMI: case INTEL_OUTPUT_HDMI:
if (IS_MFLD(dev)) /* HDMI on crtc 1 for SoC devices and crtc 0 for
Cedarview. HDMI on Poulsbo is only via external
logic */
if (IS_MFLD(dev) || IS_MRST(dev))
crtc_mask = (1 << 1); crtc_mask = (1 << 1);
else /* FIXME: review Oaktrail */ else
crtc_mask = (1 << 0); /* Cedarview */ crtc_mask = (1 << 0); /* Cedarview */
clone_mask = (1 << INTEL_OUTPUT_HDMI); clone_mask = (1 << INTEL_OUTPUT_HDMI);
break; break;

View File

@ -120,8 +120,7 @@ static int psb_gem_create(struct drm_file *file,
/* Initialize the extra goodies GEM needs to do all the hard work */ /* Initialize the extra goodies GEM needs to do all the hard work */
if (drm_gem_object_init(dev, &r->gem, size) != 0) { if (drm_gem_object_init(dev, &r->gem, size) != 0) {
psb_gtt_free_range(dev, r); psb_gtt_free_range(dev, r);
/* GEM doesn't give an error code and we don't have an /* GEM doesn't give an error code so use -ENOMEM */
EGEMSUCKS so make something up for now - FIXME */
dev_err(dev->dev, "GEM init failed for %lld\n", size); dev_err(dev->dev, "GEM init failed for %lld\n", size);
return -ENOMEM; return -ENOMEM;
} }
@ -191,8 +190,6 @@ int psb_gem_dumb_destroy(struct drm_file *file, struct drm_device *dev,
* The VMA was set up by GEM. In doing so it also ensured that the * The VMA was set up by GEM. In doing so it also ensured that the
* vma->vm_private_data points to the GEM object that is backing this * vma->vm_private_data points to the GEM object that is backing this
* mapping. * mapping.
*
* FIXME
*/ */
int psb_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf) int psb_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
{ {

View File

@ -72,9 +72,8 @@ u32 *psb_gtt_entry(struct drm_device *dev, struct gtt_range *r)
* @r: our GTT range * @r: our GTT range
* *
* Take our preallocated GTT range and insert the GEM object into * Take our preallocated GTT range and insert the GEM object into
* the GTT. * the GTT. This is protected via the gtt mutex which the caller
* * must hold.
* FIXME: gtt lock ?
*/ */
static int psb_gtt_insert(struct drm_device *dev, struct gtt_range *r) static int psb_gtt_insert(struct drm_device *dev, struct gtt_range *r)
{ {
@ -111,7 +110,8 @@ static int psb_gtt_insert(struct drm_device *dev, struct gtt_range *r)
* @r: our GTT range * @r: our GTT range
* *
* Remove a preallocated GTT range from the GTT. Overwrite all the * Remove a preallocated GTT range from the GTT. Overwrite all the
* page table entries with the dummy page * page table entries with the dummy page. This is protected via the gtt
* mutex which the caller must hold.
*/ */
static void psb_gtt_remove(struct drm_device *dev, struct gtt_range *r) static void psb_gtt_remove(struct drm_device *dev, struct gtt_range *r)
@ -136,7 +136,8 @@ static void psb_gtt_remove(struct drm_device *dev, struct gtt_range *r)
* @gt: the gtt range * @gt: the gtt range
* *
* Pin and build an in kernel list of the pages that back our GEM object. * Pin and build an in kernel list of the pages that back our GEM object.
* While we hold this the pages cannot be swapped out * While we hold this the pages cannot be swapped out. This is protected
* via the gtt mutex which the caller must hold.
*/ */
static int psb_gtt_attach_pages(struct gtt_range *gt) static int psb_gtt_attach_pages(struct gtt_range *gt)
{ {
@ -158,7 +159,7 @@ static int psb_gtt_attach_pages(struct gtt_range *gt)
gt->npage = pages; gt->npage = pages;
for (i = 0; i < pages; i++) { for (i = 0; i < pages; i++) {
/* FIXME: review flags later */ /* FIXME: needs updating as per mail from Hugh Dickins */
p = read_cache_page_gfp(mapping, i, p = read_cache_page_gfp(mapping, i,
__GFP_COLD | GFP_KERNEL); __GFP_COLD | GFP_KERNEL);
if (IS_ERR(p)) if (IS_ERR(p))
@ -181,7 +182,8 @@ err:
* *
* Undo the effect of psb_gtt_attach_pages. At this point the pages * Undo the effect of psb_gtt_attach_pages. At this point the pages
* must have been removed from the GTT as they could now be paged out * must have been removed from the GTT as they could now be paged out
* and move bus address. * and move bus address. This is protected via the gtt mutex which the
* caller must hold.
*/ */
static void psb_gtt_detach_pages(struct gtt_range *gt) static void psb_gtt_detach_pages(struct gtt_range *gt)
{ {
@ -390,15 +392,18 @@ int psb_gtt_init(struct drm_device *dev, int resume)
pg->gtt_phys_start = dev_priv->pge_ctl & PAGE_MASK; pg->gtt_phys_start = dev_priv->pge_ctl & PAGE_MASK;
/* /*
* FIXME: video mmu has hw bug to access 0x0D0000000, * The video mmu has a hw bug when accessing 0x0D0000000.
* then make gatt start at 0x0e000,0000 * Make gatt start at 0x0e000,0000. This doesn't actually
* matter for us but may do if the video acceleration ever
* gets opened up.
*/ */
pg->mmu_gatt_start = 0xE0000000; pg->mmu_gatt_start = 0xE0000000;
pg->gtt_start = pci_resource_start(dev->pdev, PSB_GTT_RESOURCE); pg->gtt_start = pci_resource_start(dev->pdev, PSB_GTT_RESOURCE);
gtt_pages = pci_resource_len(dev->pdev, PSB_GTT_RESOURCE) gtt_pages = pci_resource_len(dev->pdev, PSB_GTT_RESOURCE)
>> PAGE_SHIFT; >> PAGE_SHIFT;
/* CDV workaround */ /* Some CDV firmware doesn't report this currently. In which case the
system has 64 gtt pages */
if (pg->gtt_start == 0 || gtt_pages == 0) { if (pg->gtt_start == 0 || gtt_pages == 0) {
dev_err(dev->dev, "GTT PCI BAR not initialized.\n"); dev_err(dev->dev, "GTT PCI BAR not initialized.\n");
gtt_pages = 64; gtt_pages = 64;
@ -412,13 +417,16 @@ int psb_gtt_init(struct drm_device *dev, int resume)
if (pg->gatt_pages == 0 || pg->gatt_start == 0) { if (pg->gatt_pages == 0 || pg->gatt_start == 0) {
static struct resource fudge; /* Preferably peppermint */ static struct resource fudge; /* Preferably peppermint */
/* This can occur on CDV SDV systems. Fudge it in this case. /* This can occur on CDV SDV systems. Fudge it in this case.
We really don't care what imaginary space is being allocated We really don't care what imaginary space is being allocated
at this point */ at this point */
dev_err(dev->dev, "GATT PCI BAR not initialized.\n"); dev_err(dev->dev, "GATT PCI BAR not initialized.\n");
pg->gatt_start = 0x40000000; pg->gatt_start = 0x40000000;
pg->gatt_pages = (128 * 1024 * 1024) >> PAGE_SHIFT; pg->gatt_pages = (128 * 1024 * 1024) >> PAGE_SHIFT;
/* This is a little confusing but in fact the GTT is providing
a view from the GPU into memory and not vice versa. As such
this is really allocating space that is not the same as the
CPU address space on CDV */
fudge.start = 0x40000000; fudge.start = 0x40000000;
fudge.end = 0x40000000 + 128 * 1024 * 1024 - 1; fudge.end = 0x40000000 + 128 * 1024 * 1024 - 1;
fudge.name = "fudge"; fudge.name = "fudge";

View File

@ -20,6 +20,7 @@
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE. * DEALINGS IN THE SOFTWARE.
* *
* FIXME: resolve with the i915 version
*/ */
#include "psb_drv.h" #include "psb_drv.h"

View File

@ -282,7 +282,7 @@ static int mdfld_intel_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
return -EINVAL; return -EINVAL;
} }
#if 1 /* FIXME_JLIU7 can't enalbe cursorB/C HW issue. need to remove after HW fix */ #if 1 /* FIXME_JLIU7 can't enable cursorB/C HW issue. need to remove after HW fix */
if (pipe != 0) if (pipe != 0)
return 0; return 0;
#endif #endif
@ -484,7 +484,7 @@ void mdfld_disable_crtc (struct drm_device *dev, int pipe)
/* FIXME_JLIU7 MDFLD_PO revisit */ /* FIXME_JLIU7 MDFLD_PO revisit */
/* Wait for vblank for the disable to take effect */ /* Wait for vblank for the disable to take effect */
// MDFLD_PO_JLIU7 psb_intel_wait_for_vblank(dev); /* MDFLD_PO_JLIU7 psb_intel_wait_for_vblank(dev); */
/* Next, disable display pipes */ /* Next, disable display pipes */
temp = REG_READ(pipeconf_reg); temp = REG_READ(pipeconf_reg);
@ -561,7 +561,6 @@ static void mdfld_crtc_dpms(struct drm_crtc *crtc, int mode)
//gbdispstatus = true; //gbdispstatus = true;
} }
/* FIXME_JLIU7 MDFLD_PO replaced w/ the following function */ /* FIXME_JLIU7 MDFLD_PO replaced w/ the following function */
/* mdfld_dbi_dpms (struct drm_device *dev, int pipe, bool enabled) */ /* mdfld_dbi_dpms (struct drm_device *dev, int pipe, bool enabled) */
@ -1150,8 +1149,11 @@ static int mdfld_crtc_mode_set(struct drm_crtc *crtc,
dev->mode_config.scaling_mode_property, &scalingType); dev->mode_config.scaling_mode_property, &scalingType);
if (scalingType == DRM_MODE_SCALE_NO_SCALE) { if (scalingType == DRM_MODE_SCALE_NO_SCALE) {
/*Moorestown doesn't have register support for centering so we need to /*
mess with the h/vblank and h/vsync start and ends to get centering*/ * Medfield doesn't have register support for centering so
* we need to mess with the h/vblank and h/vsync start and
* ends to get central
*/
int offsetX = 0, offsetY = 0; int offsetX = 0, offsetY = 0;
offsetX = (adjusted_mode->crtc_hdisplay - mode->crtc_hdisplay) / 2; offsetX = (adjusted_mode->crtc_hdisplay - mode->crtc_hdisplay) / 2;

View File

@ -521,12 +521,11 @@ int mrst_pipe_set_base(struct drm_crtc *crtc,
int x, int y, struct drm_framebuffer *old_fb) int x, int y, struct drm_framebuffer *old_fb)
{ {
struct drm_device *dev = crtc->dev; struct drm_device *dev = crtc->dev;
/* struct drm_i915_master_private *master_priv; */
struct psb_intel_crtc *psb_intel_crtc = to_psb_intel_crtc(crtc); struct psb_intel_crtc *psb_intel_crtc = to_psb_intel_crtc(crtc);
struct psb_framebuffer *psbfb = to_psb_fb(crtc->fb); struct psb_framebuffer *psbfb = to_psb_fb(crtc->fb);
int pipe = psb_intel_crtc->pipe; int pipe = psb_intel_crtc->pipe;
unsigned long start, offset; unsigned long start, offset;
/* FIXME: check if we need this surely MRST is pipe 0 only */
int dspbase = (pipe == 0 ? DSPALINOFF : DSPBBASE); int dspbase = (pipe == 0 ? DSPALINOFF : DSPBBASE);
int dspsurf = (pipe == 0 ? DSPASURF : DSPBSURF); int dspsurf = (pipe == 0 ? DSPASURF : DSPBSURF);
int dspstride = (pipe == 0) ? DSPASTRIDE : DSPBSTRIDE; int dspstride = (pipe == 0) ? DSPASTRIDE : DSPBSTRIDE;
@ -572,15 +571,10 @@ int mrst_pipe_set_base(struct drm_crtc *crtc,
} }
REG_WRITE(dspcntr_reg, dspcntr); REG_WRITE(dspcntr_reg, dspcntr);
if (0 /* FIXMEAC - check what PSB needs */) { REG_WRITE(dspbase, offset);
REG_WRITE(dspbase, offset); REG_READ(dspbase);
REG_READ(dspbase); REG_WRITE(dspsurf, start);
REG_WRITE(dspsurf, start); REG_READ(dspsurf);
REG_READ(dspsurf);
} else {
REG_WRITE(dspbase, start + offset);
REG_READ(dspbase);
}
pipe_set_base_exit: pipe_set_base_exit:
gma_power_end(dev); gma_power_end(dev);

View File

@ -183,7 +183,6 @@ static void psb_lastclose(struct drm_device *dev)
static void psb_do_takedown(struct drm_device *dev) static void psb_do_takedown(struct drm_device *dev)
{ {
/* FIXME: do we need to clean up the gtt here ? */
} }
static int psb_do_init(struct drm_device *dev) static int psb_do_init(struct drm_device *dev)

View File

@ -382,7 +382,6 @@ bool psb_intel_lvds_mode_fixup(struct drm_encoder *encoder,
if (psb_intel_output->type == INTEL_OUTPUT_MIPI2) if (psb_intel_output->type == INTEL_OUTPUT_MIPI2)
panel_fixed_mode = mode_dev->panel_fixed_mode2; panel_fixed_mode = mode_dev->panel_fixed_mode2;
/* FIXME: review for Medfield */
/* PSB requires the LVDS is on pipe B, MRST has only one pipe anyway */ /* PSB requires the LVDS is on pipe B, MRST has only one pipe anyway */
if (!IS_MRST(dev) && psb_intel_crtc->pipe == 0) { if (!IS_MRST(dev) && psb_intel_crtc->pipe == 0) {
printk(KERN_ERR "Can't support LVDS on pipe A\n"); printk(KERN_ERR "Can't support LVDS on pipe A\n");

View File

@ -52,8 +52,6 @@ static void psb_lid_timer_func(unsigned long data)
pp_status = REG_READ(PP_STATUS); pp_status = REG_READ(PP_STATUS);
} while ((pp_status & PP_ON) == 0); } while ((pp_status & PP_ON) == 0);
} }
/* printk(KERN_INFO"%s: lid: closed\n", __FUNCTION__); */
dev_priv->lid_last_state = readl(lid_state); dev_priv->lid_last_state = readl(lid_state);
lid_timer_schedule: lid_timer_schedule: