// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright 2017 Toradex AG
 *
 * FSL DCU platform driver
 */

#include <asm/arch/crm_regs.h>
#include <asm/io.h>
#include <common.h>
#include <fsl_dcu_fb.h>
#include "div64.h"

unsigned int dcu_set_pixel_clock(unsigned int pixclock)
{
	struct ccm_reg *ccm = (struct ccm_reg *)CCM_BASE_ADDR;
	unsigned long long div;

	clrbits_le32(&ccm->cscmr1, CCM_CSCMR1_DCU0_CLK_SEL);
	clrsetbits_le32(&ccm->cscdr3,
			CCM_CSCDR3_DCU0_DIV_MASK | CCM_CSCDR3_DCU0_EN,
			CCM_CSCDR3_DCU0_DIV(0) | CCM_CSCDR3_DCU0_EN);
	div = (unsigned long long)(PLL1_PFD2_FREQ / 1000);
	do_div(div, pixclock);

	return div;
}

int platform_dcu_init(struct fb_info *fbinfo,
		      unsigned int xres,
		      unsigned int yres,
		      const char *port,
		      struct fb_videomode *dcu_fb_videomode)
{
	fsl_dcu_init(fbinfo, xres, yres, 32);

	return 0;
}
