GPIOの出力電流の設定は、Armadillo-400シリーズハードウェアマニュアル
6.2.1入出力インタフェースの電気的仕様-「Armadillo-460」
http://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_hardware_manual_ja-1.10.0/ch06.html#sec-6-2-1 より、
i.MX257のSoftware Pad Control Register(SW_PAD_CTL)とDrive Voltage Select Group Control Register(SW_PAD_CTL_GRP_DVS)で、出力電流(Std, High, Max)、スルーレート(Slow, Fast)、プルアップ/プルダウンを変更することができます。
と記載されています。
実際にCON9の2ピンとCON9の14ピンの電流をmaxに設定変更してみました。
注意点としては、上記のとおり、SW_PAD_CTLで設定できるものと、 SW_PAD_CTL_GRPで設定できるものがありますので、電流設定のパラメータ(DSE)が あるレジスタを選択する必要がある点です。
- CON9の2ピンは、SW_PAD_CTLで設定。
- CON9の14ピンは、SW_PAD_CTL_GRPで設定。
どちらのレジスタで設定できるかは、i.mx25のデータシート http://cache.freescale.com/files/dsp/doc/ref_manual/IMX25RM.pdf で確認する必要があります。
マルチプレクス端子の表 「Table 4-18. i.MX25 Detailed Pin Muxing」 より、設定したいGPIOに該当するレジスタを Appendix A IOMUX Registers から探します。
IOMUXC_SW_PAD_CTL_PAD_* または、IOMUXC_SW_PAD_CTL_GRP_* にDSEの設定ビットが存在するレジスタで設定します。
<設定方法>
出力電流は、 atmark-dist/linux-2.6.x/arch/arm/mach-mx25/armadillo400_gpio.c (atmark-distは、atmark-dist-[version]をリンクしたもの, linux-2.6.xは、linux-2.6.26-[version]をリンクしたもの)ファイルで設定できます。
出力電流は、
- PAD_CTL_DSE_STANDARD
- PAD_CTL_DSE_HIGH
- PAD_CTL_DSE_MAX
で設定します。
CON9の2ピンの出力電流を最大にする場合、
static struct pad_desc armadillo400_ext_gpio_pads_revc[] = {
の
MX25_PAD_RTCK__GPIO_3_14(PAD_CTL_PKE | PAD_CTL_PUE | PAD_CTL_PUS_100K_UP),
を
MX25_PAD_RTCK__GPIO_3_14(PAD_CTL_PKE | PAD_CTL_PUE |
PAD_CTL_PUS_100K_UP | PAD_CTL_DSE_MAX),
にしてください。
CON9の14ピンの出力電流を最大にする場合、
static struct pad_desc armadillo400_ext_gpio_pads_revc[] = {
の末尾に
MX25_PAD_CTL_GRP_DSE_CSI(PAD_CTL_DSE_MAX),
を追加してください。
armadillo400_gpio.cを変更後、ビルドしたカーネルイメージをArmadilloに書き込んでください。