X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ybin%2Fofpath;h=287cdb1b5374eea65ec28814d14514469dbfa312;hb=c8468c1549669e3f06387ab6a162e5d6498c6de7;hp=0f944e2ef7f7ee52d179462dce69f9d3a80bbbb6;hpb=74a45b785c6537e7632f1633413790bd5e30bf21;p=yaboot.git diff --git a/ybin/ofpath b/ybin/ofpath index 0f944e2..287cdb1 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-rc2 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)\"" @@ -358,11 +365,11 @@ ide_ofpath() case "$DEVNODE" in hda|hdc|hde|hdg|hdi) - echo "${DEVSPEC}${CHANNEL}/disk@0:$PARTITION" + echo "${DEVSPEC}${MASTER}:$PARTITION" return 0 ;; hdb|hdd|hdf|hdh|hdj) - echo "${DEVSPEC}${CHANNEL}/disk@1:$PARTITION" + echo "${DEVSPEC}${SLAVE}:$PARTITION" return 0 ;; *)