From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiko Schocher Date: Wed, 09 Sep 2009 09:14:28 +0200 Subject: [U-Boot] [PATCH 2/2] mucmc52, uc101: delete ata@3a00 node, if no CF card is detected Message-ID: <4AA755D4.1020207@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Signed-off-by: Heiko Schocher --- board/mucmc52/mucmc52.c | 15 +++++++++++++++ board/uc101/uc101.c | 15 +++++++++++++++ 2 files changed, 30 insertions(+), 0 deletions(-) diff --git a/board/mucmc52/mucmc52.c b/board/mucmc52/mucmc52.c index bac49be..950798a 100644 --- a/board/mucmc52/mucmc52.c +++ b/board/mucmc52/mucmc52.c @@ -400,8 +400,23 @@ void pci_init_board (void) #endif #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) +#include void ft_board_setup(void *blob, bd_t *bd) { + extern block_dev_desc_t ide_dev_desc[CONFIG_SYS_IDE_MAXDEVICE]; + ft_cpu_setup(blob, bd); + if (ide_dev_desc[0].type == DEV_TYPE_UNKNOWN) { + /* NO CF card detected -> delete ata node in DTS */ + int nodeoffset = 0; + char nodename[] = "/soc5200 at f0000000/ata at 3a00"; + + nodeoffset = fdt_path_offset (blob, nodename); + if (nodeoffset >= 0) { + fdt_del_node(blob, nodeoffset); + } else + printf("%s: cannot find %s node err:%s\n", + __func__, nodename, fdt_strerror(nodeoffset)); + } } #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */ diff --git a/board/uc101/uc101.c b/board/uc101/uc101.c index 4030b9d..4d39a08 100644 --- a/board/uc101/uc101.c +++ b/board/uc101/uc101.c @@ -373,8 +373,23 @@ void hw_watchdog_reset(void) #endif #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) +#include void ft_board_setup(void *blob, bd_t *bd) { + extern block_dev_desc_t ide_dev_desc[CONFIG_SYS_IDE_MAXDEVICE]; + ft_cpu_setup(blob, bd); + if (ide_dev_desc[0].type == DEV_TYPE_UNKNOWN) { + /* NO CF card detected -> delete ata node in DTS */ + int nodeoffset = 0; + char nodename[] = "/soc5200 at f0000000/ata at 3a00"; + + nodeoffset = fdt_path_offset (blob, nodename); + if (nodeoffset >= 0) { + fdt_del_node(blob, nodeoffset); + } else + printf("%s: cannot find %s node err:%s\n", + __func__, nodename, fdt_strerror(nodeoffset)); + } } #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */ -- 1.6.0.6 -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany