Lines Matching refs:sossi

68 } sossi;  variable
72 return readl(sossi.base + reg); in sossi_read_reg()
77 return readw(sossi.base + reg); in sossi_read_reg16()
82 return readb(sossi.base + reg); in sossi_read_reg8()
87 writel(value, sossi.base + reg); in sossi_write_reg()
92 writew(value, sossi.base + reg); in sossi_write_reg16()
97 writeb(value, sossi.base + reg); in sossi_write_reg8()
114 u32 clk_period = HZ_TO_PS(sossi.fck_hz) * div; in ps_to_sossi_ticks()
213 dev_dbg(sossi.fbdev->dev, "Using TW0 = %d, TW1 = %d, div = %d\n", in _set_timing()
217 clk_set_rate(sossi.fck, sossi.fck_hz / div); in _set_timing()
218 clk_enable(sossi.fck); in _set_timing()
223 clk_disable(sossi.fck); in _set_timing()
254 if (access != sossi.last_access) { in set_timing()
255 sossi.last_access = access; in set_timing()
256 _set_timing(sossi.clk_div, in set_timing()
257 sossi.clk_tw0[access], sossi.clk_tw1[access]); in set_timing()
304 unsigned long nr_cycles = len / (sossi.bus_pick_width / 8); in set_cycles()
340 sossi.clk_tw0[RD_ACCESS] = t->tim[0]; in sossi_set_timings()
341 sossi.clk_tw1[RD_ACCESS] = t->tim[1]; in sossi_set_timings()
343 sossi.clk_tw0[WR_ACCESS] = t->tim[2]; in sossi_set_timings()
344 sossi.clk_tw1[WR_ACCESS] = t->tim[3]; in sossi_set_timings()
346 sossi.clk_div = t->tim[4]; in sossi_set_timings()
351 *clk_period = HZ_TO_PS(sossi.fck_hz); in sossi_get_clk_info()
377 sossi.bus_pick_width = bus_pick_width; in sossi_set_bits_per_cycle()
378 sossi.bus_pick_count = bus_pick_count; in sossi_set_bits_per_cycle()
402 dev_dbg(sossi.fbdev->dev, in sossi_setup_tearsync()
406 clk_enable(sossi.fck); in sossi_setup_tearsync()
420 clk_disable(sossi.fck); in sossi_setup_tearsync()
429 dev_dbg(sossi.fbdev->dev, "tearsync %d line %d\n", enable, line); in sossi_enable_tearsync()
439 sossi.tearsync_line = line; in sossi_enable_tearsync()
440 sossi.tearsync_mode = mode; in sossi_enable_tearsync()
447 clk_enable(sossi.fck); in sossi_write_command()
449 _set_bits_per_cycle(sossi.bus_pick_count, sossi.bus_pick_width); in sossi_write_command()
457 clk_disable(sossi.fck); in sossi_write_command()
462 clk_enable(sossi.fck); in sossi_write_data()
464 _set_bits_per_cycle(sossi.bus_pick_count, sossi.bus_pick_width); in sossi_write_data()
472 clk_disable(sossi.fck); in sossi_write_data()
480 sossi.lcdc_callback = callback; in sossi_transfer_area()
481 sossi.lcdc_callback_data = data; in sossi_transfer_area()
483 clk_enable(sossi.fck); in sossi_transfer_area()
485 _set_bits_per_cycle(sossi.bus_pick_count, sossi.bus_pick_width); in sossi_transfer_area()
486 _set_tearsync_mode(sossi.tearsync_mode, sossi.tearsync_line); in sossi_transfer_area()
489 set_cycles(width * height * sossi.bus_pick_width / 8); in sossi_transfer_area()
492 if (sossi.tearsync_mode) { in sossi_transfer_area()
501 spin_lock_irqsave(&sossi.lock, flags); in sossi_transfer_area()
502 sossi.vsync_dma_pending++; in sossi_transfer_area()
503 spin_unlock_irqrestore(&sossi.lock, flags); in sossi_transfer_area()
513 clk_disable(sossi.fck); in sossi_dma_callback()
514 sossi.lcdc_callback(sossi.lcdc_callback_data); in sossi_dma_callback()
519 clk_enable(sossi.fck); in sossi_read_data()
521 _set_bits_per_cycle(sossi.bus_pick_count, sossi.bus_pick_width); in sossi_read_data()
542 clk_disable(sossi.fck); in sossi_read_data()
549 spin_lock_irqsave(&sossi.lock, flags); in sossi_match_irq()
550 if (sossi.vsync_dma_pending) { in sossi_match_irq()
551 sossi.vsync_dma_pending--; in sossi_match_irq()
554 spin_unlock_irqrestore(&sossi.lock, flags); in sossi_match_irq()
565 sossi.base = ioremap(OMAP_SOSSI_BASE, SZ_1K); in sossi_init()
566 if (!sossi.base) { in sossi_init()
571 sossi.fbdev = fbdev; in sossi_init()
572 spin_lock_init(&sossi.lock); in sossi_init()
584 sossi.fck_hz = clk_get_rate(dpll1out_ck); in sossi_init()
592 sossi.fck = fck; in sossi_init()
601 clk_enable(sossi.fck); in sossi_init()
643 "sossi_match", sossi.fbdev->dev)) < 0) { in sossi_init()
644 dev_err(sossi.fbdev->dev, "can't get SoSSI match IRQ\n"); in sossi_init()
648 clk_disable(sossi.fck); in sossi_init()
652 clk_disable(sossi.fck); in sossi_init()
653 clk_put(sossi.fck); in sossi_init()
660 clk_put(sossi.fck); in sossi_cleanup()
661 iounmap(sossi.base); in sossi_cleanup()