Armadilloフォーラム

Armadillo-640 RTCオプションモジュールの使用

k.sato

2024年9月12日 11時31分

佐藤です。

いつもお世話になっております。

Armadillo-640をABOSで開発していてRTCオプションモジュールを使用したいと考えております。

3.2. オプションモジュールの対応
https://manual.atmark-techno.com/armadillo-610/armadillo-6x0_abos_migra…

18.5. Armadillo-600シリーズ RTCオプションモジュール
https://manual.atmark-techno.com/armadillo-640/armadillo-640_product_ma…

上記でABOSで使用できるのとハードウェアの接続はわかったのですが、
ソフトウェアはどう設定すればよいかドキュメントが見つけられませんでした。

ATDEのat-dtwebのDevice Tree EditorからOPTION BOARDのRTCMOD-00選択して書き換えれば
RTCオプションモジュールを搭載することで自動的にそちら側を使用するのでしょうか?

設定方法を教えていただけませんか?

以上、よろしくお願い致します。

コメント

溝渕です。

> ATDEのat-dtwebのDevice Tree EditorからOPTION BOARDのRTCMOD-00選択して書き換えれば
> RTCオプションモジュールを搭載することで自動的にそちら側を使用するのでしょうか?

ご推測の通り、at-dtwebでRTCMOD-00選択すると利用可能になります。

at-dewebで選択すると、RTCオプションモジュールに搭載のRTCが、"/dev/rtc0"となるため、プライマリRTC(hwclockコマンド等からデフォルトで利用されるRTC)として利用できるようになります。

溝渕様

佐藤です。

回答ありがとうございます。
> ご推測の通り、at-dtwebでRTCMOD-00選択すると利用可能になります。
>
> at-dewebで選択すると、RTCオプションモジュールに搭載のRTCが、"/dev/rtc0"となるため、プライマリRTC(hwclockコマンド等からデフォルトで利用されるRTC)として利用できるようになります。

RTCオプションモジュール部分を基板に起こそうと思い調査したのですがRTCのNR3225SAが生産終了しています。
他のRTCを使用することはできるのでしょうか?

以上、よろしくお願い致します。

溝渕です。

> 他のRTCを使用することはできるのでしょうか?

ArmadilloとRTCに特に依存関係は無いので、ハードウェア的に接続でき、デバイスドライバがあるものは使えると思います。

ハードウェア的には、電源とI/O電圧が3.3Vのものを選定すると良いかと思います。

デバイスドライバの対応状況については、Linuxカーネルソースの以下をRTCの型番でgrepすると、だいたいの対応状況がわかります。
linux-4.14-at/drivers/rtc/
ただ、これだと完全にはわからないので、WEBでドライバの有無を調べるのも一つの手段かと思います。

溝渕様

> RTCの例として、Armadillo-640の兄弟機であるArmadillo-610 拡張ボードにはRV-8803-C7-TA-QCが搭載されています。
>
> https://armadillo.atmark-techno.com/resources/documents/armadillo-610/s…
ありがとうございます。
Armadillo-610は製品購入していないのでリンク先が見れませんでしたが「RV-8803-C7-TA-QC」が搭載されているのですね。

linux-4.14-at/drivers/rtc/に「rtc-rv8803.c」があるのを確認できました。

[ATDE ~/linux-[VERSION]]$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
また、上記よりカーネルコンフィギュレーション設定画面のDevice Drivers→Real Time Clockを確認しました。

  │ │                              *** I2C RTC drivers ***                                                   
  │ │                            < >   Abracon AB-RTCMC-32.768kHz-B5ZE-S3                                    
  │ │                            < >   Abracon AB-RTCMC-32.768kHz-EOZ9                                       
  │ │                            < >   Abracon ABx80x                                                        
  │ │                            < >   Dallas/Maxim DS1307/37/38/39/40/41, ST M41T00, EPSON RX-8025, ISL12057
  │ │                            < >   Dallas/Maxim DS1374                                                   
  │ │                            < >   Dallas/Maxim DS1672                                                   
  │ │                            < >   Haoyu Microelectronics HYM8563                                        
  │ │                            < >   Maxim MAX6900                                                         
  │ │                            <*>   NDK NR3225SA                                                          
  │ │                            < >   Ricoh R2025S/D, RS5C372A/B, RV5C386, RV5C387A                         
  │ │                            < >   Intersil ISL1208                                                      
  │ │                            < >   Intersil ISL12022                                                     
  │ │                            < >   Intersil ISL12026                                                     
  │ │                            < >   Xicor/Intersil X1205                                                  
  │ │                            < >   NXP PCF8523                                                           
  │ │                            < >   NXP PCF85063                                                          
  │ │                            < >   NXP PCF85363                                                          
  │ │                            < >   Philips PCF8563/Epson RTC8564                                         
  │ │                            < >   Philips PCF8583                                                       
  │ │                            < >   ST M41T62/65/M41T80/81/82/83/84/85/87 and compatible                  
  │ │                            < >   TI BQ32000                                                            
  │ │                            <*>   Seiko Instruments S-35390A                                            
  │ │                            < >   Ramtron FM3130                                                        
  │ │                            < >   Epson RX8010SJ                                                        
  │ │                            < >   Epson RX-8571/RX-8581                                                 
  │ │                            < >   Epson RX-8025SA/NB                                                    
  │ │                            < >   EM Microelectronic EM3027                                             
  │ │                            < >   Micro Crystal RV3028                                                  
  │ │                            < >   Micro Crystal RV3032                                                  
  │ │                            <*>   Micro Crystal RV8803, Epson RX8900                                    
  │ │                            < >   ZXW Shenzhen whwave SD3078    

ここでチェックされているデバイスを使用すれば特に設定を弄る必要はないのでしょうか?

以上、よろしくお願い致します。

溝渕です。

> ここでチェックされているデバイスを使用すれば特に設定を弄る必要はないのでしょうか?

いえ、上記ではLinuxカーネルイメージにデバイスドライバが組み込まれるだけです。この他に、Device TreeへのRTCの追加が必要となります。

以下を参考に、rtc_rv8803 nodeを追加してください。

linux-4.14-at/arch/arm/mach-imx/armadillo_iotg_a6_subboard/armadillo_iotg_a6_rtc_rv8803.dts

佐藤です。

> > ここでチェックされているデバイスを使用すれば特に設定を弄る必要はないのでしょうか?
>
> いえ、上記ではLinuxカーネルイメージにデバイスドライバが組み込まれるだけです。この他に、Device TreeへのRTCの追加が必要となります。
>
> 以下を参考に、rtc_rv8803 nodeを追加してください。
>
> linux-4.14-at/arch/arm/mach-imx/armadillo_iotg_a6_subboard/armadillo_iotg_a6_rtc_rv8803.dts
Device TreeへのRTCの追加とはarmadillo_iotg_a6_rtc_rv8803.dtsのファイル名やインクルードパスを修正し
ATDEの/linux-[VERSION]/arch/arm/boot/dts/へコピー、makeしてdtboファイルを作成。
dtboファイルをArmadillo-640の/boot/へ配置し/boot/overlays.txtへ追記して永続化といった形でよいでしょうか?

以上、よろしくお願い致します。

佐藤です。

Device TreeへのRTCの追加方法は前回のやり方でよいのでしょうか?

また、SPIのRTCである「Microchip MCP795」を使用したいときはLinuxのmenuconfigからチェックを入れ、
at-dtwebからECSPI1を指定することで外部RTCに切り替えてくれるのでしょうか?

以上、よろしくお願い致します。

佐藤です。

お世話になっております。

ようやく教えていただいたRV-8803-C7-TA-QCと互換であるRX8900を購入して動作確認をはじめました。

https://download.atmark-techno.com/armadillo-640/image/baseos-600-insta…

上記をArmadillo-640に書き込み、
> linux-4.14-at/arch/arm/mach-imx/armadillo_iotg_a6_subboard/armadillo_iotg_a6_rtc_rv8803.dts
を参考に添付した.dtboをDevice Treeへ追加しました。
しかし/boot/overlays.txtへ追記し、電源を入れ直すと再起動を繰り返します。

これは.dtsの修正がおかしいのでしょうか?

起動ログとI2Cの通信内容を添付します。

rtc-rv8803 4-0032: Unable to read register 0x0e

起動ログに上記メッセージが出ると再起動を抜け、ログインの入力画面まで起動することもありました。

以上、よろしくお願い致します。

ファイル ファイルの説明
armadillo-640_rtc_rv8803.zip 今回作成したRTC用の.dtsと.dtboファイル
起動ログ.txt 起動時のコンソール出力
RX8900 I2C波形.png 電源投入時のI2C波形、ズームの位置により3枚

佐藤です。

お世話になっております。

結局回路のRTC_INTピンのプルアップ不足でRTC割込が入り続け起動できないような形でした。
申し訳ありません。

引き続きSPIでのRTC外付けを調査しています。
使用デバイスはEPSONのRX6110SAでATDEのmenuconfig にてドライバを追加しています。

そして armadillo-640_rtc_rx6110.dtboとしてビルドし動作確認したのですが、添付した3つの状態になっています。

下記の2点を教えていただきたいです。

①下記のような割り当ては必要ないのか?
 もしくは下記のように割り当てて正常に動作するにはどこが間違っているか?

&{/} {
	aliases {
		rtc0 = &rtc_rx6110;
	};

②cs-gpiosをGPIO_ACTIVE_HIGHに変更して波形を確認したがオシロではGPIO_ACTIVE_LOWのままなのは書き方が間違っているのか?

&ecspi1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_ecspi1>;
	cs-gpios =
		<&gpio3 26 GPIO_ACTIVE_HIGH>	// CS0
		;
	status = "okay";
	#address-cells = <1>;
	#size-cells = <0>;

以上、よろしくお願い致します。

ファイル ファイルの説明
aliases rtc0 指定あり.zip I2Cのときのように rtc0 = &rtc_rx6110; と割り当てたがSPIバスが振れない
aliases rtc0 指定なし.zip /dev/rtc1 が追加されるが、RX6110は rtc0 としてSPIバスが振れている
aliases rtc0 指定なし CS反転.zip RX6110はCSがACTIVE_HIGHのため反転させたが、実際に波形を確認すると反転されていない

at_dominique.m…

2024年10月17日 11時23分

佐藤さん
マルティネです。

返事が途切れてすみません。
最後の二つのメッセージに返事します。

> rtc-rv8803 4-0032: Unable to read register 0x0e

何か i2c の設定がおかしいかもしれないですね。

rv8803 の設定無しで、i2c だけを初期化すれば起動できますか?
その場合に i2cget で rtc の flag register を読めますか?

> [armadillo-640_rtc_rv8803.zip]
> これは.dtsの修正がおかしいのでしょうか?
一つ気になったのは、armadillo IoT Gateway A6 の dts で gpio-i2c の pinctrl の値が違ってます:

        pinctrl_i2c_gpio1: i2cgpio1grp {
                fsl,pins= <
                        MX6UL_PAD_UART5_RX_DATA__GPIO1_IO31     0x40010008  // EXT_IO2
                        MX6UL_PAD_UART5_TX_DATA__GPIO1_IO30     0x40010008  // EXT_IO4
                >;
        };

0x40000000 の SION bit が必要かもしれません。

また、linux の起動ログに何か手がかりあるかもしれませんので、u-boot の「optargs」の環境変数から「quiet」を外してください(起動する前に「setenv optargs」で空にするなど)

でも、まずは i2c だけを確認してみてください。

> ①下記のような割り当ては必要ないのか?
>  もしくは下記のように割り当てて正常に動作するにはどこが間違っているか?
>

> &{/} {
> 	aliases {
> 		rtc0 = &rtc_rx6110;
> 	};
> 

これだけでは、RTCドライバの初期化順が先に snvs_rtc (soc内)を初期化すると snvs_rtc が rtc0 を登録してしまう可能性があります。
その場合は rx6110 の初期化が失敗するか、単純に rtc1 になるかは確認してませんが、armadillo-640-con9-rtc.dts ではたまたま運がよかっただけで、 5.10.224-r0 異常のカーネルでは snvs_rtc を明確に rtc1 に振っています:

        rtc0 = &rtc_nr3225sa;
        // we can't link to external nodes in dtbo,
        // hardcode path to &snvs_rtc
        rtc1 = "/soc/bus@2000000/snvs@20cc000/snvs-rtc-lp";
    };

その様に試してみてください。

> ②cs-gpiosをGPIO_ACTIVE_HIGHに変更して波形を確認したがオシロではGPIO_ACTIVE_LOWのままなのは書き方が間違っているのか?

cs-gpios は普通の gpio の API を使っていますので、有効になっているはずです。
一応確認しますが、GPIO_ACTIVE_HIGH はデフォルトなので、「GPIO_ACTIVE_LOWのまま」というのは明確に「GPIO_ACTIVE_LOW」を書いていたバージョンに比較していますね?(zipファイルでは設定されています)
cs-gpios 自体の書き方はこれであってますが、これも pinctrl_ecspi1 の値を確認した方がいいかもしれません。どれも hysteresis / pull up が設定されてますが必要ですか?

よろしくお願いします。

マルティネ様

佐藤です。

回答ありがとうございます。

> でも、まずは i2c だけを確認してみてください。
添付した.dtboを使用することでI2CでのRX8900の動作確認は出来ております。
rtc0として時刻の設定や読込が行えました。

> > ①下記のような割り当ては必要ないのか?
> >  もしくは下記のように割り当てて正常に動作するにはどこが間違っているか?
> >

> > &{/} {
> > 	aliases {
> > 		rtc0 = &rtc_rx6110;
> > 	};
> > 

>
> これだけでは、RTCドライバの初期化順が先に snvs_rtc (soc内)を初期化すると snvs_rtc が rtc0 を登録してしまう可能性があります。
> その場合は rx6110 の初期化が失敗するか、単純に rtc1 になるかは確認してませんが、armadillo-640-con9-rtc.dts ではたまたま運がよかっただけで、 5.10.224-r0 異常のカーネルでは snvs_rtc を明確に rtc1 に振っています:
>

>         rtc0 = &rtc_nr3225sa;
>         // we can't link to external nodes in dtbo,
>         // hardcode path to &snvs_rtc
>         rtc1 = "/soc/bus@2000000/snvs@20cc000/snvs-rtc-lp";
>     };
> 

>
> その様に試してみてください。

> > ②cs-gpiosをGPIO_ACTIVE_HIGHに変更して波形を確認したがオシロではGPIO_ACTIVE_LOWのままなのは書き方が間違っているのか?
>
> cs-gpios は普通の gpio の API を使っていますので、有効になっているはずです。
> 一応確認しますが、GPIO_ACTIVE_HIGH はデフォルトなので、「GPIO_ACTIVE_LOWのまま」というのは明確に「GPIO_ACTIVE_LOW」を書いていたバージョンに比較していますね?(zipファイルでは設定されています)
その通りです。
at-dtwebでECSPI1を配置したarmadillo-640-at-dtweb.dtsを参考にしたため「GPIO_ACTIVE_LOW」がデフォルトだと思っていました。

> cs-gpios 自体の書き方はこれであってますが、これも pinctrl_ecspi1 の値を確認した方がいいかもしれません。どれも hysteresis / pull up が設定されてますが必要ですか?

&iomuxc {
	pinctrl_ecspi1: ecspi1grp {
		fsl,pins = <
			MX6UL_PAD_LCD_DATA21__GPIO3_IO26	0x1b0b0 // CON9_16

hysteresis / pull up とはこの箇所でしょうか?
&iomuxc {
pinctrl_ecspi1: ecspi1grp {
fsl,pins = <
MX6UL_PAD_LCD_DATA21__GPIO3_IO26 0x00008// CON9_16

ファイル ファイルの説明
armadillo-640_rtc_rx8900.zip I2CでのRTC確認用 .dtbo
aliases rtc0 指定あり.zip

佐藤です。

すみません途中で書き込んでしまいました。

> > cs-gpios 自体の書き方はこれであってますが、これも pinctrl_ecspi1 の値を確認した方がいいかもしれません。どれも hysteresis / pull up が設定されてますが必要ですか?
必要ありません。

&iomuxc {
 	pinctrl_ecspi1: ecspi1grp {
		fsl,pins = <
			MX6UL_PAD_LCD_DATA21__GPIO3_IO26	0x1b0b0 // CON9_16

hysteresis / pull up とはこの箇所でしょうか?

&iomuxc {
	pinctrl_ecspi1: ecspi1grp {
		fsl,pins = <
			MX6UL_PAD_LCD_DATA21__GPIO3_IO26	0x00008// CON9_16

上記としてみましたがCSピンはACTIVE_HIGHとなりません。

&{/} {
	aliases {
		rtc0 = &rtc_rx6110;
		rtc1 = "/soc/bus@2000000/snvs@20cc000/snvs-rtc-lp";
	};

aliases を上記のように変更しましたが/dev/からrtc0が消え、rtc1だけとなりました。

以上、よろしくお願い致します。

ファイル ファイルの説明
aliases rtc0 指定あり.zip rtc1 = "/soc/bus@2000000/snvs@20cc000/snvs-rtc-lp"; を追加したとき /dev/rtc1 のみ
aliases rtc0 指定なし.zip MX6UL_PAD_LCD_DATA21__GPIO3_IO26 0x00008// CON9_16 としてみたがCSピンはACTIVE_HIGHとならない

at_dominique.m…

2024年10月17日 13時39分

マルティネです。

> > でも、まずは i2c だけを確認してみてください。
>
> 添付した.dtboを使用することでI2CでのRX8900の動作確認は出来ております。
> rtc0として時刻の設定や読込が行えました。

了解しました。
それでしたら i2c に問題なさそうですね。

起動できない理由は分かりませんが、quiet 無しでの起動で何か分かるかもしれません。

> > cs-gpios は普通の gpio の API を使っていますので、有効になっているはずです。
> > 一応確認しますが、GPIO_ACTIVE_HIGH はデフォルトなので、「GPIO_ACTIVE_LOWのまま」というのは明確に「GPIO_ACTIVE_LOW」を書いていたバージョンに比較していますね?(zipファイルでは設定されています)
> その通りです。
> at-dtwebでECSPI1を配置したarmadillo-640-at-dtweb.dtsを参考にしたため「GPIO_ACTIVE_LOW」がデフォルトだと思っていました。

(問題ないと思いますが)デフォルトと言うのは「cs-gpios = <&gpio3 26>」と「cs-gpios = <&gpio3 26 GPIO_ACTIVE_HIGH>」は同じ意味でした。at-dtweb で設定する値の話ではなかったです。

> 			MX6UL_PAD_LCD_DATA21__GPIO3_IO26	0x1b0b0 // CON9_16

> hysteresis / pull up とはこの箇所でしょうか?

他の spi の pin もそうですが、pinctrl で設定する値によって pin の動作は変わります。

詳細は imx6ull の reference manual を確認しないといけないですが私のメモ(armadillo-iotg-a6e.dtsに書いた情報)では
- 0x10000 = bit 16 = hysteresis enable
- 0xb000 = bit 15, 13, 12 = pull up 100k ohm, pull enable
- 0xc0 = bit 7, 6 = drive speed (0x80 で speed medium (100MHz)、0 で low (50MHz))
- 0x38 = bit 5, 4, 3 = drive strength (0x30 で R0/6、0x8 で R0)

armadillo ではありませんが arch/arm/boot/dts/imx6ull-colibri.dtsi を参考にすると ECSP1 の設定はかなり違いますので気になりました。

> aliases を上記のように変更しましたが/dev/からrtc0が消え、rtc1だけとなりました。

&{/} { ... ecspi {} }

&ecspi1 {}<code> は違います。
<code>&{/}

に aliases だけを書いて、ecpsi1 をそのまま alias で設定してください。

マルティネ様

佐藤です。

> 起動できない理由は分かりませんが、quiet 無しでの起動で何か分かるかもしれません。
これはこちらの基板のRTC_INTピンのプルアップ抵抗がなく、
RTC_INTがLOWに落ちていたため正常に起動できないようでした。
プルアップ抵抗を追加し、HIGHとなれば正常に起動できました。

> 他の spi の pin もそうですが、pinctrl で設定する値によって pin の動作は変わります。
>
> 詳細は imx6ull の reference manual を確認しないといけないですが私のメモ(armadillo-iotg-a6e.dtsに書いた情報)では
> - 0x10000 = bit 16 = hysteresis enable
> - 0xb000 = bit 15, 13, 12 = pull up 100k ohm, pull enable
> - 0xc0 = bit 7, 6 = drive speed (0x80 で speed medium (100MHz)、0 で low (50MHz))
> - 0x38 = bit 5, 4, 3 = drive strength (0x30 で R0/6、0x8 で R0)
>
> armadillo ではありませんが arch/arm/boot/dts/imx6ull-colibri.dtsi を参考にすると ECSP1 の設定はかなり違いますので気になりました。

gpios = <
	&gpio3 24 GPIO_ACTIVE_HIGH	/* SDA */
	&gpio3 23 GPIO_ACTIVE_HIGH	/* SCL */
>;

ここはI2Cのgpiosが上記でiomuxcのfsl,pinsが下記となっていたため参考にしました。

&iomuxc {
	pinctrl_i2c_gpio1: i2cgpio1grp {
		fsl,pins = <
			MX6UL_PAD_LCD_DATA18__GPIO3_IO23  0x00008
			MX6UL_PAD_LCD_DATA19__GPIO3_IO24  0x00008
			>;
	};

> > aliases を上記のように変更しましたが/dev/からrtc0が消え、rtc1だけとなりました。
>
> &{/} { ... ecspi {} }

&ecspi1 {}<code> は違います。
> <code>&{/}

に aliases だけを書いて、ecpsi1 をそのまま alias で設定してください。
すみません。
この部分、化けているのと記述がわからないので私が先ほど添付した
aliases rtc0 指定あり.zipのdtsファイルを修正して添付ファイルでいただけないでしょうか?

以上、よろしくお願い致します。

at_dominique.m…

2024年10月17日 14時20分

マルティネです。

> > &{/} { ... ecspi {} }&ecspi1 {} は違います。
> > &{/} に aliases だけを書いて、ecpsi1 をそのまま alias で設定してください。
> すみません。
> この部分、化けているのと記述がわからないので私が先ほど添付した
> aliases rtc0 指定あり.zipのdtsファイルを修正して添付ファイルでいただけないでしょうか?

&{/} {
        aliases {
                rtc0 = &rtc_rx6110;
                rtc1 = "/soc/bus@2000000/snvs@20cc000/snvs-rtc-lp";
        };
        ecspi1 {
                pinctrl-names = "default";
...
       };
};

&{/} {
        aliases {
                rtc0 = &rtc_rx6110;
                rtc1 = "/soc/bus@2000000/snvs@20cc000/snvs-rtc-lp";
        };
};
&ecspi1 {
        pinctrl-names = "default";
....
};

として書いてください。

&ecspi1 {} で指定すると /soc/bus@2000000/spba-bus@2000000/spi@2008000 のノードを変更しますが &{/} { ecspi1 {} } では新しい /ecspi1 のノードを作って正常になりません。

マルティネ様

佐藤です。

&{/} {
        aliases {
                rtc0 = &rtc_rx6110;
                rtc1 = "/soc/bus@2000000/snvs@20cc000/snvs-rtc-lp";
        };
        ecspi1 {
                pinctrl-names = "default";
...
       };
};

> を

&{/} {
        aliases {
                rtc0 = &rtc_rx6110;
                rtc1 = "/soc/bus@2000000/snvs@20cc000/snvs-rtc-lp";
        };
};
&ecspi1 {
        pinctrl-names = "default";
....
};

> として書いてください。
>
> &ecspi1 {} で指定すると /soc/bus@2000000/spba-bus@2000000/spi@2008000 のノードを変更しますが &{/} { ecspi1 {} } では新しい /ecspi1 のノードを作って正常になりません。
ありがとうございます。
そういうことなのですね。

I2CのRTCのときにそういう書き方をして正常に動作していたので
SPIでもそう書かなければならないと思い込んでいました。

こちらの修正をすることで/dev/にrtc0とrtc1が表示されるようになりました。

armadillo:~# ls /dev/rtc
rtc   rtc0  rtc1

また/dev/rtc0に対してhwclockを行うとSPIのバスが振れ、通信が行われております。

あとはCSが GPIO_ACTIVE_HIGHとなれば正常に動作すると思うのですがどこか修正する箇所は思い当たりますか?

以上、よろしくお願い致します。

ファイル ファイルの説明
cs_active_high.png GPIO_ACTIVE_HIGHを設定したがそうなっていない波形

佐藤です。

続けてすみません。

●SPIデバイスの活用
https://manual.atmark-techno.com/armadillo-guide-std/armadillo-guide-st…

上記リンク先でArmadillo-640でMCP3204をSPIで動かす方法について書いてあります。
しかもcs-gpios = <&gpio3 26 GPIO_ACTIVE_HIGH>;で。

しかし、図6.4 SPI接続A/Dコンバーター回路図とMCP3204のデータを確認してみても/CSとなっているため
GPIO_ACTIVE_LOWで動作するのではないでしょうか?

&iomuxc {
        pinctrl_ecspi1: ecspi1grp {
                fsl,pins = <
                        MX6UL_PAD_LCD_DATA20__ECSPI1_SCLK       0x1b0b0 // CON9_15
                        MX6UL_PAD_LCD_DATA21__GPIO3_IO26        0x1b0b0 // CON9_16
                        MX6UL_PAD_LCD_DATA22__ECSPI1_MOSI       0x1b0b0 // CON9_17
                        MX6UL_PAD_LCD_DATA23__ECSPI1_MISO       0x1b0b0 // CON9_18
                >;
        };
};
 
&ecspi1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_ecspi1>;
        cs-gpios = <&gpio3 26 GPIO_ACTIVE_HIGH>;
        status = "okay";
 
        mcp3204@0 {
                #address-cells = <1>;
                #size-cells = <0>;
                compatible = "mcp3204";
                spi-max-frequency = <1000000>;
                reg = <0>;
        };
};

そうだとすると上記のソースも今、私が陥っているようにGPIO_ACTIVE_HIGHとして動作していないのでしょうか?

以上、よろしくお願い致します。