Skip to content
Snippets Groups Projects
Commit d6a320d5 authored by Sonic Zhang's avatar Sonic Zhang Committed by Heiko Schocher
Browse files

blackfin: add spi and i2c specific get clock functions

parent bb0fad0e
No related branches found
No related tags found
No related merge requests found
...@@ -42,13 +42,6 @@ ...@@ -42,13 +42,6 @@
# include <linux/types.h> # include <linux/types.h>
extern u_long get_vco(void);
extern u_long get_cclk(void);
extern u_long get_sclk(void);
extern u_long get_sclk0(void);
extern u_long get_sclk1(void);
extern u_long get_dclk(void);
# define bfin_revid() (bfin_read_CHIPID() >> 28) # define bfin_revid() (bfin_read_CHIPID() >> 28)
extern int bfin_os_log_check(void); extern int bfin_os_log_check(void);
......
...@@ -68,10 +68,21 @@ static inline uint32_t early_get_uart_clk(void) ...@@ -68,10 +68,21 @@ static inline uint32_t early_get_uart_clk(void)
return uclk; return uclk;
} }
extern u_long get_vco(void);
extern u_long get_cclk(void);
extern u_long get_sclk(void);
#ifdef CGU_DIV #ifdef CGU_DIV
extern u_long get_sclk0(void);
extern u_long get_sclk1(void);
extern u_long get_dclk(void);
# define get_uart_clk get_sclk0 # define get_uart_clk get_sclk0
# define get_i2c_clk get_sclk0
# define get_spi_clk get_sclk0
#else #else
# define get_uart_clk get_sclk # define get_uart_clk get_sclk
# define get_i2c_clk get_sclk
# define get_spi_clk get_sclk
#endif #endif
#endif #endif
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include <i2c.h> #include <i2c.h>
#include <asm/blackfin.h> #include <asm/blackfin.h>
#include <asm/clock.h>
#include <asm/mach-common/bits/twi.h> #include <asm/mach-common/bits/twi.h>
/* Every register is 32bit aligned, but only 16bits in size */ /* Every register is 32bit aligned, but only 16bits in size */
...@@ -274,7 +275,7 @@ unsigned int i2c_get_bus_speed(void) ...@@ -274,7 +275,7 @@ unsigned int i2c_get_bus_speed(void)
*/ */
void i2c_init(int speed, int slaveaddr) void i2c_init(int speed, int slaveaddr)
{ {
uint8_t prescale = ((get_sclk() / 1000 / 1000 + 5) / 10) & 0x7F; uint8_t prescale = ((get_i2c_clk() / 1000 / 1000 + 5) / 10) & 0x7F;
/* Set TWI internal clock as 10MHz */ /* Set TWI internal clock as 10MHz */
twi->control = prescale; twi->control = prescale;
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include <spi.h> #include <spi.h>
#include <asm/blackfin.h> #include <asm/blackfin.h>
#include <asm/clock.h>
#include <asm/gpio.h> #include <asm/gpio.h>
#include <asm/portmux.h> #include <asm/portmux.h>
#include <asm/mach-common/bits/spi.h> #include <asm/mach-common/bits/spi.h>
...@@ -140,12 +141,12 @@ static const unsigned short cs_pins[][7] = { ...@@ -140,12 +141,12 @@ static const unsigned short cs_pins[][7] = {
void spi_set_speed(struct spi_slave *slave, uint hz) void spi_set_speed(struct spi_slave *slave, uint hz)
{ {
struct bfin_spi_slave *bss = to_bfin_spi_slave(slave); struct bfin_spi_slave *bss = to_bfin_spi_slave(slave);
ulong sclk; ulong clk;
u32 baud; u32 baud;
sclk = get_sclk(); clk = get_spi_clk();
/* baud should be rounded up */ /* baud should be rounded up */
baud = DIV_ROUND_UP(sclk, 2 * hz); baud = DIV_ROUND_UP(clk, 2 * hz);
if (baud < 2) if (baud < 2)
baud = 2; baud = 2;
else if (baud > (u16)-1) else if (baud > (u16)-1)
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include <spi.h> #include <spi.h>
#include <asm/blackfin.h> #include <asm/blackfin.h>
#include <asm/clock.h>
#include <asm/gpio.h> #include <asm/gpio.h>
#include <asm/portmux.h> #include <asm/portmux.h>
#include <asm/mach-common/bits/spi6xx.h> #include <asm/mach-common/bits/spi6xx.h>
...@@ -135,11 +136,11 @@ static const unsigned short cs_pins[][7] = { ...@@ -135,11 +136,11 @@ static const unsigned short cs_pins[][7] = {
void spi_set_speed(struct spi_slave *slave, uint hz) void spi_set_speed(struct spi_slave *slave, uint hz)
{ {
struct bfin_spi_slave *bss = to_bfin_spi_slave(slave); struct bfin_spi_slave *bss = to_bfin_spi_slave(slave);
ulong sclk; ulong clk;
u32 clock; u32 clock;
sclk = get_sclk1(); clk = get_spi_clk();
clock = sclk / hz; clock = clk / hz;
if (clock) if (clock)
clock--; clock--;
bss->clock = clock; bss->clock = clock;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment