Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 664f5b20 authored by Thomas Abraham's avatar Thomas Abraham Committed by Ben Dooks
Browse files

ARM: S5PV210: Fix clk_get_rate issue with the clk_h100 clock



The clk_h100 clock represents the IMEM clock for the MSYS domain.
This clock rate of this clock is always half of the hclk_msys clock.
There is an issue when getting the clock rate of the clk_h100 clock
(clock get_rate hclk_h100 always returns clock rate that is equal to
the hclk_msys clock rate).

This patch modifies the following.

1. Moves the definition of the clk_h100 clock into the 'init_clocks'
   list with the appropriate parent, ctrlbit, enable and ops fields.

2. The name of the clock is changed from 'clk_h100' to 'hclk_imem'
   to represent more clearly that is represents the IMEM clock in
   the MSYS domain.

3. The function to get the clock rate of the hclk_imem clock is added.

Signed-off-by: default avatarThomas Abraham <thomas.ab@samsung.com>
Signed-off-by: default avatarKukjin Kim <kgene.kim@samsung.com>
Signed-off-by: default avatarBen Dooks <ben-linux@fluff.org>
parent 6ed91a20
Loading
Loading
Loading
Loading
+16 −6
Original line number Original line Diff line number Diff line
@@ -155,11 +155,6 @@ static int s5pv210_clk_ip3_ctrl(struct clk *clk, int enable)
	return s5p_gatectrl(S5P_CLKGATE_IP3, clk, enable);
	return s5p_gatectrl(S5P_CLKGATE_IP3, clk, enable);
}
}


static struct clk clk_h100 = {
	.name		= "hclk100",
	.id		= -1,
};

static struct clk clk_p83 = {
static struct clk clk_p83 = {
	.name		= "pclk83",
	.name		= "pclk83",
	.id		= -1,
	.id		= -1,
@@ -171,11 +166,19 @@ static struct clk clk_p66 = {
};
};


static struct clk *sys_clks[] = {
static struct clk *sys_clks[] = {
	&clk_h100,
	&clk_p83,
	&clk_p83,
	&clk_p66
	&clk_p66
};
};


static unsigned long s5pv210_clk_imem_get_rate(struct clk *clk)
{
	return clk_get_rate(clk->parent) / 2;
}

static struct clk_ops clk_hclk_imem_ops = {
	.get_rate	= s5pv210_clk_imem_get_rate,
};

static struct clk init_clocks_disable[] = {
static struct clk init_clocks_disable[] = {
	{
	{
		.name		= "rot",
		.name		= "rot",
@@ -326,6 +329,13 @@ static struct clk init_clocks_disable[] = {


static struct clk init_clocks[] = {
static struct clk init_clocks[] = {
	{
	{
		.name		= "hclk_imem",
		.id		= -1,
		.parent		= &clk_hclk_msys.clk,
		.ctrlbit	= (1 << 5),
		.enable		= s5pv210_clk_ip0_ctrl,
		.ops		= &clk_hclk_imem_ops,
	}, {
		.name		= "uart",
		.name		= "uart",
		.id		= 0,
		.id		= 0,
		.parent		= &clk_p66,
		.parent		= &clk_p66,