···3030#define VGA_SR_INDEX 0x3c43131#define VGA_SR_DATA 0x3c532323333-/* FIXME: should check if we are the active VGA device ?? */3433static void cdv_disable_vga(struct drm_device *dev)3534{3635 u8 sr1;
+1-4
drivers/gpu/drm/gma500/gem.c
···120120 /* Initialize the extra goodies GEM needs to do all the hard work */121121 if (drm_gem_object_init(dev, &r->gem, size) != 0) {122122 psb_gtt_free_range(dev, r);123123- /* GEM doesn't give an error code and we don't have an124124- EGEMSUCKS so make something up for now - FIXME */123123+ /* GEM doesn't give an error code so use -ENOMEM */125124 dev_err(dev->dev, "GEM init failed for %lld\n", size);126125 return -ENOMEM;127126 }···190191 * The VMA was set up by GEM. In doing so it also ensured that the191192 * vma->vm_private_data points to the GEM object that is backing this192193 * mapping.193193- *194194- * FIXME195194 */196195int psb_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)197196{
+19-11
drivers/gpu/drm/gma500/gtt.c
···7272 * @r: our GTT range7373 *7474 * Take our preallocated GTT range and insert the GEM object into7575- * the GTT.7676- *7777- * FIXME: gtt lock ?7575+ * the GTT. This is protected via the gtt mutex which the caller7676+ * must hold.7877 */7978static int psb_gtt_insert(struct drm_device *dev, struct gtt_range *r)8079{···110111 * @r: our GTT range111112 *112113 * Remove a preallocated GTT range from the GTT. Overwrite all the113113- * page table entries with the dummy page114114+ * page table entries with the dummy page. This is protected via the gtt115115+ * mutex which the caller must hold.114116 */115117116118static void psb_gtt_remove(struct drm_device *dev, struct gtt_range *r)···136136 * @gt: the gtt range137137 *138138 * Pin and build an in kernel list of the pages that back our GEM object.139139- * While we hold this the pages cannot be swapped out139139+ * While we hold this the pages cannot be swapped out. This is protected140140+ * via the gtt mutex which the caller must hold.140141 */141142static int psb_gtt_attach_pages(struct gtt_range *gt)142143{···159158 gt->npage = pages;160159161160 for (i = 0; i < pages; i++) {162162- /* FIXME: review flags later */161161+ /* FIXME: needs updating as per mail from Hugh Dickins */163162 p = read_cache_page_gfp(mapping, i,164163 __GFP_COLD | GFP_KERNEL);165164 if (IS_ERR(p))···182181 *183182 * Undo the effect of psb_gtt_attach_pages. At this point the pages184183 * must have been removed from the GTT as they could now be paged out185185- * and move bus address.184184+ * and move bus address. This is protected via the gtt mutex which the185185+ * caller must hold.186186 */187187static void psb_gtt_detach_pages(struct gtt_range *gt)188188{···392390 pg->gtt_phys_start = dev_priv->pge_ctl & PAGE_MASK;393391394392 /*395395- * FIXME: video mmu has hw bug to access 0x0D0000000,396396- * then make gatt start at 0x0e000,0000393393+ * The video mmu has a hw bug when accessing 0x0D0000000.394394+ * Make gatt start at 0x0e000,0000. This doesn't actually395395+ * matter for us but may do if the video acceleration ever396396+ * gets opened up.397397 */398398 pg->mmu_gatt_start = 0xE0000000;399399400400 pg->gtt_start = pci_resource_start(dev->pdev, PSB_GTT_RESOURCE);401401 gtt_pages = pci_resource_len(dev->pdev, PSB_GTT_RESOURCE)402402 >> PAGE_SHIFT;403403- /* CDV workaround */403403+ /* Some CDV firmware doesn't report this currently. In which case the404404+ system has 64 gtt pages */404405 if (pg->gtt_start == 0 || gtt_pages == 0) {405406 dev_err(dev->dev, "GTT PCI BAR not initialized.\n");406407 gtt_pages = 64;···417412418413 if (pg->gatt_pages == 0 || pg->gatt_start == 0) {419414 static struct resource fudge; /* Preferably peppermint */420420-421415 /* This can occur on CDV SDV systems. Fudge it in this case.422416 We really don't care what imaginary space is being allocated423417 at this point */424418 dev_err(dev->dev, "GATT PCI BAR not initialized.\n");425419 pg->gatt_start = 0x40000000;426420 pg->gatt_pages = (128 * 1024 * 1024) >> PAGE_SHIFT;421421+ /* This is a little confusing but in fact the GTT is providing422422+ a view from the GPU into memory and not vice versa. As such423423+ this is really allocating space that is not the same as the424424+ CPU address space on CDV */427425 fudge.start = 0x40000000;428426 fudge.end = 0x40000000 + 128 * 1024 * 1024 - 1;429427 fudge.name = "fudge";
+1
drivers/gpu/drm/gma500/intel_opregion.c
···2020 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER2121 * DEALINGS IN THE SOFTWARE.2222 *2323+ * FIXME: resolve with the i915 version2324 */24252526#include "psb_drv.h"
+5-11
drivers/gpu/drm/gma500/oaktrail_crtc.c
···521521 int x, int y, struct drm_framebuffer *old_fb)522522{523523 struct drm_device *dev = crtc->dev;524524- /* struct drm_i915_master_private *master_priv; */525524 struct psb_intel_crtc *psb_intel_crtc = to_psb_intel_crtc(crtc);526525 struct psb_framebuffer *psbfb = to_psb_fb(crtc->fb);527526 int pipe = psb_intel_crtc->pipe;528527 unsigned long start, offset;529529- /* FIXME: check if we need this surely MRST is pipe 0 only */528528+530529 int dspbase = (pipe == 0 ? DSPALINOFF : DSPBBASE);531530 int dspsurf = (pipe == 0 ? DSPASURF : DSPBSURF);532531 int dspstride = (pipe == 0) ? DSPASTRIDE : DSPBSTRIDE;···571572 }572573 REG_WRITE(dspcntr_reg, dspcntr);573574574574- if (0 /* FIXMEAC - check what PSB needs */) {575575- REG_WRITE(dspbase, offset);576576- REG_READ(dspbase);577577- REG_WRITE(dspsurf, start);578578- REG_READ(dspsurf);579579- } else {580580- REG_WRITE(dspbase, start + offset);581581- REG_READ(dspbase);582582- }575575+ REG_WRITE(dspbase, offset);576576+ REG_READ(dspbase);577577+ REG_WRITE(dspsurf, start);578578+ REG_READ(dspsurf);583579584580pipe_set_base_exit:585581 gma_power_end(dev);
-1
drivers/gpu/drm/gma500/psb_drv.c
···141141142142static void psb_do_takedown(struct drm_device *dev)143143{144144- /* FIXME: do we need to clean up the gtt here ? */145144}146145147146static int psb_do_init(struct drm_device *dev)
-1
drivers/gpu/drm/gma500/psb_intel_lvds.c
···382382 if (psb_intel_output->type == INTEL_OUTPUT_MIPI2)383383 panel_fixed_mode = mode_dev->panel_fixed_mode2;384384385385- /* FIXME: review for Medfield */386385 /* PSB requires the LVDS is on pipe B, MRST has only one pipe anyway */387386 if (!IS_MRST(dev) && psb_intel_crtc->pipe == 0) {388387 printk(KERN_ERR "Can't support LVDS on pipe A\n");