X-Git-Url: http://git.ozlabs.org/?p=yaboot.git;a=blobdiff_plain;f=ybin%2Fofpath;h=c0d1cb12a923c291e29a7ee53ba519717f90be50;hp=981da9d22b4cdaf0ea28e45f43cb106e6668e0e8;hb=08e5a8def5eb4218e7b1efaa4134a39f552b144c;hpb=33ce5d317965c250cf097a0e287e62dbdabe76e9 diff --git a/ybin/ofpath b/ybin/ofpath index 981da9d..c0d1cb1 100755 --- a/ybin/ofpath +++ b/ybin/ofpath @@ -27,7 +27,7 @@ PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" PRG="${0##*/}" -VERSION=1.0.3-DEVEL_DO_NOT_DISTRIBUTE-patch-38 +VERSION=1.0.3-rc3 DEBUG=0 export LC_COLLATE=C @@ -339,16 +339,23 @@ ide_ofpath() return 1 fi + if [ ! -f "/proc/ide/${IDEBUS}/channel" ] ; then + echo 1>&2 "$PRG: KERNEL BUG: /proc/ide/${IDEBUS}/channel does not exist" + return 1 + fi + case "$(cat /proc/device-tree${DEVSPEC}/device_type 2> /dev/null)" in ata) - local CHANNEL="" + local MASTER="/disk@0" + local SLAVE="/disk@1" ;; pci-ata) - if [ ! -f "/proc/ide/${IDEBUS}/channel" ] ; then - echo 1>&2 "$PRG: KERNEL BUG: /proc/ide/${IDEBUS}/channel does not exist" - return 1 - fi - local CHANNEL="/@$(cat /proc/ide/${IDEBUS}/channel)" + local MASTER="/@$(cat /proc/ide/${IDEBUS}/channel)/disk@0" + local SLAVE="/@$(cat /proc/ide/${IDEBUS}/channel)/disk@1" + ;; + scsi) ## some lame controllers pretend they are scsi, hopefully all kludges are created equal. + local MASTER="/$(($(cat /proc/ide/${IDEBUS}/channel) * 2 + 0)),0" + local SLAVE="/$(($(cat /proc/ide/${IDEBUS}/channel) * 2 + 1)),0" ;; *) echo 2>&1 "$PRG: Unsupported IDE device type: \"$(cat /proc/device-tree${DEVSPEC}/device_type 2> /dev/null)\"" @@ -357,12 +364,12 @@ ide_ofpath() esac case "$DEVNODE" in - hda|hdc|hde|hdg|hdi) - echo "${DEVSPEC}${CHANNEL}/disk@0:$PARTITION" + hda|hdc|hde|hdg|hdi|hdk|hdm|hdo) + echo "${DEVSPEC}${MASTER}:$PARTITION" return 0 ;; - hdb|hdd|hdf|hdh|hdj) - echo "${DEVSPEC}${CHANNEL}/disk@1:$PARTITION" + hdb|hdd|hdf|hdh|hdj|hdl|hdn|hdp) + echo "${DEVSPEC}${SLAVE}:$PARTITION" return 0 ;; *)