12e192b24SSimon Glass /* 22e192b24SSimon Glass * (C) Copyright 2000-2011 32e192b24SSimon Glass * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 42e192b24SSimon Glass * 52e192b24SSimon Glass * SPDX-License-Identifier: GPL-2.0+ 62e192b24SSimon Glass */ 72e192b24SSimon Glass 82e192b24SSimon Glass /* 92e192b24SSimon Glass * IDE support 102e192b24SSimon Glass */ 112e192b24SSimon Glass 122e192b24SSimon Glass #include <common.h> 132a981dc2SSimon Glass #include <blk.h> 142e192b24SSimon Glass #include <config.h> 152e192b24SSimon Glass #include <watchdog.h> 162e192b24SSimon Glass #include <command.h> 172e192b24SSimon Glass #include <image.h> 182e192b24SSimon Glass #include <asm/byteorder.h> 192e192b24SSimon Glass #include <asm/io.h> 202e192b24SSimon Glass 215b8e76c3SHeiko Schocher #if defined(CONFIG_IDE_PCMCIA) 222e192b24SSimon Glass # include <pcmcia.h> 232e192b24SSimon Glass #endif 242e192b24SSimon Glass 252e192b24SSimon Glass #include <ide.h> 262e192b24SSimon Glass #include <ata.h> 272e192b24SSimon Glass 282d8d190cSUri Mashiach #ifdef CONFIG_LED_STATUS 292e192b24SSimon Glass # include <status_led.h> 302e192b24SSimon Glass #endif 312e192b24SSimon Glass 322e192b24SSimon Glass /* Current I/O Device */ 332e192b24SSimon Glass static int curr_device = -1; 342e192b24SSimon Glass 352e192b24SSimon Glass int do_ide(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) 362e192b24SSimon Glass { 37*09ed0d61SSimon Glass if (argc == 2) { 382e192b24SSimon Glass if (strncmp(argv[1], "res", 3) == 0) { 395b8e76c3SHeiko Schocher puts("\nReset IDE: "); 402e192b24SSimon Glass ide_init(); 412e192b24SSimon Glass return 0; 42*09ed0d61SSimon Glass } 432e192b24SSimon Glass } 44e9be1ee7SSimon Glass 45*09ed0d61SSimon Glass return blk_common_cmd(argc, argv, IF_TYPE_IDE, &curr_device); 462e192b24SSimon Glass } 472e192b24SSimon Glass 482e192b24SSimon Glass int do_diskboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) 492e192b24SSimon Glass { 502e192b24SSimon Glass return common_diskboot(cmdtp, "ide", argc, argv); 512e192b24SSimon Glass } 522e192b24SSimon Glass 532e192b24SSimon Glass U_BOOT_CMD(ide, 5, 1, do_ide, 542e192b24SSimon Glass "IDE sub-system", 552e192b24SSimon Glass "reset - reset IDE controller\n" 562e192b24SSimon Glass "ide info - show available IDE devices\n" 572e192b24SSimon Glass "ide device [dev] - show or set current device\n" 582e192b24SSimon Glass "ide part [dev] - print partition table of one or all IDE devices\n" 592e192b24SSimon Glass "ide read addr blk# cnt\n" 602e192b24SSimon Glass "ide write addr blk# cnt - read/write `cnt'" 612e192b24SSimon Glass " blocks starting at block `blk#'\n" 622e192b24SSimon Glass " to/from memory address `addr'"); 632e192b24SSimon Glass 642e192b24SSimon Glass U_BOOT_CMD(diskboot, 3, 1, do_diskboot, 652e192b24SSimon Glass "boot from IDE device", "loadAddr dev:part"); 66