Update gpiommc to use configfs
[openwrt/openwrt.git] / package / mmc_over_gpio / files / mmc_over_gpio.init
index 57c5695d1976f506d3930c0026ced35353c51806..e276dfd1ca25574fb88518fdc983e8f238cd225d 100644 (file)
@@ -2,20 +2,59 @@
 # Copyright (C) 2008 OpenWrt.org
 START=90
 
-SYSFS="/sys"
-SYSFS_DRIVERDIR="$SYSFS/bus/platform/drivers/gpiommc"
+CONFIGFS_DIR="/config/gpiommc"
 
 # add_device(name, DI_pin, DO_pin, CLK_pin, CS_pin, mode)
 add_device() {
-       echo -n "$1" "$2" "$3" "$4" "$5" "$6" > $SYSFS_DRIVERDIR/add
+       local dir="$CONFIGFS_DIR/$1"
+
+       mkdir $dir
+       [ $? -eq 0 ] || return 1
+       echo $2 > $dir/gpio_data_in
+       [ $? -eq 0 ] || return 1
+       echo $3 > $dir/gpio_data_out
+       [ $? -eq 0 ] || return 1
+       echo $4 > $dir/gpio_clock
+       [ $? -eq 0 ] || return 1
+       echo $5 > $dir/gpio_chipselect
+       [ $? -eq 0 ] || return 1
+       echo $6 > $dir/spi_mode
+       [ $? -eq 0 ] || return 1
+       # XXX We have more config options available. Use defaults for now.
+
+       echo 1 > $dir/register
+       [ $? -eq 0 ] || return 1
+
+       return 0
 }
 
 # remove_device(name)
 remove_device() {
-       echo -n "$1" > $SYSFS_DRIVERDIR/remove
+       local dir="$CONFIGFS_DIR/$1"
+
+       rmdir $dir
+}
+
+mount_configfs() {
+       # FIXME: This should probably be done somewhere else.
+       mount | grep configfs
+       if [ $? -eq 0 ]; then
+               # already mounted
+               return 0
+       fi
+       mkdir -p /config
+       [ $? -eq 0 ] || return 1
+       mount configfs -t configfs /config
+       [ $? -eq 0 ] || return 1
+
+       return 0
 }
 
 start() {
+       # Make sure configfs is mounted
+       mount_configfs
+       [ $? -eq 0 ] || return 1
+
        #FIXME we should use a config file, but I dunno how that parser works.
        add_device "default" 5 4 3 7 0
 }