Armadilloフォーラム

800EVAでGPIOの機能割り当ての設定箇所に関して

oobu_eiichi

2014年9月18日 19時05分

お世話になっております。
HIICSの大部です。

800EVAでGPIOの機能割り当ての設定を変えたい(例えばPORT72をMSIOF1_TSCKに変えたい)
のですが、ソース(setup-sh7740.c)を見たのですがどこで変えたらいいかよく分かりませんでした。

変えているソースファイル名と変更箇所をご教授下さい。

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


コメント

at_makoto.harada

2014年9月18日 20時56分

原田です。

Armadiilo-800 EVAでは、PORT72はA1_SDHI1_CDの専用ピンとして使用しているため、SPI
機能の実装はおこなっておりません。

Armadiillo-840ではSPIの機能を実装しているので、参考にしてみてください。

http://armadillo.atmark-techno.com/files/downloads/armadillo-840/source…


#linux-3.4-at/arch/arm/mach-shmobile/board-armadillo840.c

static struct gpio __maybe_unused msiof1_gpios[] = {
{ GPIO_FN_MSIOF1_TSCK_PORT72, 0, "TSCK" },
{ GPIO_FN_MSIOF1_TXD_PORT74, 0, "MISO" },
{ GPIO_FN_MSIOF1_RXD_PORT75, 0, "MOSI" },
};

static void a840_msiof_init(void)
{
if (!IS_ENABLED(CONFIG_ARMADILLO840_MSIOF1))
return;

if (gpio_request_array_simple(msiof1_gpios, ARRAY_SIZE(msiof1_gpios))) {
pr_err("Any MSIOF1 resources are already reserved.\n");
return;
}

platform_device_register(&sh_msiof1_device);

if (IS_ENABLED(CONFIG_ARMADILLO840_MSIOF1_DEVICE_SPIDEV_PORT73)) {
gpio_request(GPIO_PORT73, NULL); /* CS */
gpio_direction_output(GPIO_PORT73, 0);

spi_register_board_info(msiof1_board_info,
ARRAY_SIZE(msiof1_board_info));
}
}

oobu_eiichi

2014年9月19日 12時42分

HIICS 大部です。

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

追加で質問させて頂きます。

800EVAでPIN FUNCTIONを設定している箇所(ソースレベルでいいです)と
800EVAで使用されていないGPIOピンをご教授下さい。

at_makoto.harada

2014年9月22日 20時50分

> 800EVAでPIN FUNCTIONを設定している箇所(ソースレベルでいいです)

arch/arm/mach-shmobile/include/mach/sh7740.hヘッダより、
/*
* Pin Function Controller:
* GPIO_FN_xx - GPIO used to select pin function
* GPIO_PORTxx - GPIO mapped to real I/O pin on CPU
*/
上記のルールに従って、gpio_request()関数を呼ぶことでPIN FUNCTIONを設定できます。

PORT0を例にとると以下のようになります。

gpio_request(GPIO_FN_PORT0_LCDD22_0, NULL); // LCDD22_0に設定
gpio_request(GPIO_PORT0, NULL); // GPIO PORT0として設定