|
Lines 337-351
Link Here
|
| 337 |
|
337 |
|
| 338 |
ide_ofpath() |
338 |
ide_ofpath() |
| 339 |
{ |
339 |
{ |
| 340 |
if [ ! -L "/proc/ide/$DEVNODE" ] ; then |
340 |
if [ ! -L "/proc/ide/$DEVNODE" ] && [ ! -e "/sys/block/$DEVNODE" ] ; then |
| 341 |
echo 1>&2 "$PRG: /dev/$DEVNODE: Device not configured" |
341 |
echo 1>&2 "$PRG: /dev/$DEVNODE: Device not configured" |
| 342 |
return 1 |
342 |
return 1 |
| 343 |
fi |
343 |
fi |
| 344 |
|
344 |
|
| 345 |
local IDEBUS="$(v=`readlink /proc/ide/$DEVNODE` ; echo ${v%%/*} )" |
345 |
if [ -L "/proc/ide/$DEVNODE" ] ; then |
| 346 |
if [ -z "$IDEBUS" ] ; then |
346 |
local USE_OLD_PROC=1 |
| 347 |
echo 1>&2 "$PRG: BUG: IDEBUS == NULL" |
347 |
local IDEBUS="$(v=`readlink /proc/ide/$DEVNODE` ; echo ${v%%/*} )" |
| 348 |
return 1 |
348 |
if [ -z "$IDEBUS" ] ; then |
|
|
349 |
echo 1>&2 "$PRG: BUG: IDEBUS == NULL" |
| 350 |
return 1 |
| 351 |
fi |
| 349 |
fi |
352 |
fi |
| 350 |
|
353 |
|
| 351 |
case "$(uname -r)" in |
354 |
case "$(uname -r)" in |
|
Lines 363-369
Link Here
|
| 363 |
echo 1>&2 "$PRG: Unable to determine sysfs mountpoint" |
366 |
echo 1>&2 "$PRG: Unable to determine sysfs mountpoint" |
| 364 |
return 1 |
367 |
return 1 |
| 365 |
fi |
368 |
fi |
| 366 |
local OF1275IDE="${SYS}/block/${DEVNODE}/device/../../devspec" |
369 |
local OF1275IDE=$(cd -P "${SYS}/block/${DEVNODE}/device" && pwd) |
|
|
370 |
OF1275IDE="${OF1275IDE}/../../devspec" |
| 367 |
;; |
371 |
;; |
| 368 |
*) |
372 |
*) |
| 369 |
local OF1275IDE="/proc/ide/$IDEBUS/devspec" |
373 |
local OF1275IDE="/proc/ide/$IDEBUS/devspec" |
|
Lines 402-435
Link Here
|
| 402 |
return 1 |
406 |
return 1 |
| 403 |
fi |
407 |
fi |
| 404 |
|
408 |
|
| 405 |
if [ ! -f "/proc/ide/${IDEBUS}/channel" ] ; then |
409 |
|
| 406 |
echo 1>&2 "$PRG: KERNEL BUG: /proc/ide/${IDEBUS}/channel does not exist" |
410 |
if [ "${USE_OLD_PROC}" = "1" ] ; then |
| 407 |
return 1 |
411 |
if [ ! -f "/proc/ide/${IDEBUS}/channel" ] ; then |
| 408 |
fi |
412 |
echo 1>&2 "$PRG: KERNEL BUG: /proc/ide/${IDEBUS}/channel does not exist" |
| 409 |
|
413 |
return 1 |
| 410 |
case "$(cat /proc/device-tree${DEVSPEC}/device_type 2> /dev/null)" in |
414 |
fi |
| 411 |
ide|ata) |
|
|
| 412 |
local MASTER="/disk@0" |
| 413 |
local SLAVE="/disk@1" |
| 414 |
;; |
| 415 |
pci-ide|pci-ata) |
| 416 |
local MASTER="/@$(cat /proc/ide/${IDEBUS}/channel)/disk@0" |
| 417 |
local SLAVE="/@$(cat /proc/ide/${IDEBUS}/channel)/disk@1" |
| 418 |
;; |
| 419 |
scsi) ## some lame controllers pretend they are scsi, hopefully all kludges are created equal. |
| 420 |
local MASTER="/@$(($(cat /proc/ide/${IDEBUS}/channel) * 2 + 0))" |
| 421 |
local SLAVE="/@$(($(cat /proc/ide/${IDEBUS}/channel) * 2 + 1))" |
| 422 |
;; |
| 423 |
spi) |
| 424 |
local MASTER="/disk@$(cat /proc/ide/${IDEBUS}/channel),0" |
| 425 |
local SLAVE="/disk@$(cat /proc/ide/${IDEBUS}/channel),1" |
| 426 |
;; |
| 427 |
*) |
| 428 |
echo 1>&2 "$PRG: Unsupported IDE device type: \"$(cat /proc/device-tree${DEVSPEC}/device_type 2> /dev/null)\"" |
| 429 |
return 1 |
| 430 |
;; |
| 431 |
esac |
| 432 |
|
415 |
|
|
|
416 |
case "$(cat /proc/device-tree${DEVSPEC}/device_type 2> /dev/null)" in |
| 417 |
ide|ata) |
| 418 |
local MASTER="/disk@0" |
| 419 |
local SLAVE="/disk@1" |
| 420 |
;; |
| 421 |
pci-ide|pci-ata) |
| 422 |
local MASTER="/@$(cat /proc/ide/${IDEBUS}/channel)/disk@0" |
| 423 |
local SLAVE="/@$(cat /proc/ide/${IDEBUS}/channel)/disk@1" |
| 424 |
;; |
| 425 |
scsi) ## some lame controllers pretend they are scsi, hopefully all kludges are created equal. |
| 426 |
local MASTER="/@$(($(cat /proc/ide/${IDEBUS}/channel) * 2 + 0))" |
| 427 |
local SLAVE="/@$(($(cat /proc/ide/${IDEBUS}/channel) * 2 + 1))" |
| 428 |
;; |
| 429 |
spi) |
| 430 |
local MASTER="/disk@$(cat /proc/ide/${IDEBUS}/channel),0" |
| 431 |
local SLAVE="/disk@$(cat /proc/ide/${IDEBUS}/channel),1" |
| 432 |
;; |
| 433 |
*) |
| 434 |
echo 1>&2 "$PRG: Unsupported IDE device type: \"$(cat /proc/device-tree${DEVSPEC}/device_type 2> /dev/null)\"" |
| 435 |
return 1 |
| 436 |
;; |
| 437 |
esac |
| 438 |
else |
| 439 |
### I don't know what other disks would look like... FIXME |
| 440 |
local MASTER="/disk@0" |
| 441 |
local SLAVE="/disk@1" |
| 442 |
fi |
| 443 |
|
| 433 |
case "$DEVNODE" in |
444 |
case "$DEVNODE" in |
| 434 |
hda|hdc|hde|hdg|hdi|hdk|hdm|hdo) |
445 |
hda|hdc|hde|hdg|hdi|hdk|hdm|hdo) |
| 435 |
echo "${DEVSPEC}${MASTER}:$PARTITION" |
446 |
echo "${DEVSPEC}${MASTER}:$PARTITION" |