]> git.sur5r.net Git - u-boot/blobdiff - board/ifm/ac14xx/ac14xx.c
i2c: Drop use of CONFIG_I2C_HARD
[u-boot] / board / ifm / ac14xx / ac14xx.c
index 74425912d62ffd55a1c9cdc347eef7b78a2dd28a..cd79e804a081390aecb4d2abe331bdb421027c37 100644 (file)
@@ -3,13 +3,7 @@
  * (C) Copyright 2009 Dave Srl www.dave.eu
  * (C) Copyright 2010 ifm ecomatic GmbH
  *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
@@ -23,6 +17,9 @@
 #include <i2c.h>
 #endif
 
+static int mac_diag;
+static int gpio_diag;
+
 DECLARE_GLOBAL_DATA_PTR;
 
 static void gpio_configure(void)
@@ -37,7 +34,7 @@ static void gpio_configure(void)
 
        /*
         * out_be32(&gpioregs->gpdir, 0xC2293020);
-        * workaround for a hardware affect: configure direction in pieces,
+        * workaround for a hardware effect: configure direction in pieces,
         * setting all outputs at once drops the reset line too low and
         * makes us lose the MII connection (breaks ethernet for us)
         */
@@ -126,8 +123,6 @@ static u32 gpio_querykbd(void)
 
 /* excerpt from the recovery's hw_info.h */
 
-static int eeprom_diag = 1;
-
 struct __attribute__ ((__packed__)) eeprom_layout {
        char    magic[3];       /** 'ifm' */
        u8      len[2];         /** content length without magic/len fields */
@@ -140,7 +135,6 @@ struct __attribute__ ((__packed__)) eeprom_layout {
 #define HW_COMP_MAINCPU 2
 
 static struct eeprom_layout eeprom_content;
-static int eeprom_was_read;    /* has_been_read */
 static int eeprom_is_valid;
 static int eeprom_version;
 
@@ -157,58 +151,13 @@ static int eeprom_version;
 
 static int read_eeprom(void)
 {
-       int eeprom_datalen;
-       int ret;
-
-       if (eeprom_was_read)
-               return 0;
-
-       eeprom_is_valid = 0;
-       ret = i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, 0,
-                       CONFIG_SYS_I2C_EEPROM_ADDR_LEN,
-                       (uchar *)&eeprom_content, sizeof(eeprom_content));
-       if (eeprom_diag) {
-               printf("DIAG: %s() read rc[%d], size[%d]\n",
-                       __func__, ret, sizeof(eeprom_content));
-       }
-
-       if (ret != 0)
-               return -1;
-
-       eeprom_was_read = 1;
-
-       /*
-        * check validity of EEPROM content
-        * (check version, length, optionally checksum)
-        */
-       eeprom_is_valid = 1;
-       eeprom_datalen = get_eeprom_field_int(eeprom_content.len);
-       eeprom_version = get_eeprom_field_int(eeprom_content.version);
-
-       if (eeprom_diag) {
-               printf("DIAG: %s() magic[%c%c%c] len[%d] ver[%d] type[%d]\n",
-                       __func__, eeprom_content.magic[0],
-                       eeprom_content.magic[1], eeprom_content.magic[2],
-                       eeprom_datalen, eeprom_version, eeprom_content.type);
-       }
-       if (strncmp(eeprom_content.magic, "ifm", strlen("ifm")) != 0)
-               eeprom_is_valid = 0;
-       if (eeprom_datalen < sizeof(struct eeprom_layout) - 5)
-               eeprom_is_valid = 0;
-       if ((eeprom_version != 1) && (eeprom_version != 2))
-               eeprom_is_valid = 0;
-       if (eeprom_content.type != HW_COMP_MAINCPU)
-               eeprom_is_valid = 0;
-
-       if (eeprom_diag)
-               printf("DIAG: %s() valid[%d]\n", __func__, eeprom_is_valid);
-
-       return ret;
+       return -ENOSYS;
 }
 
 int mac_read_from_eeprom(void)
 {
        const u8 *mac;
+       const char *mac_txt;
 
        if (read_eeprom()) {
                printf("I2C EEPROM read failed.\n");
@@ -228,10 +177,15 @@ int mac_read_from_eeprom(void)
                break;
        }
 
-       if (mac && is_valid_ether_addr(mac)) {
+       if (mac && is_valid_ethaddr(mac)) {
                eth_setenv_enetaddr("ethaddr", mac);
-               printf("DIAG: %s() MAC value [%s]\n",
-                       __func__, getenv("ethaddr"));
+               if (mac_diag) {
+                       mac_txt = getenv("ethaddr");
+                       if (mac_txt)
+                               printf("DIAG: MAC value [%s]\n", mac_txt);
+                       else
+                               printf("DIAG: failed to setup MAC env\n");
+               }
        }
 
        return 0;
@@ -308,9 +262,12 @@ u32 sdram_init_seq[] = {
        /* EMPTY, optional, we don't do it */
 };
 
-phys_size_t initdram(int board_type)
+int dram_init(void)
 {
-       return fixed_sdram(NULL, sdram_init_seq, ARRAY_SIZE(sdram_init_seq));
+       gd->ram_size = fixed_sdram(NULL, sdram_init_seq,
+                                  ARRAY_SIZE(sdram_init_seq));
+
+       return 0;
 }
 
 int misc_init_r(void)
@@ -319,49 +276,42 @@ int misc_init_r(void)
        char *s;
        int want_recovery;
 
-       /* we use bus I2C-0 for the on-board eeprom */
-       i2c_set_bus_num(0);
-
        /* setup GPIO directions and initial values */
        gpio_configure();
 
        /*
-        * check the GPIO keyboard,
-        * enforced start of the recovery when
+        * enforce the start of the recovery system when
         * - the appropriate keys were pressed
-        * - a previous installation was aborted or has failed
         * - "some" external software told us to
+        * - a previous installation was aborted or has failed
         */
        want_recovery = 0;
        keys = gpio_querykbd();
-       printf("GPIO keyboard status [0x%08X]\n", keys);
-       /* XXX insist in the _exact_ combination? */
+       if (gpio_diag)
+               printf("GPIO keyboard status [0x%02X]\n", keys);
        if ((keys & GPIOKEY_BITS_RECOVERY) == GPIOKEY_BITS_RECOVERY) {
-               printf("GPIO keyboard requested RECOVERY\n");
-               /* XXX TODO
-                * refine the logic to detect the first keypress, and
-                * wait to recheck IF it was the recovery combination?
-                */
+               printf("detected recovery request (keyboard)\n");
                want_recovery = 1;
        }
-       s = getenv("install_in_progress");
+       s = getenv("want_recovery");
        if ((s != NULL) && (*s != '\0')) {
-               printf("previous installation aborted, running RECOVERY\n");
+               printf("detected recovery request (environment)\n");
                want_recovery = 1;
        }
-       s = getenv("install_failed");
+       s = getenv("install_in_progress");
        if ((s != NULL) && (*s != '\0')) {
-               printf("previous installation FAILED, running RECOVERY\n");
+               printf("previous installation has not completed\n");
                want_recovery = 1;
        }
-       s = getenv("want_recovery");
+       s = getenv("install_failed");
        if ((s != NULL) && (*s != '\0')) {
-               printf("running RECOVERY according to the request\n");
+               printf("previous installation has failed\n");
                want_recovery = 1;
        }
-
-       if (want_recovery)
+       if (want_recovery) {
+               printf("enforced start of the recovery system\n");
                setenv("bootcmd", "run recovery");
+       }
 
        /*
         * boot the recovery system without waiting; boot the
@@ -609,9 +559,11 @@ int checkboard(void)
        return 0;
 }
 
-#if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
-void ft_board_setup(void *blob, bd_t *bd)
+#ifdef CONFIG_OF_BOARD_SETUP
+int ft_board_setup(void *blob, bd_t *bd)
 {
        ft_cpu_setup(blob, bd);
+
+       return 0;
 }
-#endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
+#endif /* CONFIG_OF_BOARD_SETUP */