【TINY4412】U-BOOT移植笔记:(11)LED驱动

【TINY4412】U-BOOT移植笔记:(11)LED驱动

宿主机 : 虚拟机 Ubuntu 16.04 LTS / X64
目标板[底板]: Tiny4412SDK - 1506
目标板[核心板]: Tiny4412 - 1412
U-BOOT版本: 2017.03
交叉编译器: gcc-arm-none-eabi-5_4-2016q3
日期: 2017-05-21 11:34:46
作者: SY

LED驱动

git diff 6a94cf da4612
diff --git a/arch/arm/dts/exynos4412-tiny4412.dts b/arch/arm/dts/exynos4412-tiny4412.dts
index 342eb44..3b80246 100644
--- a/arch/arm/dts/exynos4412-tiny4412.dts
+++ b/arch/arm/dts/exynos4412-tiny4412.dts
@@ -52,6 +52,7 @@
status = "disabled";
};

+
sdhci@12510000 {
compatible = "samsung,exynos4412-sdhci";
status = "disabled";
@@ -74,6 +75,7 @@
status = "disabled";
};

+
dwmmc@12550000 {
compatible = "samsung,exynos4412-dw-mshc";
samsung,bus-width = <8>;
@@ -85,3 +87,4 @@
index = <4>;
};
};
+
diff --git a/auto_backup.sh b/auto_backup.sh
new file mode 100755
index 0000000..6a355d7
--- /dev/null
+++ b/auto_backup.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+echo "-----------------------------------------------------"
+echo "Auto Backup Config..."
+cp .config tiny4412_config
+
+echo "-----------------------------------------------------"
+echo "make..."
+make
+
+echo "-----------------------------------------------------"
+echo "Done..."
+
diff --git a/auto_run.sh b/auto_run.sh
deleted file mode 100755
index cc85e57..0000000
--- a/auto_run.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-
-echo "Clean Configuration File..."
-make distclean
-
-echo "Clean Obj..."
-make clean
-
-echo "Load Configuration File..."
-make tiny4412_defconfig
-
-echo "make..."
-make CROSS_COMPILE=arm-linux-
-
diff --git a/configs/tiny4412_defconfig b/configs/tiny4412_defconfig
index 0da8adf..4619461 100644
--- a/configs/tiny4412_defconfig
+++ b/configs/tiny4412_defconfig
@@ -8,7 +8,7 @@ CONFIG_SYS_CONSOLE_IS_IN_ENV=y
CONFIG_SYS_CONSOLE_INFO_QUIET=y
CONFIG_SPL=y
CONFIG_HUSH_PARSER=y
-CONFIG_SYS_PROMPT="TINY4412# "
+CONFIG_SYS_PROMPT="TINY4412 # "
CONFIG_CMD_BOOTZ=y
# CONFIG_CMD_IMLS is not set
# CONFIG_CMD_XIMG is not set
@@ -44,5 +44,3 @@ CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_G_DNL_MANUFACTURER="Samsung"
CONFIG_G_DNL_VENDOR_NUM=0x04e8
CONFIG_G_DNL_PRODUCT_NUM=0x6601
-
-
diff --git a/drivers/gpio/gpio-uclass.c b/drivers/gpio/gpio-uclass.c
index 9ab9df4..7709101 100644
--- a/drivers/gpio/gpio-uclass.c
+++ b/drivers/gpio/gpio-uclass.c
@@ -37,6 +37,7 @@ static int gpio_to_device(unsigned int gpio, struct gpio_desc *desc)
dev;
ret = uclass_next_device(&dev)) {
uc_priv = dev_get_uclass_priv(dev);
+               
if (gpio >= uc_priv->gpio_base &&
gpio < uc_priv->gpio_base + uc_priv->gpio_count) {
desc->dev = dev;
@@ -199,11 +200,9 @@ int gpio_request(unsigned gpio, const char *label)
{
struct gpio_desc desc;
int ret;
-
ret = gpio_to_device(gpio, &desc);
if (ret)
return ret;
-
return dm_gpio_request(&desc, label);
}

diff --git a/drivers/misc/gpio_led.c b/drivers/misc/gpio_led.c
index b913069..302eed6 100644
--- a/drivers/misc/gpio_led.c
+++ b/drivers/misc/gpio_led.c
@@ -10,7 +10,7 @@
#include <asm/gpio.h>

#ifndef CONFIG_GPIO_LED_INVERTED_TABLE
-#define CONFIG_GPIO_LED_INVERTED_TABLE {}
+#define CONFIG_GPIO_LED_INVERTED_TABLE {248, 249, 250, 251}
#endif

static led_id_t gpio_led_inv[] = CONFIG_GPIO_LED_INVERTED_TABLE;
@@ -35,7 +35,6 @@ void __led_init(led_id_t mask, int state)
printf("%s: failed requesting GPIO%lu!\n", __func__, mask);
return;
}
-
gpio_value = gpio_led_gpio_value(mask, state);
gpio_direction_output(mask, gpio_value);
}
diff --git a/include/configs/tiny4412.h b/include/configs/tiny4412.h
index 6ed0b16..994ba15 100644
--- a/include/configs/tiny4412.h
+++ b/include/configs/tiny4412.h
@@ -15,6 +15,7 @@
#define CONFIG_EXYNOS4412                  1    /* which is a EXYNOS4412 SoC */
#define CONFIG_TINY4412                        1        /* working with TINY4412 */

+
/* DEBUG UART */
#if ! defined(CONFIG_SPL_BUILD)
#if 0
diff --git a/sd_fuse/tiny4412/auto_fuse.sh b/sd_fuse/tiny4412/auto_fuse.sh
index 7a024f5..374401a 100755
--- a/sd_fuse/tiny4412/auto_fuse.sh
+++ b/sd_fuse/tiny4412/auto_fuse.sh
@@ -2,7 +2,7 @@

#EXEC="sd_fusing.sh"
EXEC="fast_fusing.sh"
-SD_PATH="/dev/sdb"
+SD_PATH="/dev/sdd"
FUSE_PATH="./${EXEC}"

if [ -e ${FUSE_PATH} ]
diff --git a/tiny4412_config b/tiny4412_config
index e765751..f1528c0 100644
--- a/tiny4412_config
+++ b/tiny4412_config
@@ -309,7 +309,7 @@ CONFIG_SPL=y
#
CONFIG_CMDLINE=y
CONFIG_HUSH_PARSER=y
-CONFIG_SYS_PROMPT="TINY4412# "
+CONFIG_SYS_PROMPT="TINY4412 # "

#
# Autoboot options
@@ -320,10 +320,7 @@ CONFIG_AUTOBOOT=y
#
# FASTBOOT
#
-CONFIG_FASTBOOT=y
-# CONFIG_USB_FUNCTION_FASTBOOT is not set
-# CONFIG_CMD_FASTBOOT is not set
-# CONFIG_ANDROID_BOOT_IMAGE is not set
+# CONFIG_FASTBOOT is not set

#
# Commands
@@ -594,8 +591,42 @@ CONFIG_DM_KEYBOARD=y
#
# LED Support
#
-# CONFIG_LED is not set
-# CONFIG_LED_STATUS is not set
+CONFIG_LED=y
+CONFIG_LED_GPIO=y
+CONFIG_LED_STATUS=y
+CONFIG_LED_STATUS_OFF=0
+CONFIG_LED_STATUS_BLINKING=1
+CONFIG_LED_STATUS_ON=2
+CONFIG_LED_STATUS_GPIO=y
+CONFIG_LED_STATUS_BOARD_SPECIFIC=y
+
+#
+# LEDs parameters
+#
+CONFIG_LED_STATUS0=y
+CONFIG_LED_STATUS_BIT=248
+CONFIG_LED_STATUS_STATE=0
+CONFIG_LED_STATUS_FREQ=2
+CONFIG_LED_STATUS1=y
+CONFIG_LED_STATUS_BIT1=249
+CONFIG_LED_STATUS_STATE1=0
+CONFIG_LED_STATUS_FREQ1=2
+CONFIG_LED_STATUS2=y
+CONFIG_LED_STATUS_BIT2=250
+CONFIG_LED_STATUS_STATE2=0
+CONFIG_LED_STATUS_FREQ2=2
+CONFIG_LED_STATUS3=y
+CONFIG_LED_STATUS_BIT3=251
+CONFIG_LED_STATUS_STATE3=0
+CONFIG_LED_STATUS_FREQ3=2
+# CONFIG_LED_STATUS4 is not set
+# CONFIG_LED_STATUS5 is not set
+# CONFIG_LED_STATUS_BOOT_ENABLE is not set
+# CONFIG_LED_STATUS_RED_ENABLE is not set
+# CONFIG_LED_STATUS_YELLOW_ENABLE is not set
+# CONFIG_LED_STATUS_BLUE_ENABLE is not set
+# CONFIG_LED_STATUS_GREEN_ENABLE is not set
+CONFIG_LED_STATUS_CMD=y

#
# Mailbox Controller Support
(END)
  • 通过make menuconfig配置LED时,使能选项 CONFIG_LED_STATUS,输入make,弹出输入框,需要输入参数:
CONFIG_LED_STATUS_BIT=248
CONFIG_LED_STATUS_BIT1=249
CONFIG_LED_STATUS_BIT2=250
CONFIG_LED_STATUS_BIT3=251

这些参数是gpio的数字表示法,通过映射找到最终对应的物理地址,查看开发板原理图,4个LED对应的引脚:GPM4-0、GPM4-1、GPM4-2、GPM4-3。查看文件:arch/arm/mach-exynos/include/mach/gpio.h定义:

enum exynos4X12_gpio_pin {

EXYNOS4X12_GPIO_M40,    /* 248 0xf8 */
EXYNOS4X12_GPIO_M41,
EXYNOS4X12_GPIO_M42,
EXYNOS4X12_GPIO_M43,
};

上电测试,发现设置LED OFF时,LED实际点亮。通过设置CONFIG_GPIO_LED_INVERTED_TABLE,进行取反处理。

#ifndef CONFIG_GPIO_LED_INVERTED_TABLE
#define CONFIG_GPIO_LED_INVERTED_TABLE {248, 249, 250, 251}
#endif
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值