Merge tag 'u-boot-atmel-fixes-2021.01-b' of https://gitlab.denx.de/u-boot/custodians...
[platform/kernel/u-boot.git] / board / nokia / rx51 / rx51.c
index a282fe6..3d62b5d 100644 (file)
@@ -22,7 +22,9 @@
  */
 
 #include <common.h>
+#include <dm.h>
 #include <env.h>
+#include <init.h>
 #include <watchdog.h>
 #include <malloc.h>
 #include <twl4030.h>
@@ -32,6 +34,7 @@
 #include <asm/setup.h>
 #include <asm/bitops.h>
 #include <asm/mach-types.h>
+#include <asm/omap_i2c.h>
 #include <asm/arch/mux.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/arch/mmc_host_def.h>
@@ -145,7 +148,7 @@ static void reuse_omap_atags(struct tag_omap *t)
                        }
                        break;
                case OMAP_TAG_UART:
-                       if (!t->u.uart.enabled_uarts)
+                       if (t->u.uart.enabled_uarts)
                                serial_was_console_enabled = 1;
                        break;
                case OMAP_TAG_SERIAL_CONSOLE:
@@ -197,8 +200,25 @@ static void reuse_atags(void)
  */
 int board_init(void)
 {
+#if defined(CONFIG_CMD_ONENAND)
+       const u32 gpmc_regs_onenandrx51[GPMC_MAX_REG] = {
+               ONENAND_GPMC_CONFIG1_RX51,
+               ONENAND_GPMC_CONFIG2_RX51,
+               ONENAND_GPMC_CONFIG3_RX51,
+               ONENAND_GPMC_CONFIG4_RX51,
+               ONENAND_GPMC_CONFIG5_RX51,
+               ONENAND_GPMC_CONFIG6_RX51,
+               0
+       };
+#endif
        /* in SRAM or SDRAM, finish GPMC */
        gpmc_init();
+#if defined(CONFIG_CMD_ONENAND)
+       enable_gpmc_cs_config(gpmc_regs_onenandrx51, &gpmc_cfg->cs[0],
+                             CONFIG_SYS_ONENAND_BASE, GPMC_SIZE_256M);
+#endif
+       /* Enable the clks & power */
+       per_clocks_enable();
        /* boot param addr */
        gd->bd->bi_boot_params = OMAP34XX_SDRC_CS0 + 0x100;
        return 0;
@@ -385,14 +405,13 @@ static void omap3_update_aux_cr_secure_rx51(u32 set_bits, u32 clear_bits)
  */
 int misc_init_r(void)
 {
+       struct udevice *dev;
        char buf[12];
        u8 state;
 
-       /* reset lp5523 led */
-       i2c_set_bus_num(1);
-       state = 0xff;
-       i2c_write(0x32, 0x3d, 1, &state, 1);
-       i2c_set_bus_num(0);
+       /* disable lp5523 led */
+       if (i2c_get_chip_for_busnum(1, 0x32, 1, &dev) == 0)
+               dm_i2c_reg_write(dev, 0x00, 0x00);
 
        /* initialize twl4030 power managment */
        twl4030_power_init();
@@ -625,8 +644,8 @@ int rx51_kp_tstc(struct stdio_dev *sdev)
                        continue;
 
                /* read the key state */
-               i2c_read(TWL4030_CHIP_KEYPAD,
-                       TWL4030_KEYPAD_FULL_CODE_7_0, 1, keys, 8);
+               twl4030_i2c_read(TWL4030_CHIP_KEYPAD,
+                                TWL4030_KEYPAD_FULL_CODE_7_0, keys, 8);
 
                /* cut out modifier keys from the keystate */
                mods = keys[4] >> 4;
@@ -671,7 +690,7 @@ int rx51_kp_getc(struct stdio_dev *sdev)
  * Routine: board_mmc_init
  * Description: Initialize mmc devices.
  */
-int board_mmc_init(bd_t *bis)
+int board_mmc_init(struct bd_info *bis)
 {
        omap_mmc_init(0, 0, 0, -1, -1);
        omap_mmc_init(1, 0, 0, -1, -1);
@@ -683,3 +702,15 @@ void board_mmc_power_init(void)
        twl4030_power_mmc_init(0);
        twl4030_power_mmc_init(1);
 }
+
+static const struct omap_i2c_platdata rx51_i2c[] = {
+       { I2C_BASE1, 2200000, OMAP_I2C_REV_V1 },
+       { I2C_BASE2, 100000, OMAP_I2C_REV_V1 },
+       { I2C_BASE3, 400000, OMAP_I2C_REV_V1 },
+};
+
+U_BOOT_DEVICES(rx51_i2c) = {
+       { "i2c_omap", &rx51_i2c[0] },
+       { "i2c_omap", &rx51_i2c[1] },
+       { "i2c_omap", &rx51_i2c[2] },
+};