summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYe.Li <B37916@freescale.com>2015-03-26 15:24:04 +0800
committerPeng Fan <Peng.Fan@freescale.com>2015-04-29 15:04:25 +0800
commita3e51689d0ef7d204b4a6b74afd064c0315b09e8 (patch)
tree4652932dea825f3b07a270bff45fe0a87b0c983b
parent0a619caee7b6fec513214a3bd4baa00a552efc61 (diff)
downloadu-boot-imx-a3e51689d0ef7d204b4a6b74afd064c0315b09e8.zip
u-boot-imx-a3e51689d0ef7d204b4a6b74afd064c0315b09e8.tar.gz
u-boot-imx-a3e51689d0ef7d204b4a6b74afd064c0315b09e8.tar.bz2
MLK-10476 imx: mx7dsabresd: Fix 74LV driver issue
Should write the bits to SDI in reverse order because of the bits will be shifted. Signed-off-by: Ye.Li <B37916@freescale.com> (cherry picked from commit 83389e054d3cb7a905a3f81c20f395e784beb258) Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
-rw-r--r--board/freescale/mx7dsabresd/mx7dsabresd.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/board/freescale/mx7dsabresd/mx7dsabresd.c b/board/freescale/mx7dsabresd/mx7dsabresd.c
index a653c08..815fd68 100644
--- a/board/freescale/mx7dsabresd/mx7dsabresd.c
+++ b/board/freescale/mx7dsabresd/mx7dsabresd.c
@@ -203,13 +203,15 @@ static enum qn_level seq[3][2] = {
};
static enum qn_func qn_output[8] = {
- qn_disable, qn_reset, qn_reset, qn_reset, qn_reset, qn_enable, qn_enable
+ qn_disable, qn_reset, qn_reset, qn_reset, qn_reset, qn_reset, qn_enable,
+ qn_enable
};
void iox74lv_init(void)
{
- int i = 0;
- for (i = 0; i < 8; i++) {
+ int i;
+
+ for (i = 7; i >= 0; i--) {
gpio_direction_output(IOX_SHCP, 0);
gpio_direction_output(IOX_SDI, seq[qn_output[i]][0]);
udelay(500);
@@ -224,14 +226,13 @@ void iox74lv_init(void)
*/
gpio_direction_output(IOX_STCP, 1);
- for (i = 0; i < 8; i++) {
+ for (i = 7; i >= 0; i--) {
gpio_direction_output(IOX_SHCP, 0);
gpio_direction_output(IOX_SDI, seq[qn_output[i]][1]);
udelay(500);
gpio_direction_output(IOX_SHCP, 1);
udelay(500);
}
-
gpio_direction_output(IOX_STCP, 0);
udelay(500);
/*
@@ -242,8 +243,8 @@ void iox74lv_init(void)
void iox74lv_set(int index)
{
- int i = 0;
- for (i = 0; i < 8; i++) {
+ int i;
+ for (i = 7; i >= 0; i--) {
gpio_direction_output(IOX_SHCP, 0);
if (i == index)
@@ -262,7 +263,7 @@ void iox74lv_set(int index)
*/
gpio_direction_output(IOX_STCP, 1);
- for (i = 0; i < 8; i++) {
+ for (i = 7; i >= 0; i--) {
gpio_direction_output(IOX_SHCP, 0);
gpio_direction_output(IOX_SDI, seq[qn_output[i]][1]);
udelay(500);