diff options
author | John Crispin <blogic@openwrt.org> | 2013-06-21 16:54:37 +0000 |
---|---|---|
committer | John Crispin <blogic@openwrt.org> | 2013-06-21 16:54:37 +0000 |
commit | f1b4824c865b228039d84b2605b2e7e4f34cddeb (patch) | |
tree | 37c9cbe251e4fb790aaa72e862c35822be30b491 /package/kernel/mmc_over_gpio/files/mmc_over_gpio.init | |
parent | d2642de7494bba312bbb22cfeb3ad77130a10047 (diff) | |
download | master-187ad058-f1b4824c865b228039d84b2605b2e7e4f34cddeb.tar.gz master-187ad058-f1b4824c865b228039d84b2605b2e7e4f34cddeb.tar.bz2 master-187ad058-f1b4824c865b228039d84b2605b2e7e4f34cddeb.zip |
packages: clean up the package folder
Signed-off-by: John Crispin <blogic@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37007 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/kernel/mmc_over_gpio/files/mmc_over_gpio.init')
-rw-r--r-- | package/kernel/mmc_over_gpio/files/mmc_over_gpio.init | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/package/kernel/mmc_over_gpio/files/mmc_over_gpio.init b/package/kernel/mmc_over_gpio/files/mmc_over_gpio.init new file mode 100644 index 0000000000..121c80398c --- /dev/null +++ b/package/kernel/mmc_over_gpio/files/mmc_over_gpio.init @@ -0,0 +1,83 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2008 OpenWrt.org +START=90 + +CONFIGFS_DIR="/config/gpiommc" + +# add_device(name, DI_pin, DO_pin, CLK_pin, CS_pin, mode) +add_device() { + local dir="$CONFIGFS_DIR/$1" + + mkdir -p $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() { + 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_service() { + local section="$1" + config_get "name" "$section" "name" + config_get "DI_pin" "$section" "DI_pin" + config_get "DO_pin" "$section" "DO_pin" + config_get "CLK_pin" "$section" "CLK_pin" + config_get "CS_pin" "$section" "CS_pin" + config_get "mode" "$section" "mode" + config_get_bool "enabled" "$section" "enabled" '1' + [ "$enabled" -gt 0 ] && add_device "$name" $DI_pin $DO_pin $CLK_pin $CS_pin $mode & +} + +stop_service() { + local section="$1" + config_get "name" "$section" "name" + remove_device "$name" +} + +start() { + # Make sure configfs is mounted + mount_configfs + [ $? -eq 0 ] || return 1 + + config_load "mmc_over_gpio" + config_foreach start_service "mmc_over_gpio" +} + +stop() { + config_load "mmc_over_gpio" + config_foreach stop_service "mmc_over_gpio" +} |