summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPrabhakar Kushwaha <prabhakar@freescale.com>2015-06-28 11:03:59 +0530
committerYork Sun <yorksun@freescale.com>2015-07-20 11:44:37 -0700
commit95279315076c6f719be9ff0501a6a5addc061416 (patch)
tree08e327979c07e3ed17188a813100035c54941852
parent56c57cf7e9bc760d6d02b50f8d0b384fbb58d0fb (diff)
downloadu-boot-imx-95279315076c6f719be9ff0501a6a5addc061416.zip
u-boot-imx-95279315076c6f719be9ff0501a6a5addc061416.tar.gz
u-boot-imx-95279315076c6f719be9ff0501a6a5addc061416.tar.bz2
board/ls2085rdb: Export functions for standalone AQ FW load apps
Export functions required by Aquntia PHY firmware load application. functions are memset, strcpy, mdelay, mdio_get_current_dev, phy_find_by_mask, mdio_phydev_for_ethname and miiphy_set_current_dev Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com> Reviewed-by: York Sun <yorksun@freescale.com>
-rw-r--r--board/freescale/ls2085ardb/eth_ls2085rdb.c15
-rw-r--r--common/exports.c7
-rw-r--r--include/_exports.h13
-rw-r--r--include/configs/ls2085ardb.h1
-rw-r--r--include/exports.h13
5 files changed, 48 insertions, 1 deletions
diff --git a/board/freescale/ls2085ardb/eth_ls2085rdb.c b/board/freescale/ls2085ardb/eth_ls2085rdb.c
index 60af079..0a1163a 100644
--- a/board/freescale/ls2085ardb/eth_ls2085rdb.c
+++ b/board/freescale/ls2085ardb/eth_ls2085rdb.c
@@ -14,10 +14,13 @@
#include <phy.h>
#include <fm_eth.h>
#include <asm/io.h>
+#include <exports.h>
#include <asm/arch/fsl_serdes.h>
#include <asm/arch-fsl-lsch3/immap_lsch3.h>
#include <fsl-mc/ldpaa_wriop.h>
+DECLARE_GLOBAL_DATA_PTR;
+
int load_firmware_cortina(struct phy_device *phy_dev)
{
if (phy_dev->drv->config)
@@ -129,5 +132,17 @@ int board_eth_init(bd_t *bis)
cpu_eth_init(bis);
#endif /* CONFIG_FMAN_ENET */
+#ifdef CONFIG_PHY_AQUANTIA
+ /*
+ * Export functions to be used by AQ firmware
+ * upload application
+ */
+ gd->jt->strcpy = strcpy;
+ gd->jt->mdelay = mdelay;
+ gd->jt->mdio_get_current_dev = mdio_get_current_dev;
+ gd->jt->phy_find_by_mask = phy_find_by_mask;
+ gd->jt->mdio_phydev_for_ethname = mdio_phydev_for_ethname;
+ gd->jt->miiphy_set_current_dev = miiphy_set_current_dev;
+#endif
return pci_eth_init(bis);
}
diff --git a/common/exports.c b/common/exports.c
index 333107c..b4f1f7a 100644
--- a/common/exports.c
+++ b/common/exports.c
@@ -16,6 +16,13 @@ unsigned long get_version(void)
#define EXPORT_FUNC(f, a, x, ...) gd->jt->x = f;
+#ifndef CONFIG_PHY_AQUANTIA
+# define mdio_get_current_dev dummy
+# define phy_find_by_mask dummy
+# define mdio_phydev_for_ethname dummy
+# define miiphy_set_current_dev dummy
+#endif
+
void jumptable_init(void)
{
gd->jt = malloc(sizeof(struct jt_funcs));
diff --git a/include/_exports.h b/include/_exports.h
index 279017e..74a882a 100644
--- a/include/_exports.h
+++ b/include/_exports.h
@@ -73,3 +73,16 @@
const char *, char **, unsigned int)
EXPORT_FUNC(ustrtoull, unsigned long long, ustrtoull,
const char *, char **, unsigned int)
+ EXPORT_FUNC(strcpy, char *, strcpy, char *dest, const char *src)
+ EXPORT_FUNC(mdelay, void, mdelay, unsigned long msec)
+#ifdef CONFIG_PHY_AQUANTIA
+ EXPORT_FUNC(mdio_get_current_dev, struct mii_dev *,
+ mdio_get_current_dev, void)
+ EXPORT_FUNC(phy_find_by_mask, struct phy_device *, phy_find_by_mask,
+ struct mii_dev *bus, unsigned phy_mask,
+ phy_interface_t interface)
+ EXPORT_FUNC(mdio_phydev_for_ethname, struct phy_device *,
+ mdio_phydev_for_ethname, const char *ethname)
+ EXPORT_FUNC(miiphy_set_current_dev, int, miiphy_set_current_dev,
+ const char *devname)
+#endif
diff --git a/include/configs/ls2085ardb.h b/include/configs/ls2085ardb.h
index 891fabe..dfd5900 100644
--- a/include/configs/ls2085ardb.h
+++ b/include/configs/ls2085ardb.h
@@ -322,6 +322,7 @@ unsigned long get_board_sys_clk(void);
#define CONFIG_MII
#define CONFIG_ETHPRIME "DPNI1"
#define CONFIG_PHY_GIGE
+#define CONFIG_PHY_AQUANTIA
#endif
#endif /* __LS2_RDB_H */
diff --git a/include/exports.h b/include/exports.h
index 1a01e43..a3e0469 100644
--- a/include/exports.h
+++ b/include/exports.h
@@ -2,6 +2,10 @@
#define __EXPORTS_H__
#ifndef __ASSEMBLY__
+#ifdef CONFIG_PHY_AQUANTIA
+#include <miiphy.h>
+#include <phy.h>
+#endif
struct spi_slave;
@@ -34,6 +38,13 @@ unsigned long long ustrtoull(const char *cp, char **endp, unsigned int base);
int i2c_write (uchar, uint, int , uchar* , int);
int i2c_read (uchar, uint, int , uchar* , int);
#endif
+#ifdef CONFIG_PHY_AQUANTIA
+struct mii_dev *mdio_get_current_dev(void);
+struct phy_device *phy_find_by_mask(struct mii_dev *bus, unsigned phy_mask,
+ phy_interface_t interface);
+struct phy_device *mdio_phydev_for_ethname(const char *ethname);
+int miiphy_set_current_dev(const char *devname);
+#endif
void app_startup(char * const *);
@@ -46,7 +57,7 @@ struct jt_funcs {
};
-#define XF_VERSION 7
+#define XF_VERSION 8
#if defined(CONFIG_X86)
extern gd_t *global_data;