Mux instructions

From IGEP - ISEE Wiki

Revision as of 14:01, 2 February 2012 by Pau (talk | contribs)

Jump to: navigation, search

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):

  • 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.

WIFI-BT Schematic.png

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.

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

TPS-PCM-VSP.png

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 JTAG

Not all JTAG pins have GPIO, more information here.

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 JC30

Not all JC30 pins have GPIO, more information here.

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 JA42

Not all JA42 pins have GPIO, more information here. Some pads are shared with TFP410

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 JA41

Not all JA41 pins have GPIO, more information here. Some pads are shared with TFP410 and TXS0102DCUR

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