X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ybin%2Fofpath;h=ea1a7fa81d3b7cefdfbc96ef3410f949e8689cd6;hb=5a1d6ab9e290804deea3bfd4f888709a732b3f58;hp=0f944e2ef7f7ee52d179462dce69f9d3a80bbbb6;hpb=74a45b785c6537e7632f1633413790bd5e30bf21;p=yaboot.git diff --git a/ybin/ofpath b/ybin/ofpath index 0f944e2..ea1a7fa 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-rc1 +VERSION=1.0.3-rc4 DEBUG=0 export LC_COLLATE=C @@ -149,7 +149,7 @@ if (command -v readlink > /dev/null 2>&1) ; then else readlink() { - local SYMTARGET="$(v=`ls -l "$2" 2>/dev/null` ; echo ${v##*> })" + local SYMTARGET="$(v=`ls -l "$1" 2>/dev/null` ; echo ${v##*> })" if [ -n "$SYMTARGET" ] ; then echo "$SYMTARGET" return 0 @@ -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)" + pci-ide|pci-ata) + 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 ;; *)