meta-digi: add bluetooth support to ccimx6adpt

Signed-off-by: Alex Gonzalez <alex.gonzalez@digi.com>
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
This commit is contained in:
Alex Gonzalez 2014-02-18 17:31:03 +01:00 committed by Javier Viguera
parent 584c8d32f9
commit 4c79ce2429
2 changed files with 20 additions and 12 deletions

View File

@ -28,3 +28,6 @@ KERNEL=="ttyAM0", MODE="0660", SYMLINK+="ttyS0"
KERNEL=="ttyAMA0", MODE="0660", SYMLINK+="ttyS0" KERNEL=="ttyAMA0", MODE="0660", SYMLINK+="ttyS0"
KERNEL=="ttySP0", MODE="0660", SYMLINK+="ttyBt" KERNEL=="ttySP0", MODE="0660", SYMLINK+="ttyBt"
KERNEL=="ttyAPP0", MODE="0660", SYMLINK+="ttyBt" KERNEL=="ttyAPP0", MODE="0660", SYMLINK+="ttyBt"
# i.MX6 serial port rules
KERNEL=="ttymxc1", MODE="0660", SYMLINK+="ttyBt"

View File

@ -23,16 +23,21 @@ fi
SCRIPTNAME="${0}" SCRIPTNAME="${0}"
ccardimx28js_bt_init() { bt_init() {
# #
# Exit if this hardware does not support Bluetooth # Exit if this hardware does not support Bluetooth
# #
BLUE_TOOTH_VARIANTS="0x02 0x03 0x10 0x11" if [ "${MACHINENAME}" = "ccardimx28" ]; then
MOD_VARIANT="$(cat /proc/device-tree/digi,hwid,variant 2>/dev/null || \ BLUE_TOOTH_VARIANTS="0x02 0x03 0x10 0x11"
cat /sys/kernel/ccardimx28/mod_variant)" MOD_VARIANT="$(cat /proc/device-tree/digi,hwid,variant 2>/dev/null || \
if ! echo ${BLUE_TOOTH_VARIANTS} | grep -qs ${MOD_VARIANT}; then cat /sys/kernel/${MACHINENAME}/mod_variant)"
echo "${SCRIPTNAME}: FAILED (variant ${MOD_VARIANT} does not support bluetooth)" if ! echo ${BLUE_TOOTH_VARIANTS} | grep -qs ${MOD_VARIANT}; then
exit echo "${SCRIPTNAME}: FAILED (variant ${MOD_VARIANT} does not support bluetooth)"
exit
fi
BT_PWR_GPIO_NR="21"
elif [ "${MACHINENAME}" = "ccimx6adpt" ]; then
BT_PWR_GPIO_NR="244"
fi fi
# #
@ -69,7 +74,7 @@ ccardimx28js_bt_init() {
# #
JAPANESE_REGION_CODE="0x2" JAPANESE_REGION_CODE="0x2"
REGION_CODE="$(cat /proc/device-tree/digi,hwid,cert 2>/dev/null || \ REGION_CODE="$(cat /proc/device-tree/digi,hwid,cert 2>/dev/null || \
cat /sys/kernel/ccardimx28/mod_cert)" cat /sys/kernel/${MACHINENAME}/mod_cert)"
if [ -n "${REGION_CODE}" -a "${JAPANESE_REGION_CODE}" = "${REGION_CODE}" ]; then if [ -n "${REGION_CODE}" -a "${JAPANESE_REGION_CODE}" = "${REGION_CODE}" ]; then
# #
# We don't want to wear out flash rewriting the configuration file, # We don't want to wear out flash rewriting the configuration file,
@ -102,12 +107,12 @@ ccardimx28js_bt_init() {
# #
# If hciattach fails try to recover it by toggling the GPIO # If hciattach fails try to recover it by toggling the GPIO
# #
BT_PWR_L="/sys/class/gpio/gpio21" BT_PWR_L="/sys/class/gpio/gpio${BT_PWR_GPIO_NR}"
[ -d "${BT_PWR_L}" ] || echo -n 21 > /sys/class/gpio/export [ -d "${BT_PWR_L}" ] || echo -n ${BT_PWR_GPIO_NR} > /sys/class/gpio/export
echo -n out > ${BT_PWR_L}/direction && sleep .2 echo -n out > ${BT_PWR_L}/direction && sleep .2
echo -n 0 > ${BT_PWR_L}/value && sleep .2 echo -n 0 > ${BT_PWR_L}/value && sleep .2
echo -n 1 > ${BT_PWR_L}/value && sleep .2 echo -n 1 > ${BT_PWR_L}/value && sleep .2
[ -d "${BT_PWR_L}" ] && echo -n 21 > /sys/class/gpio/unexport [ -d "${BT_PWR_L}" ] && echo -n ${BT_PWR_GPIO_NR} > /sys/class/gpio/unexport
RETRIES="$((RETRIES - 1))" RETRIES="$((RETRIES - 1))"
done done
if [ "${RETRIES}" -eq "0" ]; then if [ "${RETRIES}" -eq "0" ]; then
@ -125,7 +130,7 @@ echo "Starting bluetooth services."
# Initialize driver for 'ccardimx28js' # Initialize driver for 'ccardimx28js'
MACHINENAME="$(cat /proc/device-tree/digi,machine,name 2>/dev/null || cat /sys/kernel/machine/name)" MACHINENAME="$(cat /proc/device-tree/digi,machine,name 2>/dev/null || cat /sys/kernel/machine/name)"
[ "${MACHINENAME}" = "ccardimx28" ] && ccardimx28js_bt_init [ "${MACHINENAME}" = "ccardimx28" -o "${MACHINENAME}" = "ccimx6adpt" ] && bt_init
# Run bluetooth daemon # Run bluetooth daemon
if hciconfig hci0 up && bluetoothd; then if hciconfig hci0 up && bluetoothd; then