Difference between revisions of "Mux instructions"
From IGEP - ISEE Wiki
(→First way:) |
|||
Line 37: | Line 37: | ||
Logging with root user via SSH or Serial cable.<br> | Logging with root user via SSH or Serial cable.<br> | ||
+ | NOTE: Poky distribution does not have debug filesystem enabled. Mount it: | ||
+ | <pre>mount -t debugfs none /sys/kernel/debug</pre> | ||
Go to /sys/kernel/debug/omap_mux/<br> | Go to /sys/kernel/debug/omap_mux/<br> | ||
Line 62: | Line 64: | ||
0 | 0 | ||
root@localhost:/sys/class/gpio# | root@localhost:/sys/class/gpio# | ||
− | </pre> | + | </pre> |
+ | |||
===== Second way: ===== | ===== Second way: ===== | ||
Revision as of 09:44, 13 February 2012
Contents
[hide]Notes
Read this page before use this wiki.
Overview
This wiki explained more detailed how-to configure mux
Disable Peripherals
Some connectors share multiple peripherals like OMAP, WIFI/BT combo, etc. You should disable unused peripherals to avoid interferences. For example: if you want to control WIFI module via J990 disable OMAP or if you want use UART2 at j990 disable Bluetooth. See schematics or connectors summary for more information.
BT/WIFI Combo
Bluetooth and WIFI can be disabled separately with reset pins: RESET_N_W (for WIFI) in pad 47 and RST_N_B (for Bluetooth) in pad 16:
- RESET_N_W/RST_N_B=0: Enabled reset
- RESET_N_W/RST_N_B=1: Disabled reset
Use GPIO to control it. See FAQs to know which GPIO needs to be used.
![]() |
Click to enlarge image
Bluetooth
There are two ways to disable Bluetooth. More information about Bluetooth
First way:
This mode has a issue, when your system reboot or shutdown you will need to configure again. Using user space to configure mux and disable bluetooth.
Logging with root user via SSH or Serial cable.
NOTE: Poky distribution does not have debug filesystem enabled. Mount it:
mount -t debugfs none /sys/kernel/debug
Go to /sys/kernel/debug/omap_mux/
Set sdmmc2_dat5 to gpio137 (mode 4):
echo 0x004 > sdmmc2_dat5
Revise that:
root@localhost:/sys/kernel/debug/omap_mux# cat sdmmc2_dat5 name: sdmmc2_dat5.gpio_137 (0x48002166/0x136 = 0x0004), b ah3, t NA mode: OMAP_PIN_OUTPUT | OMAP_MUX_MODE4 signals: sdmmc2_dat5 | sdmmc2_dir_dat1 | cam_global_reset | sdmmc3_dat1 | gpio_137 | hsusb3_tll_stp | mm3_rxdp | safe_mode
Go to: /sys/class/gpio/
Check that gpio137 is in user space:
root@localhost:/sys/class/gpio# ls export gpio137 gpio138 gpio139 gpio170 gpio64 gpiochip0 gpiochip128 gpiochip160 gpiochip192 gpiochip32 gpiochip64 gpiochip96 unexport root@localhost:/sys/class/gpio#
If you don't have it, you should export gpio137:
echo 137 > /sys/class/gpio/export
Set gpio137 to low value to disable bluetooth:
echo 0 > /sys/class/gpio/gpio137/value
Revise that:
root@localhost:/sys/class/gpio# cat /sys/class/gpio/gpio137/value 0 root@localhost:/sys/class/gpio#
Second way:
Configure kernel sources. Configuration will be permanent. There are many ways to edit source code, this method is focused for igep0020 RC without igep0022 support.
Go to $(kernel path)/arch/arm/mach-omap2/board-igep0020.c and search next line:
else if (hwrev == IGEP2_BOARD_HWREV_C) igep00x0_wifi_bt_init(IGEP2_RC_GPIO_WIFI_NPD, IGEP2_RC_GPIO_WIFI_NRESET, IGEP2_RC_GPIO_BT_NRESET, !opt);
"igep00x0_wifi_bt_init" function initializes WIFI and Bluetooth peripherals. "opt" variable is used for disable Bluetooth in some cases: enabled (opt!=0) or disabled (opt==0). For example you can disable it permanently replacing "opt" by 1:
else if (hwrev == IGEP2_BOARD_HWREV_C) igep00x0_wifi_bt_init(IGEP2_RC_GPIO_WIFI_NPD, IGEP2_RC_GPIO_WIFI_NRESET, IGEP2_RC_GPIO_BT_NRESET, !1);
Compile kernel source code
Use this tutorial (Kernel) and this other (IGEPxloader) to install Linaro Headless with your custom kernel in SD card. You can compile the IGEPxloader, but is not necessary.
WIFI
There are two ways to disable WIFI. More information about WIFI
First way:
This mode has a issue, when your system reboot or shutdown you will need to configure again. Using user space to configure mux and disable WIFI. If you need bluetooth activate, configure it before disable WIFI. Follow this tutorial.
Logging with root user via SSH or Serial cable.
Go to /sys/kernel/debug/omap_mux/
Set sdmmc2_dat6 to gpio138 (mode 4):
echo 0x004 > sdmmc2_dat7
Revise that:
root@localhost:/sys/kernel/debug/omap_mux# cat sdmmc2_dat7 name: sdmmc2_dat7.gpio_139 (0x4800216a/0x13a = 0x0004), b ae3, t NA mode: OMAP_PIN_OUTPUT | OMAP_MUX_MODE4 signals: sdmmc2_dat7 | sdmmc2_clkin | NA | sdmmc3_dat3 | gpio_139 | hsusb3_tll_nxt | mm3_rxdm | safe_mode root@localhost:/sys/kernel/debug/omap_mux#
Go to: /sys/class/gpio/
Check that gpio139 is in user space:
root@localhost:/sys/class/gpio# ls export gpio137 gpio138 gpio139 gpio170 gpio64 gpiochip0 gpiochip128 gpiochip160 gpiochip192 gpiochip32 gpiochip64 gpiochip96 unexport root@localhost:/sys/class/gpio#
If you don't have it, you should export gpio139:
echo 139 > /sys/class/gpio/export
Set gpio139 to low value to disable bluetooth:
echo 0 > /sys/class/gpio/gpio139/value
Revise that:
root@localhost:/sys/class/gpio# cat /sys/class/gpio/gpio139/value 0 root@localhost:/sys/class/gpio#
Second way :
Configure kernel sources. Configuration will be permanent. There are many ways to edit source code, this method is focused for igep0020 RC without igep0022 support.
Go to $(kernel path)/arch/arm/mach-omap2/board-igep00x0.c and search next line:
if ((gpio_request(wifi_nreset, "WIFI NRESET") == 0) && (gpio_direction_output(wifi_nreset, 1) == 0)) { gpio_export(wifi_nreset, 0); gpio_set_value(wifi_nreset, 0); udelay(10); gpio_set_value(wifi_nreset, 1); } else
"igep00x0_wifi_bt_init" function initializes WIFI and Bluetooth peripherals, this code make a PWM to initialize WIFI. Edit lines to disable this initialization.
if ((gpio_request(wifi_nreset, "WIFI NRESET") == 0) && (gpio_direction_output(wifi_nreset, 0) == 0)) { gpio_export(wifi_nreset, 0); } else
Compile kernel source code
Use this tutorial (Kernel) and this other (IGEPxloader) to install Linaro Headless with your custom kernel in SD card. You can compile the IGEPxloader, but is not necessary.
TP65950 PCM VSP
This module is used to transfer audio via Bluetooth
![]() |
Click to enlarge image
Disable BT audio
Default kernel has disabled TWL4030 PCM voice interface output pins to high impedance, otherwise this module forces the level of mcbsp3_fsx and mcbsp3_clkx pins. To make sure, go to $(kernel path)/sound/soc/codecs/twl4030.c file already read:
0x04, /* REG_VOICE_IF (0xF) */
Enable BT audio
0x00, /* REG_VOICE_IF (0xF) */
Edit mux
UART1 in J990
Use ebuddies to configure UART1 in J990, go to igep.ini:
board.ei485= [yes, no] Format: <string> no: disable ei485, use UART1 as RS232, supported by igep0020 default: yes
More information about RS485 here and here
You can test new configuration using this tutorial
GPIO in J990
Reset WIFI, BT or TPS if you use some pad shared with this connector, more information here.
Configure GPIO, don't use these GPIO in IGEP WIFI/BT versions.
Use this manual to configure mux via user space
Edit $(kernel path)/arch/arm/mach-omap2/board-igep00x0.c or $(kernel path)/arch/arm/mach-omap2/board-igep0020.c to configure GPIO via Kernel source, example here.
GPIO in TP
Some GPIOs avaliable in TP:
Default peripheral (mode=0) |
GPIO (mode=4) |
TP |
gpmc_ncs1 | gpio_52 | TP303 |
gpmc_ncs2 | gpio_53 | TP304 |
gpmc_ncs3 | gpio_54 | TP305 |
gpmc_ncs4 | gpio_55 | TP306 |
gpmc_ncs6 | gpio_57 | TP307 |
gpmc_ncs7 | gpio_58 | TP318 |
gpmc_clk | gpio_59 | TP308 |
gpmc_nwp | gpio_62 | TP312 |
gpmc_wait1 | gpio_63 | TP313 |
gpmc_wait3 | gpio_65 | TP315 |
mmc1_dat6 | gpio_128 | TP902 |
etk_d11 | gpio_25 | TP405 |
NOTE: There are more GPIO, but they are only an input (and not an output) and others GPIO the usage is strongly restricted.
Use this manual to configure mux via user space.
Edit $(kernel path)/arch/arm/mach-omap2/board-igep00x0.c or $(kernel path)/arch/arm/mach-omap2/board-igep0020.c to configure GPIO via Kernel source, example here.
Under construction