Lines Matching refs:par
69 static inline void sfb_write(struct pmagbbfb_par *par, unsigned int reg, u32 v) in sfb_write() argument
71 writel(v, par->sfb + reg / 4); in sfb_write()
74 static inline u32 sfb_read(struct pmagbbfb_par *par, unsigned int reg) in sfb_read() argument
76 return readl(par->sfb + reg / 4); in sfb_read()
79 static inline void dac_write(struct pmagbbfb_par *par, unsigned int reg, u8 v) in dac_write() argument
81 writeb(v, par->dac + reg / 4); in dac_write()
84 static inline u8 dac_read(struct pmagbbfb_par *par, unsigned int reg) in dac_read() argument
86 return readb(par->dac + reg / 4); in dac_read()
89 static inline void gp0_write(struct pmagbbfb_par *par, u32 v) in gp0_write() argument
91 writel(v, par->mmio + PMAGB_B_GP0); in gp0_write()
102 struct pmagbbfb_par *par = info->par; in pmagbbfb_setcolreg() local
112 dac_write(par, BT459_ADDR_LO, regno); in pmagbbfb_setcolreg()
113 dac_write(par, BT459_ADDR_HI, 0x00); in pmagbbfb_setcolreg()
115 dac_write(par, BT459_CMAP, red); in pmagbbfb_setcolreg()
117 dac_write(par, BT459_CMAP, green); in pmagbbfb_setcolreg()
119 dac_write(par, BT459_CMAP, blue); in pmagbbfb_setcolreg()
136 struct pmagbbfb_par *par = info->par; in pmagbbfb_erase_cursor() local
139 dac_write(par, BT459_ADDR_LO, 0x00); in pmagbbfb_erase_cursor()
140 dac_write(par, BT459_ADDR_HI, 0x03); in pmagbbfb_erase_cursor()
142 dac_write(par, BT459_DATA, 0x00); in pmagbbfb_erase_cursor()
150 struct pmagbbfb_par *par = info->par; in pmagbbfb_screen_setup() local
152 info->var.xres = ((sfb_read(par, SFB_REG_VID_HOR) >> in pmagbbfb_screen_setup()
155 info->var.yres = (sfb_read(par, SFB_REG_VID_VER) >> in pmagbbfb_screen_setup()
158 info->var.left_margin = ((sfb_read(par, SFB_REG_VID_HOR) >> in pmagbbfb_screen_setup()
161 info->var.right_margin = ((sfb_read(par, SFB_REG_VID_HOR) >> in pmagbbfb_screen_setup()
164 info->var.upper_margin = (sfb_read(par, SFB_REG_VID_VER) >> in pmagbbfb_screen_setup()
166 info->var.lower_margin = (sfb_read(par, SFB_REG_VID_VER) >> in pmagbbfb_screen_setup()
168 info->var.hsync_len = ((sfb_read(par, SFB_REG_VID_HOR) >> in pmagbbfb_screen_setup()
171 info->var.vsync_len = (sfb_read(par, SFB_REG_VID_VER) >> in pmagbbfb_screen_setup()
186 struct pmagbbfb_par *par = info->par; in pmagbbfb_osc_setup() local
192 gp0_write(par, 0); /* select Osc0 */ in pmagbbfb_osc_setup()
195 sfb_write(par, SFB_REG_TCCLK_COUNT, 0); in pmagbbfb_osc_setup()
198 if (sfb_read(par, SFB_REG_TCCLK_COUNT) == 0) in pmagbbfb_osc_setup()
202 count0 += sfb_read(par, SFB_REG_VIDCLK_COUNT); in pmagbbfb_osc_setup()
205 gp0_write(par, 1); /* select Osc1 */ in pmagbbfb_osc_setup()
208 sfb_write(par, SFB_REG_TCCLK_COUNT, 0); in pmagbbfb_osc_setup()
211 if (sfb_read(par, SFB_REG_TCCLK_COUNT) == 0) in pmagbbfb_osc_setup()
215 count1 += sfb_read(par, SFB_REG_VIDCLK_COUNT); in pmagbbfb_osc_setup()
219 par->osc0 = freq0; in pmagbbfb_osc_setup()
222 par->osc0 = pmagbbfb_freqs[0]; in pmagbbfb_osc_setup()
224 freq1 = (par->osc0 * count1 + count0 / 2) / count0; in pmagbbfb_osc_setup()
225 par->osc1 = freq1; in pmagbbfb_osc_setup()
231 par->osc1 = pmagbbfb_freqs[i]; in pmagbbfb_osc_setup()
235 if (par->osc0 - par->osc1 <= (par->osc0 + par->osc1 + 256) / 512 || in pmagbbfb_osc_setup()
236 par->osc1 - par->osc0 <= (par->osc0 + par->osc1 + 256) / 512) in pmagbbfb_osc_setup()
237 par->osc1 = 0; in pmagbbfb_osc_setup()
239 gp0_write(par, par->osc1 != 0); /* reselect OscX */ in pmagbbfb_osc_setup()
241 info->var.pixclock = par->osc1 ? in pmagbbfb_osc_setup()
242 (1000000000 + par->osc1 / 2) / par->osc1 : in pmagbbfb_osc_setup()
243 (1000000000 + par->osc0 / 2) / par->osc0; in pmagbbfb_osc_setup()
252 struct pmagbbfb_par *par; in pmagbbfb_probe() local
261 par = info->par; in pmagbbfb_probe()
287 par->mmio = ioremap(info->fix.mmio_start, info->fix.mmio_len); in pmagbbfb_probe()
288 if (!par->mmio) { in pmagbbfb_probe()
293 par->sfb = par->mmio + PMAGB_B_SFB; in pmagbbfb_probe()
294 par->dac = par->mmio + PMAGB_B_BT459; in pmagbbfb_probe()
298 par->smem = ioremap(info->fix.smem_start, info->fix.smem_len); in pmagbbfb_probe()
299 if (!par->smem) { in pmagbbfb_probe()
304 vid_base = sfb_read(par, SFB_REG_VID_BASE); in pmagbbfb_probe()
305 info->screen_base = (void __iomem *)par->smem + vid_base * 0x1000; in pmagbbfb_probe()
322 par->osc0 / 1000, par->osc0 % 1000); in pmagbbfb_probe()
324 par->osc1 / 1000, par->osc1 % 1000); in pmagbbfb_probe()
329 freq0, par->osc1 ? freq1 : "disabled", par->osc1 != 0); in pmagbbfb_probe()
335 iounmap(par->smem); in pmagbbfb_probe()
338 iounmap(par->mmio); in pmagbbfb_probe()
355 struct pmagbbfb_par *par = info->par; in pmagbbfb_remove() local
360 iounmap(par->smem); in pmagbbfb_remove()
361 iounmap(par->mmio); in pmagbbfb_remove()