Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Librem5
uboot-imx
Commits
fed029f3
Commit
fed029f3
authored
Apr 04, 2013
by
Albert ARIBAUD
Browse files
Merge branch 'u-boot-samsung/master' into 'u-boot-arm/master'
parents
be08abc2
4fdebefa
Changes
34
Hide whitespace changes
Inline
Side-by-side
Makefile
View file @
fed029f3
...
...
@@ -273,6 +273,7 @@ LIBS-y += disk/libdisk.o
LIBS-y
+=
drivers/bios_emulator/libatibiosemu.o
LIBS-y
+=
drivers/block/libblock.o
LIBS-$(CONFIG_BOOTCOUNT_LIMIT)
+=
drivers/bootcount/libbootcount.o
LIBS-y
+=
drivers/crypto/libcrypto.o
LIBS-y
+=
drivers/dma/libdma.o
LIBS-y
+=
drivers/fpga/libfpga.o
LIBS-y
+=
drivers/gpio/libgpio.o
...
...
arch/arm/cpu/armv7/exynos/clock.c
View file @
fed029f3
...
...
@@ -27,6 +27,49 @@
#include
<asm/arch/clk.h>
#include
<asm/arch/periph.h>
/* *
* This structure is to store the src bit, div bit and prediv bit
* positions of the peripheral clocks of the src and div registers
*/
struct
clk_bit_info
{
int8_t
src_bit
;
int8_t
div_bit
;
int8_t
prediv_bit
;
};
/* src_bit div_bit prediv_bit */
static
struct
clk_bit_info
clk_bit_info
[
PERIPH_ID_COUNT
]
=
{
{
0
,
0
,
-
1
},
{
4
,
4
,
-
1
},
{
8
,
8
,
-
1
},
{
12
,
12
,
-
1
},
{
0
,
0
,
8
},
{
4
,
16
,
24
},
{
8
,
0
,
8
},
{
12
,
16
,
24
},
{
-
1
,
-
1
,
-
1
},
{
16
,
0
,
8
},
{
20
,
16
,
24
},
{
24
,
0
,
8
},
{
0
,
0
,
4
},
{
4
,
12
,
16
},
{
-
1
,
-
1
,
-
1
},
{
-
1
,
-
1
,
-
1
},
{
-
1
,
24
,
0
},
{
-
1
,
24
,
0
},
{
-
1
,
24
,
0
},
{
-
1
,
24
,
0
},
{
-
1
,
24
,
0
},
{
-
1
,
24
,
0
},
{
-
1
,
24
,
0
},
{
-
1
,
24
,
0
},
{
24
,
0
,
-
1
},
{
24
,
0
,
-
1
},
{
24
,
0
,
-
1
},
{
24
,
0
,
-
1
},
{
24
,
0
,
-
1
},
};
/* Epll Clock division values to achive different frequency output */
static
struct
set_epll_con_val
exynos5_epll_div
[]
=
{
{
192000000
,
0
,
48
,
3
,
1
,
0
},
...
...
@@ -201,6 +244,107 @@ static unsigned long exynos5_get_pll_clk(int pllreg)
return
fout
;
}
static
unsigned
long
exynos5_get_periph_rate
(
int
peripheral
)
{
struct
clk_bit_info
*
bit_info
=
&
clk_bit_info
[
peripheral
];
unsigned
long
sclk
,
sub_clk
;
unsigned
int
src
,
div
,
sub_div
;
struct
exynos5_clock
*
clk
=
(
struct
exynos5_clock
*
)
samsung_get_base_clock
();
switch
(
peripheral
)
{
case
PERIPH_ID_UART0
:
case
PERIPH_ID_UART1
:
case
PERIPH_ID_UART2
:
case
PERIPH_ID_UART3
:
src
=
readl
(
&
clk
->
src_peric0
);
div
=
readl
(
&
clk
->
div_peric0
);
break
;
case
PERIPH_ID_PWM0
:
case
PERIPH_ID_PWM1
:
case
PERIPH_ID_PWM2
:
case
PERIPH_ID_PWM3
:
case
PERIPH_ID_PWM4
:
src
=
readl
(
&
clk
->
src_peric0
);
div
=
readl
(
&
clk
->
div_peric3
);
break
;
case
PERIPH_ID_SPI0
:
case
PERIPH_ID_SPI1
:
src
=
readl
(
&
clk
->
src_peric1
);
div
=
readl
(
&
clk
->
div_peric1
);
break
;
case
PERIPH_ID_SPI2
:
src
=
readl
(
&
clk
->
src_peric1
);
div
=
readl
(
&
clk
->
div_peric2
);
break
;
case
PERIPH_ID_SPI3
:
case
PERIPH_ID_SPI4
:
src
=
readl
(
&
clk
->
sclk_src_isp
);
div
=
readl
(
&
clk
->
sclk_div_isp
);
break
;
case
PERIPH_ID_SDMMC0
:
case
PERIPH_ID_SDMMC1
:
case
PERIPH_ID_SDMMC2
:
case
PERIPH_ID_SDMMC3
:
src
=
readl
(
&
clk
->
src_fsys
);
div
=
readl
(
&
clk
->
div_fsys1
);
break
;
case
PERIPH_ID_I2C0
:
case
PERIPH_ID_I2C1
:
case
PERIPH_ID_I2C2
:
case
PERIPH_ID_I2C3
:
case
PERIPH_ID_I2C4
:
case
PERIPH_ID_I2C5
:
case
PERIPH_ID_I2C6
:
case
PERIPH_ID_I2C7
:
sclk
=
exynos5_get_pll_clk
(
MPLL
);
sub_div
=
((
readl
(
&
clk
->
div_top1
)
>>
bit_info
->
div_bit
)
&
0x7
)
+
1
;
div
=
((
readl
(
&
clk
->
div_top0
)
>>
bit_info
->
prediv_bit
)
&
0x7
)
+
1
;
return
(
sclk
/
sub_div
)
/
div
;
default:
debug
(
"%s: invalid peripheral %d"
,
__func__
,
peripheral
);
return
-
1
;
};
src
=
(
src
>>
bit_info
->
src_bit
)
&
0xf
;
switch
(
src
)
{
case
EXYNOS_SRC_MPLL
:
sclk
=
exynos5_get_pll_clk
(
MPLL
);
break
;
case
EXYNOS_SRC_EPLL
:
sclk
=
exynos5_get_pll_clk
(
EPLL
);
break
;
case
EXYNOS_SRC_VPLL
:
sclk
=
exynos5_get_pll_clk
(
VPLL
);
break
;
default:
return
0
;
}
/* Ratio clock division for this peripheral */
sub_div
=
(
div
>>
bit_info
->
div_bit
)
&
0xf
;
sub_clk
=
sclk
/
(
sub_div
+
1
);
/* Pre-ratio clock division for SDMMC0 and 2 */
if
(
peripheral
==
PERIPH_ID_SDMMC0
||
peripheral
==
PERIPH_ID_SDMMC2
)
{
div
=
(
div
>>
bit_info
->
prediv_bit
)
&
0xff
;
return
sub_clk
/
(
div
+
1
);
}
return
sub_clk
;
}
unsigned
long
clock_get_periph_rate
(
int
peripheral
)
{
if
(
cpu_is_exynos5
())
return
exynos5_get_periph_rate
(
peripheral
);
else
return
0
;
}
/* exynos4: return ARM clock frequency */
static
unsigned
long
exynos4_get_arm_clk
(
void
)
{
...
...
@@ -324,27 +468,6 @@ static unsigned long exynos4x12_get_pwm_clk(void)
return
pclk
;
}
/* exynos5: return pwm clock frequency */
static
unsigned
long
exynos5_get_pwm_clk
(
void
)
{
struct
exynos5_clock
*
clk
=
(
struct
exynos5_clock
*
)
samsung_get_base_clock
();
unsigned
long
pclk
,
sclk
;
unsigned
int
ratio
;
/*
* CLK_DIV_PERIC3
* PWM_RATIO [3:0]
*/
ratio
=
readl
(
&
clk
->
div_peric3
);
ratio
=
ratio
&
0xf
;
sclk
=
get_pll_clk
(
MPLL
);
pclk
=
sclk
/
(
ratio
+
1
);
return
pclk
;
}
/* exynos4: return uart clock frequency */
static
unsigned
long
exynos4_get_uart_clk
(
int
dev_index
)
{
...
...
@@ -1210,7 +1333,7 @@ unsigned long get_i2c_clk(void)
unsigned
long
get_pwm_clk
(
void
)
{
if
(
cpu_is_exynos5
())
return
exynos5_get_pwm_clk
(
);
return
clock_get_periph_rate
(
PERIPH_ID_PWM0
);
else
{
if
(
proid_is_exynos4412
())
return
exynos4x12_get_pwm_clk
();
...
...
arch/arm/cpu/armv7/exynos/soc.c
View file @
fed029f3
...
...
@@ -23,6 +23,14 @@
#include
<common.h>
#include
<asm/io.h>
#include
<asm/system.h>
enum
l2_cache_params
{
CACHE_TAG_RAM_SETUP
=
(
1
<<
9
),
CACHE_DATA_RAM_SETUP
=
(
1
<<
5
),
CACHE_TAG_RAM_LATENCY
=
(
2
<<
6
),
CACHE_DATA_RAM_LATENCY
=
(
2
<<
0
)
};
void
reset_cpu
(
ulong
addr
)
{
...
...
@@ -36,3 +44,31 @@ void enable_caches(void)
dcache_enable
();
}
#endif
#ifndef CONFIG_SYS_L2CACHE_OFF
/*
* Set L2 cache parameters
*/
static
void
exynos5_set_l2cache_params
(
void
)
{
unsigned
int
val
=
0
;
asm
volatile
(
"mrc p15, 1, %0, c9, c0, 2
\n
"
:
"=r"
(
val
));
val
|=
CACHE_TAG_RAM_SETUP
|
CACHE_DATA_RAM_SETUP
|
CACHE_TAG_RAM_LATENCY
|
CACHE_DATA_RAM_LATENCY
;
asm
volatile
(
"mcr p15, 1, %0, c9, c0, 2
\n
"
:
:
"r"
(
val
));
}
/*
* Sets L2 cache related parameters before enabling data cache
*/
void
v7_outer_cache_enable
(
void
)
{
if
(
cpu_is_exynos5
())
exynos5_set_l2cache_params
();
}
#endif
arch/arm/cpu/armv7/s5p-common/pwm.c
View file @
fed029f3
...
...
@@ -70,7 +70,7 @@ static unsigned long pwm_calc_tin(int pwm_id, unsigned long freq)
return
tin_parent_rate
/
16
;
}
#define NS_IN_
HZ (
1000000000UL
)
#define NS_IN_
SEC
1000000000UL
int
pwm_config
(
int
pwm_id
,
int
duty_ns
,
int
period_ns
)
{
...
...
@@ -79,7 +79,7 @@ int pwm_config(int pwm_id, int duty_ns, int period_ns)
unsigned
int
offset
;
unsigned
long
tin_rate
;
unsigned
long
tin_ns
;
unsigned
long
period
;
unsigned
long
frequency
;
unsigned
long
tcon
;
unsigned
long
tcnt
;
unsigned
long
tcmp
;
...
...
@@ -89,34 +89,24 @@ int pwm_config(int pwm_id, int duty_ns, int period_ns)
* fact that anything faster than 1GHz is easily representable
* by 32bits.
*/
if
(
period_ns
>
NS_IN_
HZ
||
duty_ns
>
NS_IN_
HZ
)
if
(
period_ns
>
NS_IN_
SEC
||
duty_ns
>
NS_IN_
SEC
||
period_ns
==
0
)
return
-
ERANGE
;
if
(
duty_ns
>
period_ns
)
return
-
EINVAL
;
period
=
NS_IN_
HZ
/
period_ns
;
frequency
=
NS_IN_
SEC
/
period_ns
;
/* Check to see if we are changing the clock rate of the PWM */
tin_rate
=
pwm_calc_tin
(
pwm_id
,
period
);
tin_rate
=
pwm_calc_tin
(
pwm_id
,
frequency
);
tin_ns
=
NS_IN_
HZ
/
tin_rate
;
tin_ns
=
NS_IN_
SEC
/
tin_rate
;
tcnt
=
period_ns
/
tin_ns
;
/* Note, counters count down */
tcmp
=
duty_ns
/
tin_ns
;
tcmp
=
tcnt
-
tcmp
;
/*
* the pwm hw only checks the compare register after a decrement,
* so the pin never toggles if tcmp = tcnt
*/
if
(
tcmp
==
tcnt
)
tcmp
--
;
if
(
tcmp
<
0
)
tcmp
=
0
;
/* Update the PWM register block. */
offset
=
pwm_id
*
3
;
if
(
pwm_id
<
4
)
{
...
...
@@ -143,7 +133,7 @@ int pwm_init(int pwm_id, int div, int invert)
u32
val
;
const
struct
s5p_timer
*
pwm
=
(
struct
s5p_timer
*
)
samsung_get_base_timer
();
unsigned
long
ti
mer_rate_hz
;
unsigned
long
ti
cks_per_period
;
unsigned
int
offset
,
prescaler
;
/*
...
...
@@ -167,14 +157,24 @@ int pwm_init(int pwm_id, int div, int invert)
val
|=
(
div
&
0xf
)
<<
MUX_DIV_SHIFT
(
pwm_id
);
writel
(
val
,
&
pwm
->
tcfg1
);
timer_rate_hz
=
get_pwm_clk
()
/
((
prescaler
+
1
)
*
(
div
+
1
));
if
(
pwm_id
==
4
)
{
/*
* TODO(sjg): Use this as a countdown timer for now. We count
* down from the maximum value to 0, then reset.
*/
ticks_per_period
=
-
1UL
;
}
else
{
const
unsigned
long
pwm_hz
=
1000
;
unsigned
long
timer_rate_hz
=
get_pwm_clk
()
/
((
prescaler
+
1
)
*
(
1
<<
div
));
timer_rate_hz
=
timer_rate_hz
/
CONFIG_SYS_HZ
;
ticks_per_period
=
timer_rate_hz
/
pwm_hz
;
}
/* set count value */
offset
=
pwm_id
*
3
;
writel
(
timer_rate_hz
,
&
pwm
->
tcntb0
+
offset
);
writel
(
ticks_per_period
,
&
pwm
->
tcntb0
+
offset
);
val
=
readl
(
&
pwm
->
tcon
)
&
~
(
0xf
<<
TCON_OFFSET
(
pwm_id
));
if
(
invert
&&
(
pwm_id
<
4
))
...
...
arch/arm/cpu/armv7/s5p-common/timer.c
View file @
fed029f3
...
...
@@ -39,13 +39,33 @@ static inline struct s5p_timer *s5p_get_base_timer(void)
return
(
struct
s5p_timer
*
)
samsung_get_base_timer
();
}
/**
* Read the countdown timer.
*
* This operates at 1MHz and counts downwards. It will wrap about every
* hour (2^32 microseconds).
*
* @return current value of timer
*/
static
unsigned
long
timer_get_us_down
(
void
)
{
struct
s5p_timer
*
const
timer
=
s5p_get_base_timer
();
return
readl
(
&
timer
->
tcnto4
);
}
int
timer_init
(
void
)
{
/* PWM Timer 4 */
pwm_init
(
4
,
MUX_DIV_
2
,
0
);
pwm_config
(
4
,
0
,
0
);
pwm_init
(
4
,
MUX_DIV_
4
,
0
);
pwm_config
(
4
,
100000
,
10000
0
);
pwm_enable
(
4
);
/* Use this as the current monotonic time in us */
gd
->
arch
.
timer_reset_value
=
0
;
/* Use this as the last timer value we saw */
gd
->
arch
.
lastinc
=
timer_get_us_down
();
reset_timer_masked
();
return
0
;
...
...
@@ -56,81 +76,52 @@ int timer_init(void)
*/
unsigned
long
get_timer
(
unsigned
long
base
)
{
return
get_timer_masked
()
-
base
;
}
ulong
now
=
timer_get_us_down
();
/*
* Increment the time by the amount elapsed since the last read.
* The timer may have wrapped around, but it makes no difference to
* our arithmetic here.
*/
gd
->
arch
.
timer_reset_value
+=
gd
->
arch
.
lastinc
-
now
;
gd
->
arch
.
lastinc
=
now
;
/* delay x useconds */
void
__udelay
(
unsigned
long
usec
)
{
struct
s5p_timer
*
const
timer
=
s5p_get_base_timer
();
unsigned
long
tmo
,
tmp
,
count_value
;
count_value
=
readl
(
&
timer
->
tcntb4
);
if
(
usec
>=
1000
)
{
/*
* if "big" number, spread normalization
* to seconds
* 1. start to normalize for usec to ticks per sec
* 2. find number of "ticks" to wait to achieve target
* 3. finish normalize.
*/
tmo
=
usec
/
1000
;
tmo
*=
(
CONFIG_SYS_HZ
*
count_value
);
tmo
/=
1000
;
}
else
{
/* else small number, don't kill it prior to HZ multiply */
tmo
=
usec
*
CONFIG_SYS_HZ
*
count_value
;
tmo
/=
(
1000
*
1000
);
}
/* get current timestamp */
tmp
=
get_current_tick
();
/* if setting this fordward will roll time stamp */
/* reset "advancing" timestamp to 0, set lastinc value */
/* else, set advancing stamp wake up time */
if
((
tmo
+
tmp
+
1
)
<
tmp
)
reset_timer_masked
();
else
tmo
+=
tmp
;
/* loop till event */
while
(
get_current_tick
()
<
tmo
)
;
/* nop */
/* Divide by 1000 to convert from us to ms */
return
gd
->
arch
.
timer_reset_value
/
1000
-
base
;
}
void
reset_timer_masked
(
void
)
unsigned
long
timer_get_us
(
void
)
{
st
ruct
s5p_timer
*
const
timer
=
s5p_get_
base_time
r
()
;
st
atic
unsigned
long
base_time
_us
;
/* reset time */
gd
->
arch
.
lastinc
=
readl
(
&
timer
->
tcnto4
);
gd
->
arch
.
tbl
=
0
;
struct
s5p_timer
*
const
timer
=
(
struct
s5p_timer
*
)
samsung_get_base_timer
();
unsigned
long
now_downward_us
=
readl
(
&
timer
->
tcnto4
);
if
(
!
base_time_us
)
base_time_us
=
now_downward_us
;
/* Note that this timer counts downward. */
return
base_time_us
-
now_downward_us
;
}
unsigned
long
get_timer_masked
(
void
)
/* delay x useconds */
void
__udelay
(
unsigned
long
usec
)
{
struct
s5p_timer
*
const
timer
=
s5p_get_base_timer
();
unsigned
long
count_value
=
readl
(
&
timer
->
tcntb4
);
unsigned
long
count_value
;
return
get_current_tick
()
/
count_value
;
count_value
=
timer_get_us_down
();
while
((
int
)(
count_value
-
timer_get_us_down
())
<
(
int
)
usec
)
;
}
unsigned
long
get_current_tick
(
void
)
void
reset_timer_masked
(
void
)
{
struct
s5p_timer
*
const
timer
=
s5p_get_base_timer
();
unsigned
long
now
=
readl
(
&
timer
->
tcnto4
);
unsigned
long
count_value
=
readl
(
&
timer
->
tcntb4
);
if
(
gd
->
arch
.
lastinc
>=
now
)
gd
->
arch
.
tbl
+=
gd
->
arch
.
lastinc
-
now
;
else
gd
->
arch
.
tbl
+=
gd
->
arch
.
lastinc
+
count_value
-
now
;
gd
->
arch
.
lastinc
=
now
;
return
gd
->
arch
.
tbl
;
/* reset time */
gd
->
arch
.
lastinc
=
readl
(
&
timer
->
tcnto4
);
gd
->
arch
.
tbl
=
0
;
}
/*
...
...
arch/arm/dts/exynos5250.dtsi
View file @
fed029f3
...
...
@@ -156,4 +156,17 @@
reg = <0x10060000 0x10000>;
};
fimd@14400000 {
compatible = "samsung,exynos-fimd";
reg = <0x14400000 0x10000>;
#address-cells = <1>;
#size-cells = <1>;
};
dp@145b0000 {
compatible = "samsung,exynos5-dp";
reg = <0x145b0000 0x1000>;
#address-cells = <1>;
#size-cells = <1>;
};
};
arch/arm/include/asm/arch-exynos/clk.h
View file @
fed029f3
...
...
@@ -29,6 +29,12 @@
#define VPLL 4
#define BPLL 5
enum
pll_src_bit
{
EXYNOS_SRC_MPLL
=
6
,
EXYNOS_SRC_EPLL
,
EXYNOS_SRC_VPLL
,
};
unsigned
long
get_pll_clk
(
int
pllreg
);
unsigned
long
get_arm_clk
(
void
);
unsigned
long
get_i2c_clk
(
void
);
...
...
@@ -44,4 +50,13 @@ int set_i2s_clk_prescaler(unsigned int src_frq, unsigned int dst_frq);
int
set_epll_clk
(
unsigned
long
rate
);
int
set_spi_clk
(
int
periph_id
,
unsigned
int
rate
);
/**
* get the clk frequency of the required peripheral
*
* @param peripheral Peripheral id
*
* @return frequency of the peripheral clk
*/
unsigned
long
clock_get_periph_rate
(
int
peripheral
);
#endif
arch/arm/include/asm/arch-exynos/cpu.h
View file @
fed029f3
...
...
@@ -62,6 +62,7 @@
#define EXYNOS4_GPIO_PART4_BASE DEVICE_NOT_AVAILABLE
#define EXYNOS4_DP_BASE DEVICE_NOT_AVAILABLE
#define EXYNOS4_SPI_ISP_BASE DEVICE_NOT_AVAILABLE
#define EXYNOS4_ACE_SFR_BASE DEVICE_NOT_AVAILABLE
/* EXYNOS4X12 */
#define EXYNOS4X12_GPIO_PART3_BASE 0x03860000
...
...
@@ -92,9 +93,10 @@
#define EXYNOS4X12_ADC_BASE DEVICE_NOT_AVAILABLE
#define EXYNOS4X12_DP_BASE DEVICE_NOT_AVAILABLE
#define EXYNOS4X12_MODEM_BASE DEVICE_NOT_AVAILABLE
#define EXYNOS4X12_I2S_BASE DEVICE_NOT_AVAILABLE
#define EXYNOS4X12_SPI_BASE DEVICE_NOT_AVAILABLE
#define EXYNOS4X12_SPI_ISP_BASE DEVICE_NOT_AVAILABLE
#define EXYNOS4X12_I2S_BASE DEVICE_NOT_AVAILABLE
#define EXYNOS4X12_SPI_BASE DEVICE_NOT_AVAILABLE
#define EXYNOS4X12_SPI_ISP_BASE DEVICE_NOT_AVAILABLE
#define EXYNOS4X12_ACE_SFR_BASE DEVICE_NOT_AVAILABLE
/* EXYNOS5 Common*/
#define EXYNOS5_I2C_SPACING 0x10000
...
...
@@ -106,6 +108,7 @@
#define EXYNOS5_SWRESET 0x10040400
#define EXYNOS5_SYSREG_BASE 0x10050000
#define EXYNOS5_WATCHDOG_BASE 0x101D0000
#define EXYNOS5_ACE_SFR_BASE 0x10830000
#define EXYNOS5_DMC_PHY0_BASE 0x10C00000
#define EXYNOS5_DMC_PHY1_BASE 0x10C10000
#define EXYNOS5_GPIO_PART3_BASE 0x10D10000
...
...
@@ -205,6 +208,7 @@ static inline unsigned int samsung_get_base_##device(void) \
SAMSUNG_BASE
(
adc
,
ADC_BASE
)
SAMSUNG_BASE
(
clock
,
CLOCK_BASE
)
SAMSUNG_BASE
(
ace_sfr
,
ACE_SFR_BASE
)
SAMSUNG_BASE
(
dp
,
DP_BASE
)
SAMSUNG_BASE
(
sysreg
,
SYSREG_BASE
)
SAMSUNG_BASE
(
fimd
,
FIMD_BASE
)
...
...
arch/arm/include/asm/arch-exynos/dp_info.h
View file @
fed029f3
...
...
@@ -199,7 +199,6 @@ enum {
struct
exynos_dp_platform_data
{
struct
edp_device_info
*
edp_dev_info
;
void
(
*
phy_enable
)(
unsigned
int
);
};
#ifdef CONFIG_EXYNOS_DP
...
...
arch/arm/include/asm/arch-exynos/periph.h
View file @
fed029f3
...
...
@@ -61,6 +61,11 @@ enum periph_id {
PERIPH_ID_SPI3
,
PERIPH_ID_SPI4
,
PERIPH_ID_SDMMC4
,
PERIPH_ID_PWM0
,
PERIPH_ID_PWM1
,
PERIPH_ID_PWM2
,
PERIPH_ID_PWM3
,
PERIPH_ID_PWM4
,
PERIPH_ID_COUNT
,
PERIPH_ID_NONE
=
-
1
,
...
...
board/samsung/dts/exynos5250-smdk5250.dts
View file @
fed029f3
...
...
@@ -79,4 +79,44 @@
samsung
,
slope
=
<
274761730
>;
samsung
,
dc
-
value
=
<
25
>;
};
fimd
@
14400000
{
samsung
,
vl
-
freq
=
<
60
>;
samsung
,
vl
-
col
=
<
2560
>;
samsung
,
vl
-
row
=
<
1600
>;
samsung
,
vl
-
width
=
<
2560
>;
samsung
,
vl
-
height
=
<
1600
>;
samsung
,
vl
-
clkp
;
samsung
,
vl
-
dp
;
samsung
,
vl
-
bpix
=
<
4
>;