Armadilloフォーラム

Linux起動時のSPIのSSピンの信号レベル設定方法

nic-segawa

2016年12月19日 10時21分

お世話になります。

Armadillo-410にてCSPI3を有効にして使用しています。
SS0とSS1にデバイスを接続していて、それぞれActive-LowとActive-Highとなっています。
Linux起動中にSS0とSS1はHigh状態となるため、SS1に接続されているActive-Highのデバイスが選択状態となってしまいます。これを回避するためにLinux起動中のSS1状態をLowになるように変更したいのですが、その方法を教えて頂けないでしょうか?

よろしくお願い致します。

コメント

at_takashi.sasayama

2016年12月19日 19時02分

笹山です。

お使いの linuxカーネルバージョンを教えていただけないでしょうか?
仮に2.6.26-at環境をお使いでしたら以下の様に修正すると、
CSPI3-SS1をlowにできます。

■Hermit-2.2.0

src/target/armadillo4x0/board.c

96         { MX25_PIN_CSI_D7, MUX_ALT5, MUX_ALT5, 0x01c0, 0x01c0 }, /* 0x01e0 を 0x01c0 に変更 */

■linux-2.6.26-at27

arch/arm/mach-mx25/armadillo400_gpio.c

1053         case 2:
1054 #if defined(CONFIG_ARMADILLO400_CON9_16_CSPI3_SS0) || defined(CONFIG_ARMADILLO410_CON2_76_CSPI3_SS0)
1055                 gpio_set_value(GPIO(1, 31), 1);
1056 #endif
1057 #if defined(CONFIG_ARMADILLO400_CON9_18_CSPI3_SS1) || defined(CONFIG_ARMADILLO410_CON2_74_CSPI3_SS1)
1058                 gpio_set_value(GPIO(1, 6), 0); /* 第2引数の1を0に変更 */
1059 #endif
1060 #if defined(CONFIG_ARMADILLO400_CON9_15_CSPI3_SS2) || defined(CONFIG_ARMADILLO410_CON2_77_CSPI3_SS2)
1061                 gpio_set_value(GPIO(1, 7), 1);
1062 #endif
1063 #if defined(CONFIG_ARMADILLO400_CON9_17_CSPI3_SS3) || defined(CONFIG_ARMADILLO410_CON2_75_CSPI3_SS3)
1064                 gpio_set_value(GPIO(4, 21), 1);
1065 #endif
1087         case 2:
1088 #if defined(CONFIG_ARMADILLO400_CON9_16_CSPI3_SS0) || defined(CONFIG_ARMADILLO410_CON2_76_CSPI3_SS0)
1089                 gpio_set_value(GPIO(1, 31), 0);
1090 #endif
1091 #if defined(CONFIG_ARMADILLO400_CON9_18_CSPI3_SS1) || defined(CONFIG_ARMADILLO410_CON2_74_CSPI3_SS1)
1092                 gpio_set_value(GPIO(1, 6), 1); /* 第2引数の0を1に変更 */
1093 #endif
1094 #if defined(CONFIG_ARMADILLO400_CON9_15_CSPI3_SS2) || defined(CONFIG_ARMADILLO410_CON2_77_CSPI3_SS2)
1095                 gpio_set_value(GPIO(1, 7), 0);
1096 #endif
1097 #if defined(CONFIG_ARMADILLO400_CON9_17_CSPI3_SS3) || defined(CONFIG_ARMADILLO410_CON2_75_CSPI3_SS3)
1098                 gpio_set_value(GPIO(4, 21), 0);

■アプリ

SPI_CS_HIGH を mode に指定してください。

笹山様

Linuxカーネルは2.6.26-at環境です。
教えて頂いた通りに修正するとCSPI3-SS1をlowにできました。
ありがとうございました。