blob: 36e1f9cffd05edc0342d94399012de2cb89b6ee8 [file] [log] [blame]
York Sun0e1bad42008-05-05 10:20:01 -05001/*
2 * Copyright 2008 Freescale Semiconductor, Inc.
3 * York Sun <yorksun@freescale.com>
4 *
5 * FSL DIU Framebuffer driver
6 *
Wolfgang Denk1a459662013-07-08 09:37:19 +02007 * SPDX-License-Identifier: GPL-2.0+
York Sun0e1bad42008-05-05 10:20:01 -05008 */
9
10#include <common.h>
11#include <command.h>
12#include <asm/io.h>
13
Anatolij Gustschin9e70d132010-09-24 01:06:37 +020014#include <fsl_diu_fb.h>
York Sun0e1bad42008-05-05 10:20:01 -050015
Anatolij Gustschina3921ee2010-04-24 19:27:09 +020016DECLARE_GLOBAL_DATA_PTR;
17
York Sun0e1bad42008-05-05 10:20:01 -050018void diu_set_pixel_clock(unsigned int pixclock)
19{
Jean-Christophe PLAGNIOL-VILLARD6d0f6bc2008-10-16 15:01:15 +020020 volatile immap_t *immap = (immap_t *)CONFIG_SYS_IMMR;
York Sun0e1bad42008-05-05 10:20:01 -050021 volatile clk512x_t *clk = &immap->clk;
22 volatile unsigned int *clkdvdr = &clk->scfr[0];
23 unsigned long speed_ccb, temp, pixval;
24
25 speed_ccb = get_bus_freq(0) * 4;
26 temp = 1000000000/pixclock;
27 temp *= 1000;
28 pixval = speed_ccb / temp;
29 debug("DIU pixval = %lu\n", pixval);
30
31 /* Modify PXCLK in GUTS CLKDVDR */
Detlev Zundel57ae8a52010-01-21 17:55:58 +010032 debug("DIU: Current value of CLKDVDR = 0x%08x\n", in_be32(clkdvdr));
33 temp = in_be32(clkdvdr) & 0xFFFFFF00;
34 out_be32(clkdvdr, temp | (pixval & 0xFF));
35 debug("DIU: Modified value of CLKDVDR = 0x%08x\n", in_be32(clkdvdr));
York Sun0e1bad42008-05-05 10:20:01 -050036}
37
Timur Tabiba8e76b2011-04-11 14:18:22 -050038int platform_diu_init(unsigned int xres, unsigned int yres, const char *port)
York Sun0e1bad42008-05-05 10:20:01 -050039{
Timur Tabiba8e76b2011-04-11 14:18:22 -050040 unsigned int pixel_format = 0x88883316;
York Sun0e1bad42008-05-05 10:20:01 -050041
Wolfgang Denkde26ef92009-05-16 10:47:38 +020042 debug("mpc5121_diu_init\n");
Timur Tabi3b4a2262011-05-26 09:02:17 -050043 return fsl_diu_init(xres, yres, pixel_format, 0);
York Sun0e1bad42008-05-05 10:20:01 -050044}