mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
sunxi: rsb: Move rsb_set_device_mode() call to rsb_init()
It turns out that the device_mode_data is rsb specific, rather then slave specific, so integrate the rsb_set_device_mode() call into rsb_init(). Signed-off-by: Hans de Goede <hdegoede@redhat.com> Acked-by: Ian Campbell <ijc@hellion.org.uk>
This commit is contained in:
parent
d35488c735
commit
37d46dd3c4
4 changed files with 11 additions and 9 deletions
|
@ -16,6 +16,8 @@
|
|||
#include <asm/arch/prcm.h>
|
||||
#include <asm/arch/rsb.h>
|
||||
|
||||
static int rsb_set_device_mode(void);
|
||||
|
||||
static void rsb_cfg_io(void)
|
||||
{
|
||||
#ifdef CONFIG_MACH_SUN8I
|
||||
|
@ -53,7 +55,7 @@ static void rsb_set_clk(void)
|
|||
writel((cd_odly << 8) | div, &rsb->ccr);
|
||||
}
|
||||
|
||||
void rsb_init(void)
|
||||
int rsb_init(void)
|
||||
{
|
||||
struct sunxi_rsb_reg * const rsb =
|
||||
(struct sunxi_rsb_reg *)SUNXI_RSB_BASE;
|
||||
|
@ -65,6 +67,8 @@ void rsb_init(void)
|
|||
|
||||
writel(RSB_CTRL_SOFT_RST, &rsb->ctrl);
|
||||
rsb_set_clk();
|
||||
|
||||
return rsb_set_device_mode();
|
||||
}
|
||||
|
||||
static int rsb_await_trans(void)
|
||||
|
@ -99,13 +103,14 @@ static int rsb_await_trans(void)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int rsb_set_device_mode(u32 device_mode_data)
|
||||
static int rsb_set_device_mode(void)
|
||||
{
|
||||
struct sunxi_rsb_reg * const rsb =
|
||||
(struct sunxi_rsb_reg *)SUNXI_RSB_BASE;
|
||||
unsigned long tmo = timer_get_us() + 1000000;
|
||||
|
||||
writel(RSB_DMCR_DEVICE_MODE_START | device_mode_data, &rsb->dmcr);
|
||||
writel(RSB_DMCR_DEVICE_MODE_START | RSB_DMCR_DEVICE_MODE_DATA,
|
||||
&rsb->dmcr);
|
||||
|
||||
while (readl(&rsb->dmcr) & RSB_DMCR_DEVICE_MODE_START) {
|
||||
if (timer_get_us() > tmo)
|
||||
|
|
|
@ -37,6 +37,7 @@ struct sunxi_rsb_reg {
|
|||
#define RSB_STAT_TERR_INT (1 << 1)
|
||||
#define RSB_STAT_LBSY_INT (1 << 2)
|
||||
|
||||
#define RSB_DMCR_DEVICE_MODE_DATA 0x7c3e00
|
||||
#define RSB_DMCR_DEVICE_MODE_START (1 << 31)
|
||||
|
||||
#define RSB_CMD_BYTE_WRITE 0x4e
|
||||
|
@ -46,8 +47,7 @@ struct sunxi_rsb_reg {
|
|||
#define RSB_DEVADDR_RUNTIME_ADDR(x) ((x) << 16)
|
||||
#define RSB_DEVADDR_DEVICE_ADDR(x) ((x) << 0)
|
||||
|
||||
void rsb_init(void);
|
||||
int rsb_set_device_mode(u32 device_mode_data);
|
||||
int rsb_init(void);
|
||||
int rsb_set_device_address(u16 device_addr, u16 runtime_addr);
|
||||
int rsb_write(const u16 runtime_device_addr, const u8 reg_addr, u8 data);
|
||||
int rsb_read(const u16 runtime_device_addr, const u8 reg_addr, u8 *data);
|
||||
|
|
|
@ -29,9 +29,7 @@ static int pmic_bus_init(void)
|
|||
#else
|
||||
int ret;
|
||||
|
||||
rsb_init();
|
||||
|
||||
ret = rsb_set_device_mode(AXP223_DEVICE_MODE_DATA);
|
||||
ret = rsb_init();
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
|
||||
#define AXP223_DEVICE_ADDR 0x3a3
|
||||
#define AXP223_RUNTIME_ADDR 0x2d
|
||||
#define AXP223_DEVICE_MODE_DATA 0x7c3e00
|
||||
|
||||
/* Page 0 addresses */
|
||||
#define AXP221_CHIP_ID 0x03
|
||||
|
|
Loading…
Reference in a new issue