#!/bin/sh
#
# cpqhdparm  Enable IDE DMA mode at boot time.
#
# description: Pre-2.4.1 kernels don't automatically enable DMA mode on the
#              CMD 649 chipset, so we do it at boot time.

#
# define functions
#

#
# enable DMA
#
enable_dma()
{
hdisk=$1
	/sbin/hdparm -d1 "$hdisk"
        return $?
}

#
# enable 32 bit I/O
#
enable_32bitIO()
{
hdisk=$1
	/sbin/hdparm -c1 "$hdisk"
	return $?
}

#
# Main body of script
#

RETVAL=1	# initialize the global return value.
DISKFOUND=0	# initialize disk found flag

# See how we were called.
case "$1" in
  start)
	[ -x /sbin/hdparm ] && {
		echo -n "Setting IDE DMA mode: "
		# We don't set /dev/hda, since that's the CD-ROM.
		for disk in `ls /proc/ide | grep '^hd'`
                do
			[ `cat /proc/ide/${disk}/media` = "disk" ] && {
				DISKFOUND=1	# We found a disk to set.
				enable_dma /dev/${disk}
 				RETVAL=$?
    				[ "$RETVAL" -ne 0 ] && {
					echo "Failed to enable DMA for device: /dev/${disk}."
					break
				}
  
				enable_32bitIO "/dev/${disk}"
 				RETVAL=$?
    				[ "$RETVAL" -ne 0 ] && {
					echo "Failed to enable 32 Bit I/O for device: /dev/${disk}."
					break
				}
			}
		done
		[ "$DISKFOUND" -ne 1 ] && {
			RETVAL=0
			echo "No IDE hard disks found."
		}
        }
	;;
  stop)
	RETVAL=0
	# ignore
	;;
  *)
	echo "Usage: $0 start"
	RETVAL=1
esac

exit $RETVAL
