mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-21 12:27:27 +03:00
Update gpiommc to use configfs
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@11887 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
@@ -16,7 +16,7 @@ include $(INCLUDE_DIR)/package.mk
|
||||
define KernelPackage/mmc-over-gpio
|
||||
SUBMENU:=Other modules
|
||||
DEPENDS:=@GPIO_SUPPORT +kmod-mmc-spi +kmod-spi-gpio
|
||||
KCONFIG:=CONFIG_GPIOMMC
|
||||
KCONFIG:=CONFIG_GPIOMMC CONFIG_CONFIGFS_FS=y
|
||||
TITLE:=MMC/SD card over GPIO support
|
||||
FILES:=$(LINUX_DIR)/drivers/mmc/host/gpiommc.$(LINUX_KMOD_SUFFIX)
|
||||
AUTOLOAD:=$(call AutoLoad,93,spi_gpio gpiommc)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user