#include <asm/div64.h>
 #include <asm/delay.h>
 
-#include "geodefb.h"
-#include "display_gx.h"
 #include "gxfb.h"
 
 unsigned int gx_frame_buffer_size(void)
        return (xres * (bpp >> 3) + 7) & ~0x7;
 }
 
-static void gx_set_mode(struct fb_info *info)
+void gx_set_mode(struct fb_info *info)
 {
-       struct geodefb_par *par = info->par;
+       struct gxfb_par *par = info->par;
        u32 gcfg, dcfg;
        int hactive, hblankstart, hsyncstart, hsyncend, hblankend, htotal;
        int vactive, vblankstart, vsyncstart, vsyncend, vblankend, vtotal;
        write_dc(par, DC_GENERAL_CFG, gcfg);
 
        /* Setup DCLK and its divisor. */
-       par->vid_ops->set_dclk(info);
+       gx_set_dclk_frequency(info);
 
        /*
         * Setup new mode.
        write_dc(par, DC_DISPLAY_CFG, dcfg);
        write_dc(par, DC_GENERAL_CFG, gcfg);
 
-       par->vid_ops->configure_display(info);
+       gx_configure_display(info);
 
        /* Relock display controller registers */
        write_dc(par, DC_UNLOCK, DC_UNLOCK_LOCK);
 }
 
-static void gx_set_hw_palette_reg(struct fb_info *info, unsigned regno,
-                                  unsigned red, unsigned green, unsigned blue)
+void gx_set_hw_palette_reg(struct fb_info *info, unsigned regno,
+               unsigned red, unsigned green, unsigned blue)
 {
-       struct geodefb_par *par = info->par;
+       struct gxfb_par *par = info->par;
        int val;
 
        /* Hardware palette is in RGB 8-8-8 format. */
        write_dc(par, DC_PAL_ADDRESS, regno);
        write_dc(par, DC_PAL_DATA, val);
 }
-
-struct geode_dc_ops gx_dc_ops = {
-       .set_mode        = gx_set_mode,
-       .set_palette_reg = gx_set_hw_palette_reg,
-};
 
+++ /dev/null
-/*
- * Geode GX display controller
- *
- * Copyright (C) 2006 Arcom Control Systems Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- */
-#ifndef __DISPLAY_GX_H__
-#define __DISPLAY_GX_H__
-
-unsigned int gx_frame_buffer_size(void);
-int gx_line_delta(int xres, int bpp);
-
-extern struct geode_dc_ops gx_dc_ops;
-
-#endif /* !__DISPLAY_GX1_H__ */
 
 /*
  * Copyright (C) 2008 Andres Salomon <dilinger@debian.org>
  *
- * Geode GX2 register tables
+ * Geode GX2 header information
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
 
 #include <linux/io.h>
 
+struct gxfb_par {
+       int enable_crt;
+       void __iomem *dc_regs;
+       void __iomem *vid_regs;
+};
+
+unsigned int gx_frame_buffer_size(void);
+int gx_line_delta(int xres, int bpp);
+void gx_set_mode(struct fb_info *info);
+void gx_set_hw_palette_reg(struct fb_info *info, unsigned regno,
+               unsigned red, unsigned green, unsigned blue);
+
+void gx_set_dclk_frequency(struct fb_info *info);
+void gx_configure_display(struct fb_info *info);
+int gx_blank_display(struct fb_info *info, int blank_mode);
+
+
 /* Display Controller registers (table 6-38 from the data book) */
 enum dc_registers {
        DC_UNLOCK = 0,
 
 /* register access functions */
 
-static inline uint32_t read_dc(struct geodefb_par *par, int reg)
+static inline uint32_t read_dc(struct gxfb_par *par, int reg)
 {
        return readl(par->dc_regs + 4*reg);
 }
 
-static inline void write_dc(struct geodefb_par *par, int reg, uint32_t val)
+static inline void write_dc(struct gxfb_par *par, int reg, uint32_t val)
 {
        writel(val, par->dc_regs + 4*reg);
 }
 
 
-static inline uint32_t read_vp(struct geodefb_par *par, int reg)
+static inline uint32_t read_vp(struct gxfb_par *par, int reg)
 {
        return readl(par->vid_regs + 8*reg);
 }
 
-static inline void write_vp(struct geodefb_par *par, int reg, uint32_t val)
+static inline void write_vp(struct gxfb_par *par, int reg, uint32_t val)
 {
        writel(val, par->vid_regs + 8*reg);
 }
 
-static inline uint32_t read_fp(struct geodefb_par *par, int reg)
+static inline uint32_t read_fp(struct gxfb_par *par, int reg)
 {
        return readl(par->vid_regs + 8*reg + VP_FP_START);
 }
 
-static inline void write_fp(struct geodefb_par *par, int reg, uint32_t val)
+static inline void write_fp(struct gxfb_par *par, int reg, uint32_t val)
 {
        writel(val, par->vid_regs + 8*reg + VP_FP_START);
 }
 
 #include <linux/pci.h>
 #include <asm/geode.h>
 
-#include "geodefb.h"
-#include "display_gx.h"
-#include "video_gx.h"
 #include "gxfb.h"
 
 static char *mode_option;
 
 static int gxfb_set_par(struct fb_info *info)
 {
-       struct geodefb_par *par = info->par;
-
        if (info->var.bits_per_pixel > 8) {
                info->fix.visual = FB_VISUAL_TRUECOLOR;
                fb_dealloc_cmap(&info->cmap);
 
        info->fix.line_length = gx_line_delta(info->var.xres, info->var.bits_per_pixel);
 
-       par->dc_ops->set_mode(info);
+       gx_set_mode(info);
 
        return 0;
 }
                           unsigned blue, unsigned transp,
                           struct fb_info *info)
 {
-       struct geodefb_par *par = info->par;
-
        if (info->var.grayscale) {
                /* grayscale = 0.30*R + 0.59*G + 0.11*B */
                red = green = blue = (red * 77 + green * 151 + blue * 28) >> 8;
                if (regno >= 256)
                        return -EINVAL;
 
-               par->dc_ops->set_palette_reg(info, regno, red, green, blue);
+               gx_set_hw_palette_reg(info, regno, red, green, blue);
        }
 
        return 0;
 
 static int gxfb_blank(int blank_mode, struct fb_info *info)
 {
-       struct geodefb_par *par = info->par;
-
-       return par->vid_ops->blank_display(info, blank_mode);
+       return gx_blank_display(info, blank_mode);
 }
 
 static int __init gxfb_map_video_memory(struct fb_info *info, struct pci_dev *dev)
 {
-       struct geodefb_par *par = info->par;
+       struct gxfb_par *par = info->par;
        int ret;
 
        ret = pci_enable_device(dev);
 
 static struct fb_info * __init gxfb_init_fbinfo(struct device *dev)
 {
-       struct geodefb_par *par;
+       struct gxfb_par *par;
        struct fb_info *info;
 
        /* Alloc enough space for the pseudo palette. */
-       info = framebuffer_alloc(sizeof(struct geodefb_par) + sizeof(u32) * 16, dev);
+       info = framebuffer_alloc(sizeof(struct gxfb_par) + sizeof(u32) * 16,
+                       dev);
        if (!info)
                return NULL;
 
        info->flags             = FBINFO_DEFAULT;
        info->node              = -1;
 
-       info->pseudo_palette    = (void *)par + sizeof(struct geodefb_par);
+       info->pseudo_palette    = (void *)par + sizeof(struct gxfb_par);
 
        info->var.grayscale     = 0;
 
 
 static int __init gxfb_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 {
-       struct geodefb_par *par;
+       struct gxfb_par *par;
        struct fb_info *info;
        int ret;
        unsigned long val;
                return -ENOMEM;
        par = info->par;
 
-       /* GX display controller and GX video device. */
-       par->dc_ops  = &gx_dc_ops;
-       par->vid_ops = &gx_vid_ops;
-
        if ((ret = gxfb_map_video_memory(info, pdev)) < 0) {
                dev_err(&pdev->dev, "failed to map frame buffer or controller registers\n");
                goto err;
 static void gxfb_remove(struct pci_dev *pdev)
 {
        struct fb_info *info = pci_get_drvdata(pdev);
-       struct geodefb_par *par = info->par;
+       struct gxfb_par *par = info->par;
 
        unregister_framebuffer(info);
 
 
 #include <asm/msr.h>
 #include <asm/geode.h>
 
-#include "geodefb.h"
-#include "video_gx.h"
 #include "gxfb.h"
 
 
        {  4357, 0, 0x0000057D },       /* 229.5000 */
 };
 
-static void gx_set_dclk_frequency(struct fb_info *info)
+void gx_set_dclk_frequency(struct fb_info *info)
 {
        const struct gx_pll_entry *pll_table;
        int pll_table_len;
 static void
 gx_configure_tft(struct fb_info *info)
 {
-       struct geodefb_par *par = info->par;
+       struct gxfb_par *par = info->par;
        unsigned long val;
        unsigned long fp;
 
        write_fp(par, FP_PM, fp);
 }
 
-static void gx_configure_display(struct fb_info *info)
+void gx_configure_display(struct fb_info *info)
 {
-       struct geodefb_par *par = info->par;
+       struct gxfb_par *par = info->par;
        u32 dcfg, misc;
 
        /* Write the display configuration */
                gx_configure_tft(info);
 }
 
-static int gx_blank_display(struct fb_info *info, int blank_mode)
+int gx_blank_display(struct fb_info *info, int blank_mode)
 {
-       struct geodefb_par *par = info->par;
+       struct gxfb_par *par = info->par;
        u32 dcfg, fp_pm;
        int blank, hsync, vsync;
 
 
        return 0;
 }
-
-struct geode_vid_ops gx_vid_ops = {
-       .set_dclk          = gx_set_dclk_frequency,
-       .configure_display = gx_configure_display,
-       .blank_display     = gx_blank_display,
-};
 
+++ /dev/null
-/*
- * Geode GX video device
- *
- * Copyright (C) 2006 Arcom Control Systems Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- */
-#ifndef __VIDEO_GX_H__
-#define __VIDEO_GX_H__
-
-extern struct geode_vid_ops gx_vid_ops;
-
-#endif /* !__VIDEO_GX_H__ */