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.

GPMC_A11 always high on AM335x

I am using Phytec's phyCORE-AM335x module, and ran into a strange problem:
I configure CS5 as 8-bit non-multiplex, I configured the pinmux in board-cpuxx01.c under arch/arm/mach-omap2 directory:
static struct pinmux_config gpmc_pin_mux[] = {
{"gpmc_ad0.gpmc_ad0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad1.gpmc_ad1", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad2.gpmc_ad2", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad3.gpmc_ad3", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad4.gpmc_ad4", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad5.gpmc_ad5", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad6.gpmc_ad6", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad7.gpmc_ad7", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad8.gpmc_ad8", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad9.gpmc_ad9", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad10.gpmc_ad10", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad11.gpmc_ad11", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad12.gpmc_ad12", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad13.gpmc_ad13", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad14.gpmc_ad14", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad15.gpmc_ad15", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"lcd_data0.gpmc_a0", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"lcd_data1.gpmc_a1", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"lcd_data2.gpmc_a2", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"lcd_data3.gpmc_a3", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"lcd_data4.gpmc_a4", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"lcd_data5.gpmc_a5",    OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"lcd_data6.gpmc_a6",    OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"lcd_data7.gpmc_a7",    OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"lcd_vsync.gpmc_a8",    OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"lcd_hsync.gpmc_a9",    OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"lcd_pclk.gpmc_a10",    OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"lcd_ac_bias_en.gpmc_a11", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA},
{"gpmc_csn1.gpmc_csn1",   OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
{"gpmc_csn2.gpmc_csn2",   OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
{"gpmc_csn3.gpmc_csn3",   OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
{"gpmc_wpn.gpmc_csn5",   OMAP_MUX_MODE2 | AM33XX_PULL_DISA},
{"gpmc_ben0_cle.gpmc_ben0_cle", OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
{"gpmc_advn_ale.gpmc_advn_ale", OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
{"gpmc_wen.gpmc_wen",      OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
{"gpmc_oen_ren.gpmc_oen_ren", OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
{"gpmc_wait0.gpmc_wait0",  OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{NULL, 0},
};
I also corrected mux33xx.c entries (there were reversed):
_AM33XX_MUXENTRY(GPMC_AD8, 0,
"gpmc_ad8", "lcd_data23", "mmc1_dat0", "mmc2_dat4", // kht corrected
NULL, NULL, NULL, "gpio0_22"),
_AM33XX_MUXENTRY(GPMC_AD9, 0,
"gpmc_ad9", "lcd_data22", "mmc1_dat1", "mmc2_dat5", // kht corrected
"ehrpwm2B", NULL, NULL, "gpio0_23"),
_AM33XX_MUXENTRY(GPMC_AD10, 0,
"gpmc_ad10", "lcd_data21", "mmc1_dat2", "mmc2_dat6", // kht corrected
NULL, NULL, NULL, "gpio0_26"),
_AM33XX_MUXENTRY(GPMC_AD11, 0,
"gpmc_ad11", "lcd_data20", "mmc1_dat3", "mmc2_dat7", // kht corrected
NULL, NULL, NULL, "gpio0_27"),
_AM33XX_MUXENTRY(GPMC_AD12, 0,
"gpmc_ad12", "lcd_data19", "mmc1_dat4", "mmc2_dat0", // kht corrected
NULL, NULL, NULL, "gpio1_12"),
_AM33XX_MUXENTRY(GPMC_AD13, 0,
"gpmc_ad13", "lcd_data18", "mmc1_dat5", "mmc2_dat1", // kht corrected
NULL, NULL, NULL, "gpio1_13"),
_AM33XX_MUXENTRY(GPMC_AD14, 0,
"gpmc_ad14", "lcd_data17", "mmc1_dat6", "mmc2_dat2", // kht corrected
NULL, NULL, NULL, "gpio1_14"),
_AM33XX_MUXENTRY(GPMC_AD15, 0,
"gpmc_ad15", "lcd_data16", "mmc1_dat7", "mmc2_dat3", // kht corrected
NULL, NULL, NULL, "gpio1_15"),
.. and the corresponding register settings:
static const u32 gpmc_exp[7] = {
0x00000003, // 8-bit, Non-Mux CPU6501
0x00090901,
0x00090901,
0x08030803,
0x00091F1F,
0x09030080,
0x00000f0C // MASKADDRESS = 16MB, BASEADDRESS = 0x0C00000000
};
When I downloaded and ran it, however, GPMC_A11 is always high.
Can anyone shed some lights on this?
  • Hi,

    Please check if the pinmux for GPMC_A11 that you need does not get overwritten later in the code.

  • I have checked that and everything else seem to be fine. Address A0 to A10 are working fine, except A11, which is always high.

    I also tried reconfiguring this A11 port to be GPIO and it toggles well.

    Any other suggestions?
  • Have you read the actual value of the pinmux register? Address should be 0x44E1_08EC. You can use devmem2 command to read it.

  • I have only devmem. It returns 0x00000009, which means mode 1 is selected.
  • What kind of memory are you trying to connect?Steve K.
  • There are 2 different pins where gpmc_a11 can be used.  The mux register you're focused on corresponds to R6.  It's also pinned out to V17.  Which pin is it that you're looking at?

  • It is designed as generally low-speed (relatively) parallel bus, currently used for UART, general I/O, and SRAM access.

  • I used ball R6.

    Ball V17 is configured as RGMII2_RD0 (mode 2) and is working.
  • After many attempts to solve this issue without success, I am inclined to believe there is a bug in the chip, unless someone can convince me it isn't.

  • Which chip select is this for?  Can you use devmem2 to print out all the corresponding GPMC_CONFIGx registers?  Please include the complete printouts so I can see the addresses you're reading.

    I suspect that somehow the GPMC may have had its configuration over-written and that you're not in the 8-bit non-multiplexed mode as you expect.

    Also, what address are you accessing to read from the GPMC?  If for example your math is incorrect with respect to how you're performing the accesses then the GPMC might be using the configuration from another chip select space.  Can you confirm that the expected CSn signal is asserted when performing the access?

  • Hello Brad,

    Please see the pin configuration table as requested. The GPMC is used in conjunction with CS3 and CS5. I have cross-checked that all pins were used as intended. As you can see, I am not using the default A11 pin as A11 signal, but the alternate function of the LCD_AC_BIAS_EN pin.

    I used GPMC from 0x000 to 0x0fff, i.e. the entire range.

    I am able to communicate with the UART chips without issues after masking off the A11 pin, the CS3 and CS5 are working perfectly. In fact A0 to A10 are working perfectly, except A11, which is always HIGH.

    Pin Address Control Mode MUX mode
    Hex Hex Number Name
    gpmc_ad0 44E10800 00000030 0 gpmc_ad0
    gpmc_ad1 44E10804 00000030 0 gpmc_ad1
    gpmc_ad2 44E10808 00000030 0 gpmc_ad2
    gpmc_ad3 44E1080C 00000030 0 gpmc_ad3
    gpmc_ad4 44E10810 00000030 0 gpmc_ad4
    gpmc_ad5 44E10814 00000030 0 gpmc_ad5
    gpmc_ad6 44E10818 00000030 0 gpmc_ad6
    gpmc_ad7 44E1081C 00000030 0 gpmc_ad7
    gpmc_ad8 44E10820 00000030 0 gpmc_ad8
    gpmc_ad9 44E10824 00000030 0 gpmc_ad7
    gpmc_ad10 44E10828 00000030 0 gpmc_ad10
    gpmc_ad11 44E1082C 00000040 0 gpmc_ad11
    gpmc_ad12 44E10830 00000040 0 gpmc_ad12
    gpmc_ad13 44E10834 00000040 0 gpmc_ad13
    gpmc_ad14 44E10838 00000040 0 gpmc_ad14
    gpmc_ad15 44E1083C 00000040 0 gpmc_ad15
    gpmc_a0 44E10840 00000002 2 rgmii2_tctl
    gpmc_a1 44E10844 00000022 2 rgmii2_rctl
    gpmc_a2 44E10848 00000002 2 rgmii2_td3
    gpmc_a3 44E1084C 00000002 2 rgmii2_td2
    gpmc_a4 44E10850 00000002 2 rgmii2_td1
    gpmc_a5 44E10854 00000002 2 rgmii2_td0
    gpmc_a6 44E10858 00000002 2 rgmii2_tclk
    gpmc_a7 44E1085C 00000022 2 rgmii2_rclk
    gpmc_a8 44E10860 00000022 2 rgmii2_rd3
    gpmc_a9 44E10864 00000022 2 rgmii2_rd2
    gpmc_a10 44E10868 00000022 2 rgmii2_rd1
    gpmc_a11 44E1086C 00000022 2 rgmii2_rd0
    gpmc_wait0 44E10870 00000030 0 gpmc_wait0
    gpmc_wpn 44E10874 0000000A 2 gpmc_csn5
    gpmc_ben1 44E10878 00000008 0 gpmc_ben1_mux0
    gpmc_csn0 44E1087C 00000008 0 gpmc_csn0
    gpmc_csn1 44E10880 00000008 0 gpmc_csn1
    gpmc_csn2 44E10884 00000008 0 gpmc_csn2
    gpmc_csn3 44E10888 00000008 0 gpmc_csn3
    gpmc_clk 44E1088C 00000017 7 gpio2[1]
    gpmc_advn_ale 44E10890 00000008 0 gpmc_advn_ale
    gpmc_oen_ren 44E10894 00000008 0 gpmc_oen_ren
    gpmc_wen 44E10898 00000008 0 gpmc_wen
    gpmc_ben0_cle 44E1089C 00000008 0 gpmc_ben0_cle
    lcd_data0 44E108A0 00000009 1 gpmc_a0_mux1
    lcd_data1 44E108A4 00000009 1 gpmc_a1_mux1
    lcd_data2 44E108A8 00000009 1 gpmc_a2_mux1
    lcd_data3 44E108AC 00000009 1 gpmc_a3_mux1
    lcd_data4 44E108B0 00000009 1 gpmc_a4_mux1
    lcd_data5 44E108B4 00000009 1 gpmc_a5_mux1
    lcd_data6 44E108B8 00000009 1 gpmc_a6_mux1
    lcd_data7 44E108BC 00000009 1 gpmc_a7_mux1
    lcd_data8 44E108C0 00000037 7 gpio2[14]
    lcd_data9 44E108C4 00000007 7 gpio2[15]
    lcd_data10 44E108C8 00000017 7 gpio2[16]
    lcd_data11 44E108CC 0000002F 7 gpio2[17]
    lcd_data12 44E108D0 00000007 7 gpio0[8]
    lcd_data13 44E108D4 00000007 7 gpio0[9]
    lcd_data14 44E108D8 00000007 7 gpio0[10]
    lcd_data15 44E108DC 00000007 7 gpio0[11]
    lcd_vsync 44E108E0 00000009 1 gpmc_a8_mux1
    lcd_hsync 44E108E4 00000009 1 gpmc_a9_mux1
    lcd_pclk 44E108E8 00000009 1 gpmc_a10_mux1
    lcd_ac_bias_en 44E108EC 00000009 1 gpmc_a11_mux1
    mmc0_dat3 44E108F0 00000030 0 mmc0_dat3
    mmc0_dat2 44E108F4 00000030 0 mmc0_dat2
    mmc0_dat1 44E108F8 00000030 0 mmc0_dat1
    mmc0_dat0 44E108FC 00000030 0 mmc0_dat0
    mmc0_clk 44E10900 00000030 0 mmc0_clk
    mmc0_cmd 44E10904 00000030 0 mmc0_cmd
    mii1_col 44E10908 00000017 7 gpio3[0]
    mii1_crs 44E1090C 00000021 1 rmii1_crs_dv
    mii1_rx_er 44E10910 00000021 1 rmii1_rxer
    mii1_tx_en 44E10914 00000001 1 rmii1_txen
    mii1_rx_dv 44E10918 00000037 7 gpio3[4]
    mii1_txd3 44E1091C 00000007 7 gpio0[16]
    mii1_txd2 44E10920 00000007 7 gpio0[17]
    mii1_txd1 44E10924 00000001 1 rmii1_txd1
    mii1_txd0 44E10928 00000001 1 rmii1_txd0
    mii1_tx_clk 44E1092C 00000031 1 uart2_rxd_mux0
    mii1_rx_clk 44E10930 00000001 1 uart2_txd_mux0
    mii1_rxd3 44E10934 00000031 1 uart3_rxd
    mii1_rxd2 44E10938 00000001 1 uart3_txd
    mii1_rxd1 44E1093C 00000021 1 rmii1_rxd1
    mii1_rxd0 44E10940 00000021 1 rmii1_rxd0
    mii1_ref_clk 44E10944 00000020 0 rmii1_refclk
    mdio 44E10948 00000030 0 mdio_data
    mdc 44E1094C 00000010 0 mdio_clk
    spi0_sclk 44E10950 00000020 0 spi0_sclk
    spi0_d0 44E10954 00000030 0 spi0_d0
    spi0_d1 44E10958 00000020 0 spi0_d1
    spi0_cs0 44E1095C 00000030 0 spi0_cs0
    spi0_cs1 44E10960 00000037 7 gpio0[6]
    ecap0_in_pwm0_out 44E10964 00000007 7 gpio0[7]
    uart0_ctsn 44E10968 00000007 7 gpio1[8]
    uart0_rtsn 44E1096C 00000037 7 gpio1[9]
    uart0_rxd 44E10970 00000030 0 uart0_rxd
    uart0_txd 44E10974 00000000 0 uart0_txd
    uart1_ctsn 44E10978 00000007 7 gpio0[12]
    uart1_rtsn 44E1097C 00000007 7 gpio0[13]
    uart1_rxd 44E10980 00000030 0 uart1_rxd
    uart1_txd 44E10984 00000000 0 uart1_txd
    i2c0_sda 44E10988 00000060 0 I2C0_SDA
    i2c0_scl 44E1098C 00000060 0 I2C0_SCL
    mcasp0_aclkx 44E10990 00000037 7 gpio3[14]
    mcasp0_fsx 44E10994 00000007 7 gpio3[15]
    mcasp0_axr0 44E10998 00000007 7 gpio3[16]
    mcasp0_ahclkr 44E1099C 00000037 7 gpio3[17]
    mcasp0_aclkr 44E109A0 00000037 7 gpio3[18]
    mcasp0_fsr 44E109A4 00000017 7 gpio3[19]
    mcasp0_axr1 44E109A8 00000007 7 gpio3[20]
    mcasp0_ahclkx 44E109AC 00000007 7 gpio3[21]
    xdma_event_intr0 44E109B0 00000017 7 gpio0[19]
    xdma_event_intr1 44E109B4 00000037 7 gpio0[20]
    warmrstn 44E109B8 00000030 0 RTC_porz
    nnmi 44E109C0 00000030 0 nNMI
    tms 44E109D0 00000030 0 TMS
    tdi 44E109D4 00000030 0 TDI
    tdo 44E109D8 00000030 0 TDO
    tck 44E109DC 00000030 0 TCK
    trstn 44E109E0 00000020 0 nTRST
    emu0 44E109E4 00000017 7 gpio3[7]
    emu1 44E109E8 00000017 7 gpio3[8]
    rtc_pwronrstn 44E109F8 00000030 0 0
    pmic_power_en 44E109FC 00000028 0 PMIC_POWER_EN
    ext_wakeup 44E10A00 00000028 0 EXT_WAKEUP
    rtc_kaldo_enn 44E10A04 00000020 0 ENZ_KALDO_1P8V
    usb0_drvvbus 44E10A1C 00000000 0 USB0_DRVVBUS
    usb1_drvvbus 44E10A34 00000000 0 USB1_DRVVBUS
  • That's not the data I was looking for.  I want to view your GPMC configuration:

    Please use devmem2 to interrogate registers like the ones above corresponding to the chip selects of interest.

    K H Tang said:
    gpmc_ad044E10800000000300gpmc_ad0gpmc_ad144E10804000000300gpmc_ad1gpmc_ad244E10808000000300gpmc_ad2gpmc_ad344E1080C000000300gpmc_ad3gpmc_ad444E10810000000300gpmc_ad4gpmc_ad544E10814000000300gpmc_ad5gpmc_ad644E10818000000300gpmc_ad6gpmc_ad744E1081C000000300gpmc_ad7gpmc_ad844E10820000000300gpmc_ad8gpmc_ad944E10824000000300gpmc_ad7gpmc_ad1044E10828000000300gpmc_ad10gpmc_ad1144E1082C000000400gpmc_ad11gpmc_ad1244E10830000000400gpmc_ad12gpmc_ad1344E10834000000400gpmc_ad13gpmc_ad1444E10838000000400gpmc_ad14gpmc_ad1544E1083C000000400gpmc_ad15

    Your chart shows that you're using gpmc_ad0 - gpmc_ad15.  Your original post mentions you're trying to use 8-bit non-muxed mode, but your chart looks more like a 16-bit multiplexed mode.  In the 16-bit multiplexed mode GPMC_A11 is not used, so your observations match very well with that.  And that's why I'd like to see the GPMC register configuration.  I want to know whether you're in a muxed mode of operation or non-muxed.  Also, I want to know that the chip select is being asserted as expected so that we can be certain that the registers we examine are the ones governing the access.

  • Brad,

    I omitted some detailed info in the previous posts to avoid confusing.

    I actually have the following configurations:

    CS0 - NAND

    CS1 - AD Multiplexed 16-bit

    CS2 - AD Multiplexed 16-bit

    CS3 - Non-multiplexed 8-bit

    CS5 - Non-multiplexed 8-bit

    The GPMC configurations are shown below:

    Pin Address Control Mode
    Hex Hex
    GPMC_CONFIG1_0 50000060 00000800
    GPMC_CONFIG2_0 50000064 00030300
    GPMC_CONFIG3_0 50000068 00030300
    GPMC_CONFIG4_0 5000006C 02000311
    GPMC_CONFIG5_0 50000070 00030303
    GPMC_CONFIG6_0 50000074 03000540
    GPMC_CONFIG7_0 50000078 00000F48
    GPMC_CONFIG1_1 50000090 00001202
    GPMC_CONFIG2_1 50000094 00090901
    GPMC_CONFIG3_1 50000098 00090901
    GPMC_CONFIG4_1 5000009C 08030803
    GPMC_CONFIG5_1 500000A0 00090909
    GPMC_CONFIG6_1 500000A4 09030080
    GPMC_CONFIG7_1 500000A8 00000000
    GPMC_CONFIG1_2 500000C0 00001202
    GPMC_CONFIG2_2 500000C4 00090901
    GPMC_CONFIG3_2 500000C8 00090901
    GPMC_CONFIG4_2 500000CC 09010901
    GPMC_CONFIG5_2 500000D0 00090909
    GPMC_CONFIG6_2 500000D4 09030080
    GPMC_CONFIG7_2 500000D8 00000000
    GPMC_CONFIG1_3 500000F0 00401000
    GPMC_CONFIG2_3 500000F4 00101001
    GPMC_CONFIG3_3 500000F8 22060514
    GPMC_CONFIG4_3 500000FC 10057016
    GPMC_CONFIG5_3 50000100 010F1111
    GPMC_CONFIG6_3 50000104 8F070000
    GPMC_CONFIG7_3 50000108 00000F41
    GPMC_CONFIG1_4 50000120 00401000
    GPMC_CONFIG2_4 50000124 00101001
    GPMC_CONFIG3_4 50000128 22060514
    GPMC_CONFIG4_4 5000012C 10057016
    GPMC_CONFIG5_4 50000130 010F1111
    GPMC_CONFIG6_4 50000134 8F070000
    GPMC_CONFIG7_4 50000138 00000000
    GPMC_CONFIG1_5 50000150 00000003
    GPMC_CONFIG2_5 50000154 00090901
    GPMC_CONFIG3_5 50000158 00090901
    GPMC_CONFIG4_5 5000015C 08030803
    GPMC_CONFIG5_5 50000160 00091F1F
    GPMC_CONFIG6_5 50000164 09030080
    GPMC_CONFIG7_5 50000168 00000F02
    GPMC_CONFIG1_6 50000180 00401000
    GPMC_CONFIG2_6 50000184 00101001
    GPMC_CONFIG3_6 50000188 22060514
    GPMC_CONFIG4_6 5000018C 10057016
    GPMC_CONFIG5_6 50000190 010F1111
    GPMC_CONFIG6_6 50000194 8F070000
    GPMC_CONFIG7_6 50000198 00000000
  • Are these values being dumped with devmem2 at run-time, or are these the values that you are attempting to program with your code?  It is far preferable to see the run-time values with devmem2.  In particular for now the GPMC_CONFIG1 values for the chip selects of interest are the most important.

    K H Tang said:
    CS3 - Non-multiplexed 8-bit

    K H Tang said:
    GPMC_CONFIG1_3 500000F0 00401000

    Your register value above corresponds to a non-multiplexed 16-bit configuration.

    Do you have access to other pins like A12 and higher?  Are they operating as expected?

  • Brad,

    Yes, these values are obtained at runtime. I documented them for reference purposes.

    Oh sorry the CS3 was a mistake. I shall correct it.

    My current design uses up to address A11 only, but I may have chance to pull GPMC_A12 out for testing. I shall experiment it, finger cross.

  • I have configured ball U2 and U3 to be GPMC_A13 and GPMC_A14 respectively, and the result is the same, they all remain at high level.

    It looks like addresses higher than A11 are always high in my case for 8-bit non-muxed.

    Any idea?

  • Did you fix your CS3 configuration?

    What other signals do you see toggling?  Specifically I would like to know which CSn pin you see asserted while you are looking at these address pins.  What is the physical address you're accessing to trigger the access?

  • Yes, both CS3 and CS5 now look like this:

    GPMC_CONFIG1_3 500000F0 00000002
    GPMC_CONFIG2_3 500000F4 00090901
    GPMC_CONFIG3_3 500000F8 00090901
    GPMC_CONFIG4_3 500000FC 08030803
    GPMC_CONFIG5_3 50000100 00090909
    GPMC_CONFIG6_3 50000104 09030080
    GPMC_CONFIG7_3 50000108 00000F41
    GPMC_CONFIG1_5 50000150 00000002
    GPMC_CONFIG2_5 50000154 00090901
    GPMC_CONFIG3_5 50000158 00090901
    GPMC_CONFIG4_5 5000015C 08030803
    GPMC_CONFIG5_5 50000160 00090909
    GPMC_CONFIG6_5 50000164 09030080
    GPMC_CONFIG7_5 50000168 00000F42

    When I access CS3 and CS5 at mapbase of 0x1000000 and 0x2000000 respectively, everything seems to work as expected except that A12 (and now A13 as well) are always high. So I have to mask out these address pins (since they are not really being used now) in the PLD. With that I can talk to my 16T654 UART (Linux in-built driver 8250.c) chips perfectly. What I did was to add this device using platform_add_devices function.

  • Still no one has any ideas?

  • Is bit 1 of the GPMC_CONFIG (0x50000050) register set? If the LIMITEDADDRESS bit field of the GPMC_CONFIG register is enabled, A27-A11 are forced to 1.
  • I think this must be the.... BINGO!

    I will verify this and post the result.

  • Took me some time to update this status.. to busy with other things.

    Yes, I confirm this is the answer to my problem. It works now.

    Thanks Brad.

  • Glad we finally figured it out! Thanks for the update.