Lines Matching defs:par
69 static inline void sfb_write(struct pmagbbfb_par *par, unsigned int reg, u32 v)
71 writel(v, par->sfb + reg / 4);
74 static inline u32 sfb_read(struct pmagbbfb_par *par, unsigned int reg)
76 return readl(par->sfb + reg / 4);
79 static inline void dac_write(struct pmagbbfb_par *par, unsigned int reg, u8 v)
81 writeb(v, par->dac + reg / 4);
84 static inline u8 dac_read(struct pmagbbfb_par *par, unsigned int reg)
86 return readb(par->dac + reg / 4);
89 static inline void gp0_write(struct pmagbbfb_par *par, u32 v)
91 writel(v, par->mmio + PMAGB_B_GP0);
102 struct pmagbbfb_par *par = info->par;
112 dac_write(par, BT459_ADDR_LO, regno);
113 dac_write(par, BT459_ADDR_HI, 0x00);
115 dac_write(par, BT459_CMAP, red);
117 dac_write(par, BT459_CMAP, green);
119 dac_write(par, BT459_CMAP, blue);
138 struct pmagbbfb_par *par = info->par;
141 dac_write(par, BT459_ADDR_LO, 0x00);
142 dac_write(par, BT459_ADDR_HI, 0x03);
144 dac_write(par, BT459_DATA, 0x00);
152 struct pmagbbfb_par *par = info->par;
154 info->var.xres = ((sfb_read(par, SFB_REG_VID_HOR) >>
157 info->var.yres = (sfb_read(par, SFB_REG_VID_VER) >>
160 info->var.left_margin = ((sfb_read(par, SFB_REG_VID_HOR) >>
163 info->var.right_margin = ((sfb_read(par, SFB_REG_VID_HOR) >>
166 info->var.upper_margin = (sfb_read(par, SFB_REG_VID_VER) >>
168 info->var.lower_margin = (sfb_read(par, SFB_REG_VID_VER) >>
170 info->var.hsync_len = ((sfb_read(par, SFB_REG_VID_HOR) >>
173 info->var.vsync_len = (sfb_read(par, SFB_REG_VID_VER) >>
188 struct pmagbbfb_par *par = info->par;
194 gp0_write(par, 0); /* select Osc0 */
197 sfb_write(par, SFB_REG_TCCLK_COUNT, 0);
200 if (sfb_read(par, SFB_REG_TCCLK_COUNT) == 0)
204 count0 += sfb_read(par, SFB_REG_VIDCLK_COUNT);
207 gp0_write(par, 1); /* select Osc1 */
210 sfb_write(par, SFB_REG_TCCLK_COUNT, 0);
213 if (sfb_read(par, SFB_REG_TCCLK_COUNT) == 0)
217 count1 += sfb_read(par, SFB_REG_VIDCLK_COUNT);
221 par->osc0 = freq0;
224 par->osc0 = pmagbbfb_freqs[0];
226 freq1 = (par->osc0 * count1 + count0 / 2) / count0;
227 par->osc1 = freq1;
233 par->osc1 = pmagbbfb_freqs[i];
237 if (par->osc0 - par->osc1 <= (par->osc0 + par->osc1 + 256) / 512 ||
238 par->osc1 - par->osc0 <= (par->osc0 + par->osc1 + 256) / 512)
239 par->osc1 = 0;
241 gp0_write(par, par->osc1 != 0); /* reselect OscX */
243 info->var.pixclock = par->osc1 ?
244 (1000000000 + par->osc1 / 2) / par->osc1 :
245 (1000000000 + par->osc0 / 2) / par->osc0;
254 struct pmagbbfb_par *par;
263 par = info->par;
290 par->mmio = ioremap(info->fix.mmio_start, info->fix.mmio_len);
291 if (!par->mmio) {
296 par->sfb = par->mmio + PMAGB_B_SFB;
297 par->dac = par->mmio + PMAGB_B_BT459;
301 par->smem = ioremap(info->fix.smem_start, info->fix.smem_len);
302 if (!par->smem) {
307 vid_base = sfb_read(par, SFB_REG_VID_BASE);
308 info->screen_base = (void __iomem *)par->smem + vid_base * 0x1000;
325 par->osc0 / 1000, par->osc0 % 1000);
327 par->osc1 / 1000, par->osc1 % 1000);
332 freq0, par->osc1 ? freq1 : "disabled", par->osc1 != 0);
338 iounmap(par->smem);
341 iounmap(par->mmio);
358 struct pmagbbfb_par *par = info->par;
363 iounmap(par->smem);
364 iounmap(par->mmio);