summaryrefslogtreecommitdiff
path: root/src/mainboard
diff options
context:
space:
mode:
authorDavid Hendricks <dhendrix@chromium.org>2013-04-05 16:11:12 -0700
committerRonald G. Minnich <rminnich@gmail.com>2013-04-10 00:01:02 +0200
commitb959fbb87adb274b442bc6ab812e5a2ce92ca220 (patch)
tree9d055eb9126f50e5c72ab8bdcbe6c8efa4bceb51 /src/mainboard
parentcfb73607be05e57237592c5c94a98589aba04833 (diff)
exynos5: Re-factor I2C code
This re-factors the Exynos5 I2C code to be simpler and use the new API, and updates users accordingly. - i2c_read() and i2c_write() functions updated to take bus number as an argument. - Get rid of the EEPROM_ADDR_OVERFLOW stuff in i2c_read() and i2c_write(). If a chip needs special handling we should take care of it elsewhere, not in every low-level i2c driver. - All the confusing bus config functions eliminated. No more i2c_set_early_config() or i2c_set_bus() or i2c_get_bus(). All this is handled automatically when the caller does a transaction and specifies the desired bus number. - i2c_probe() eliminated. We're not a command-line utility. - Let the compiler place static variables automatically. We don't need any of this fancy manual data placement. - Remove dead code while we're at it. This stuff was ported early on and much of it was left commented out in case we needed it. Some also includes nested macros which caused gcc to complain. - Clean up #includes (no more common.h, woohoo!), replace debug() with printk(). Change-Id: I8e1f974ea4c6c7db9f33b77bbc4fb16008ed0d2a Signed-off-by: David Hendricks <dhendrix@chromium.org> Reviewed-on: http://review.coreboot.org/3044 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Diffstat (limited to 'src/mainboard')
-rw-r--r--src/mainboard/google/snow/bootblock.c2
-rw-r--r--src/mainboard/google/snow/romstage.c26
2 files changed, 14 insertions, 14 deletions
diff --git a/src/mainboard/google/snow/bootblock.c b/src/mainboard/google/snow/bootblock.c
index 17a3267a6e..2df0e4ef61 100644
--- a/src/mainboard/google/snow/bootblock.c
+++ b/src/mainboard/google/snow/bootblock.c
@@ -25,8 +25,6 @@
#include <cpu/samsung/exynos5250/periph.h>
#include <cpu/samsung/exynos5250/pinmux.h>
-#define I2C0_BASE 0x12c60000
-
void bootblock_mainboard_init(void);
void bootblock_mainboard_init(void)
{
diff --git a/src/mainboard/google/snow/romstage.c b/src/mainboard/google/snow/romstage.c
index 94ca222b71..d34c379d32 100644
--- a/src/mainboard/google/snow/romstage.c
+++ b/src/mainboard/google/snow/romstage.c
@@ -25,6 +25,7 @@
#include <arch/cache.h>
#include <arch/gpio.h>
+#include <cpu/samsung/exynos5-common/i2c.h>
#include <cpu/samsung/exynos5250/clk.h>
#include <cpu/samsung/exynos5250/dmc.h>
#include <cpu/samsung/exynos5250/gpio.h>
@@ -36,10 +37,11 @@
#include <arch/stages.h>
#include <drivers/maxim/max77686/max77686.h>
-#include <device/i2c-old.h>
+#include <device/i2c.h>
#include "mainboard.h"
+#define PMIC_BUS 0
#define MMC0_GPIO_PIN (58)
#if 0
@@ -69,23 +71,23 @@ static int setup_pmic(void)
*
* Disable Coin BATT Charging
*/
- error = max77686_disable_backup_batt();
+ error = max77686_disable_backup_batt(PMIC_BUS);
- error |= max77686_volsetting(PMIC_BUCK2, CONFIG_VDD_ARM_MV,
+ error |= max77686_volsetting(PMIC_BUS, PMIC_BUCK2, CONFIG_VDD_ARM_MV,
REG_ENABLE, MAX77686_MV);
- error |= max77686_volsetting(PMIC_BUCK3, CONFIG_VDD_INT_UV,
+ error |= max77686_volsetting(PMIC_BUS, PMIC_BUCK3, CONFIG_VDD_INT_UV,
REG_ENABLE, MAX77686_UV);
- error |= max77686_volsetting(PMIC_BUCK1, CONFIG_VDD_MIF_MV,
+ error |= max77686_volsetting(PMIC_BUS, PMIC_BUCK1, CONFIG_VDD_MIF_MV,
REG_ENABLE, MAX77686_MV);
- error |= max77686_volsetting(PMIC_BUCK4, CONFIG_VDD_G3D_MV,
+ error |= max77686_volsetting(PMIC_BUS, PMIC_BUCK4, CONFIG_VDD_G3D_MV,
REG_ENABLE, MAX77686_MV);
- error |= max77686_volsetting(PMIC_LDO2, CONFIG_VDD_LDO2_MV,
+ error |= max77686_volsetting(PMIC_BUS, PMIC_LDO2, CONFIG_VDD_LDO2_MV,
REG_ENABLE, MAX77686_MV);
- error |= max77686_volsetting(PMIC_LDO3, CONFIG_VDD_LDO3_MV,
+ error |= max77686_volsetting(PMIC_BUS, PMIC_LDO3, CONFIG_VDD_LDO3_MV,
REG_ENABLE, MAX77686_MV);
- error |= max77686_volsetting(PMIC_LDO5, CONFIG_VDD_LDO5_MV,
+ error |= max77686_volsetting(PMIC_BUS, PMIC_LDO5, CONFIG_VDD_LDO5_MV,
REG_ENABLE, MAX77686_MV);
- error |= max77686_volsetting(PMIC_LDO10, CONFIG_VDD_LDO10_MV,
+ error |= max77686_volsetting(PMIC_BUS, PMIC_LDO10, CONFIG_VDD_LDO10_MV,
REG_ENABLE, MAX77686_MV);
if (error)
@@ -133,10 +135,10 @@ void main(void)
console_init();
- i2c_set_early_reg(0x12c60000);
- i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
+ i2c_init(0, CONFIG_SYS_I2C_SPEED, 0x00);
if (power_init())
power_shutdown();
+ printk(BIOS_DEBUG, "%s: setting up pmic...\n", __func__);
if (setup_pmic())
power_shutdown();