This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你好,
我想在DM385配置兩個新的GPIO腳位控制.一個是 GPIO3[15]當在output輸出,GPIO3[16]當作irq的接受輸入,請問我該怎麼在kernel裡作配置呢??,謝謝!!
Regards,
你好;
配置 gpio 工作模式,可以参考数据手册中的,3.2 Pin Assignments 小节
可以到 ipnc_psp_arago/u-boot/board/ti/dm385_ipnc/mux.h 中进行配置
以GPIO3[15]及GPIO3[16],是否在檔mux.h裡改寫如下呢??
/* -220 */ BIT(0), BIT(0), BIT(0), BIT(0),
/* -224 */ BIT(0), BIT(0), BIT(7), BIT(7),
/* -228 */ BIT(0), BIT(0), BIT(0), BIT(6),
在 程序 中也会修改 pin mux ;
你查一下 hdvpss 中的 ti_tools/hdvpss_01_00_01_37/packages/ti/psp/platforms/ti8107/src/vps_platformTI8107.c
#ifdef CONFIG_PIN_MUX static Int32 Vps_platformTI8107SetPinMux(void) { /* Vout 0 configuration DVO2 Function 1*/ /* TODO There are two pins for the fid. Need to see whichone is used */ REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0AB8) = 0x1; /* vout0_fid_mux1 */ REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0ABC) = 0x1; /* vout0_clk */ ... ... REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0B0C) = 0x1; /* vout0_r_cr[2] */ REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0B10) = 0x1; /* vout0_r_cr[3] */ REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0B14) = 0x1; /* vout0_r_cr[4] */ REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0B18) = 0x1; /* vout0_r_cr[5] */ REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0B1C) = 0x1; /* vout0_r_cr[6] */ REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0B20) = 0x1; /* vout0_r_cr[7] */ REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0B24) = 0x1; /* vout0_r_cr[8] */ REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0B28) = 0x1; /* vout0_r_cr[9] */
REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0B18) = 0x1; /* vout0_r_cr[5] */
REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0B1C) = 0x1; /* vout0_r_cr[6] */
应当是下面2行配置的:
REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0B78) = 0x50004; /* vin1a_d[16] */
REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0B7C) = 0x50004; /* vin1a_d[17] */
1. 請問,我對照過這幾行在檔案下都存在,我是不是不需要再作修改呢??
2.我是依照底下的建議去增加一些GPIO的function去使用.不知道是否還要再處理哪些地方呢?
https://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/t/91562.aspx?pi239031348=1
uboot 里面按你上面的配置修改就可以;
内核中不需要再去配置了;
在hdvpss中屏蔽下面两行;
REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0B78) = 0x50004; /* vin1a_d[16] */
REG32(CSL_TI8107_CTRL_MODULE_BASE + 0x0B7C) = 0x50004; /* vin1a_d[17] */
請問如果要將GPIO設定為output,需要哪些function?一樣會產生/sys/class/gpioXX 目錄嗎?
http://processors.wiki.ti.com/index.php/TI81XX_PSP_GPIO_Driver_User_Guide
IRQ handling及kernel Level兩區塊都要設定嗎 ?
io 输入输出,值配置,你可以参考
http://processors.wiki.ti.com/index.php/TI81XX_PSP_GPIO_Driver_User_Guide 就可以了
你好,
在mux.h修改後,我在board-dm385ipnc.c裡定義了這兩個腳位的輸入和輸出
gpio_request(111, "GPIO_output");
gpio_direction_output(111, 0x0);
gpio_export(111, 1);
gpio_request(112, "GPIO_input");
gpio_direction_input(112);
gpio_export(112, 1);
順利在/sys/class/gpio/裡可以看到兩個目錄檔案
輸入的部分我應該還欠缺這些的控制吧 ????
irq_num = gpio_to_irq(112)
request_irq(irq_num, handler, 0, "gpio_test", NULL)
set_irq_type(irq_num, IRQ_TYPE_EDGE_RISING)
free_irq(irq_num, NULL); gpio_free(112)
你好,
對於GPIO控制部分, IRQ 輸入部分系統已經可以辨認到了,所以輸入沒有問題.
但輸出部份一直有問題,無法有效輸出,不知道是否哪裡遺漏了, 請幫忙確認,謝謝!!
GPIO2[30]為輸出腳,以下是我的設定
/* -204 */ BIT(0), BIT(0), BIT(0), BIT(2),
/* -208 */ BIT(2), BIT(7), BIT(2), BIT(2),
在board-dm385ipnc.c裡
gpioindex=gpio_is_valid(94);
gpioindex=gpio_request(94, "gpio_output");
gpioindex=gpio_direction_output(94, 1);
gpio_set_value(94, 1);
msleep(5000);
gpio_set_value(94, 0);
msleep(5000);