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として設定