<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>i.MX ProcessorsのトピックRe: GPIO initialization about IMX8MQ on power</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/GPIO-initialization-about-IMX8MQ-on-power/m-p/1225252#M168854</link>
    <description>&lt;P&gt;yes,&lt;SPAN&gt;I initialize the GPIO in spl_board_init(), and I still can't pull the GPIO up or down when I power it up.&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Wed, 03 Feb 2021 06:40:55 GMT</pubDate>
    <dc:creator>Joe_C</dc:creator>
    <dc:date>2021-02-03T06:40:55Z</dc:date>
    <item>
      <title>GPIO initialization about IMX8MQ on power</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/GPIO-initialization-about-IMX8MQ-on-power/m-p/1225060#M168833</link>
      <description>&lt;P&gt;&lt;SPAN class="tgt"&gt;When the IMX8MQ SoC is powered on, the UBOOT initializes GPIO in the BOARD_EARLY_INIT_F function.&lt;/SPAN&gt;&lt;SPAN class="tgt"&gt;However, GPIO is not controlled at the moment of power on, what should I do to achieve such control effect?&lt;/SPAN&gt;&lt;SPAN class="tgt"&gt;thank you.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 03 Feb 2021 01:24:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/GPIO-initialization-about-IMX8MQ-on-power/m-p/1225060#M168833</guid>
      <dc:creator>Joe_C</dc:creator>
      <dc:date>2021-02-03T01:24:45Z</dc:date>
    </item>
    <item>
      <title>Re: GPIO initialization about IMX8MQ on power</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/GPIO-initialization-about-IMX8MQ-on-power/m-p/1225174#M168841</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="VIiyi"&gt;&lt;SPAN class="JLqJ4b ChMk0b" data-language-for-alternatives="en" data-language-to-translate-into="zh-CN" data-phrase-index="0"&gt;&lt;SPAN&gt;The API interface of dm-gpio is used in u-boot. There are already examples in imx8mq_evk.c:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;struct gpio_desc type_sel_desc;&lt;BR /&gt;static iomux_v3_cfg_t ss_mux_gpio[] = {&lt;BR /&gt;IMX8MQ_PAD_NAND_RE_B__GPIO3_IO15 | MUX_PAD_CTRL(NO_PAD_CTRL),&lt;BR /&gt;};&lt;/P&gt;
&lt;P&gt;void ss_mux_select(enum typec_cc_polarity pol)&lt;BR /&gt;{&lt;BR /&gt;if (pol == TYPEC_POLARITY_CC1)&lt;BR /&gt;dm_gpio_set_value(&amp;amp;type_sel_desc, 1);&lt;BR /&gt;else&lt;BR /&gt;dm_gpio_set_value(&amp;amp;type_sel_desc, 0);&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;static int setup_typec(void)&lt;BR /&gt;{&lt;BR /&gt;int ret;&lt;/P&gt;
&lt;P&gt;imx_iomux_v3_setup_multiple_pads(ss_mux_gpio, ARRAY_SIZE(ss_mux_gpio));&lt;/P&gt;
&lt;P&gt;ret = dm_gpio_lookup_name("GPIO3_15", &amp;amp;type_sel_desc);&lt;BR /&gt;if (ret) {&lt;BR /&gt;printf("%s lookup GPIO3_15 failed ret = %d\n", __func__, ret);&lt;BR /&gt;return -ENODEV;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;ret = dm_gpio_request(&amp;amp;type_sel_desc, "typec_sel");&lt;BR /&gt;if (ret) {&lt;BR /&gt;printf("%s request typec_sel failed ret = %d\n", __func__, ret);&lt;BR /&gt;return -ENODEV;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;dm_gpio_set_dir_flags(&amp;amp;type_sel_desc, GPIOD_IS_OUT);&lt;/P&gt;
&lt;P&gt;ret = tcpc_init(&amp;amp;port, port_config, &amp;amp;ss_mux_select);&lt;BR /&gt;if (ret) {&lt;BR /&gt;printf("%s: tcpc init failed, err=%d\n",&lt;BR /&gt;__func__, ret);&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;return ret;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;so you can refer to above source code to configure your GPIO.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Have a nice day!&lt;/P&gt;
&lt;P&gt;B.R,&lt;/P&gt;
&lt;P&gt;weidong&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 03 Feb 2021 05:01:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/GPIO-initialization-about-IMX8MQ-on-power/m-p/1225174#M168841</guid>
      <dc:creator>weidong_sun</dc:creator>
      <dc:date>2021-02-03T05:01:46Z</dc:date>
    </item>
    <item>
      <title>Re: GPIO initialization about IMX8MQ on power</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/GPIO-initialization-about-IMX8MQ-on-power/m-p/1225224#M168848</link>
      <description>&lt;P&gt;&lt;SPAN&gt;I did GPIO initialization in the board_early_init_f () function, which should be earlier than the method initialization you mentioned, but it will take 200ms to run this function after power on.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="code1.png" style="width: 686px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/136386i1DF736F4C7DAC297/image-size/large?v=v2&amp;amp;px=999" role="button" title="code1.png" alt="code1.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 03 Feb 2021 06:16:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/GPIO-initialization-about-IMX8MQ-on-power/m-p/1225224#M168848</guid>
      <dc:creator>Joe_C</dc:creator>
      <dc:date>2021-02-03T06:16:26Z</dc:date>
    </item>
    <item>
      <title>Re: GPIO initialization about IMX8MQ on power</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/GPIO-initialization-about-IMX8MQ-on-power/m-p/1225238#M168850</link>
      <description>&lt;P&gt;&lt;SPAN class="VIiyi"&gt;&lt;SPAN class="JLqJ4b ChMk0b" data-language-for-alternatives="en" data-language-to-translate-into="zh-CN" data-phrase-index="0"&gt;&lt;SPAN&gt;If you want to use this GPIO early, you can also wire its code in spl.c.&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN class="JLqJ4b ChMk0b" data-language-for-alternatives="en" data-language-to-translate-into="zh-CN" data-phrase-index="1"&gt;&lt;SPAN&gt;OK?&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 03 Feb 2021 06:32:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/GPIO-initialization-about-IMX8MQ-on-power/m-p/1225238#M168850</guid>
      <dc:creator>weidong_sun</dc:creator>
      <dc:date>2021-02-03T06:32:08Z</dc:date>
    </item>
    <item>
      <title>Re: GPIO initialization about IMX8MQ on power</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/GPIO-initialization-about-IMX8MQ-on-power/m-p/1225252#M168854</link>
      <description>&lt;P&gt;yes,&lt;SPAN&gt;I initialize the GPIO in spl_board_init(), and I still can't pull the GPIO up or down when I power it up.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 03 Feb 2021 06:40:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/GPIO-initialization-about-IMX8MQ-on-power/m-p/1225252#M168854</guid>
      <dc:creator>Joe_C</dc:creator>
      <dc:date>2021-02-03T06:40:55Z</dc:date>
    </item>
    <item>
      <title>Re: GPIO initialization about IMX8MQ on power</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/GPIO-initialization-about-IMX8MQ-on-power/m-p/1230737#M169462</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp; in spl.c of i.mx8mq board , there is example code for GPIO opreations:&lt;/P&gt;
&lt;P&gt;...&lt;/P&gt;
&lt;P&gt;#define USDHC2_CD_GPIO IMX_GPIO_NR(2, 12)&lt;BR /&gt;#define USDHC1_PWR_GPIO IMX_GPIO_NR(2, 10)&lt;BR /&gt;#define USDHC2_PWR_GPIO IMX_GPIO_NR(2, 19)&lt;/P&gt;
&lt;P&gt;int board_mmc_getcd(struct mmc *mmc)&lt;BR /&gt;{&lt;BR /&gt;struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc-&amp;gt;priv;&lt;BR /&gt;int ret = 0;&lt;/P&gt;
&lt;P&gt;switch (cfg-&amp;gt;esdhc_base) {&lt;BR /&gt;case USDHC1_BASE_ADDR:&lt;BR /&gt;ret = 1;&lt;BR /&gt;break;&lt;BR /&gt;case USDHC2_BASE_ADDR:&lt;BR /&gt;ret = !gpio_get_value(USDHC2_CD_GPIO);&lt;BR /&gt;return ret;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;return 1;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;#define USDHC_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_HYS | PAD_CTL_PUE | \&lt;BR /&gt;PAD_CTL_FSEL2)&lt;BR /&gt;#define USDHC_GPIO_PAD_CTRL (PAD_CTL_PUE | PAD_CTL_DSE1)&lt;/P&gt;
&lt;P&gt;static iomux_v3_cfg_t const usdhc1_pads[] = {&lt;BR /&gt;IMX8MQ_PAD_SD1_CLK__USDHC1_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL),&lt;BR /&gt;IMX8MQ_PAD_SD1_CMD__USDHC1_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),&lt;BR /&gt;IMX8MQ_PAD_SD1_DATA0__USDHC1_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),&lt;BR /&gt;IMX8MQ_PAD_SD1_DATA1__USDHC1_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),&lt;BR /&gt;IMX8MQ_PAD_SD1_DATA2__USDHC1_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),&lt;BR /&gt;IMX8MQ_PAD_SD1_DATA3__USDHC1_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),&lt;BR /&gt;IMX8MQ_PAD_SD1_DATA4__USDHC1_DATA4 | MUX_PAD_CTRL(USDHC_PAD_CTRL),&lt;BR /&gt;IMX8MQ_PAD_SD1_DATA5__USDHC1_DATA5 | MUX_PAD_CTRL(USDHC_PAD_CTRL),&lt;BR /&gt;IMX8MQ_PAD_SD1_DATA6__USDHC1_DATA6 | MUX_PAD_CTRL(USDHC_PAD_CTRL),&lt;BR /&gt;IMX8MQ_PAD_SD1_DATA7__USDHC1_DATA7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),&lt;BR /&gt;IMX8MQ_PAD_SD1_RESET_B__GPIO2_IO10 | MUX_PAD_CTRL(NO_PAD_CTRL),&lt;BR /&gt;};&lt;/P&gt;
&lt;P&gt;static iomux_v3_cfg_t const usdhc2_pads[] = {&lt;BR /&gt;IMX8MQ_PAD_SD2_CLK__USDHC2_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL), /* 0xd6 */&lt;BR /&gt;IMX8MQ_PAD_SD2_CMD__USDHC2_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL), /* 0xd6 */&lt;BR /&gt;IMX8MQ_PAD_SD2_DATA0__USDHC2_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL), /* 0xd6 */&lt;BR /&gt;IMX8MQ_PAD_SD2_DATA1__USDHC2_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL), /* 0xd6 */&lt;BR /&gt;IMX8MQ_PAD_SD2_DATA2__USDHC2_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL), /* 0x16 */&lt;BR /&gt;IMX8MQ_PAD_SD2_DATA3__USDHC2_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL), /* 0xd6 */&lt;BR /&gt;IMX8MQ_PAD_SD2_CD_B__GPIO2_IO12 | MUX_PAD_CTRL(USDHC_GPIO_PAD_CTRL),&lt;BR /&gt;IMX8MQ_PAD_SD2_RESET_B__GPIO2_IO19 | MUX_PAD_CTRL(USDHC_GPIO_PAD_CTRL),&lt;BR /&gt;};&lt;/P&gt;
&lt;P&gt;static struct fsl_esdhc_cfg usdhc_cfg[2] = {&lt;BR /&gt;{USDHC1_BASE_ADDR, 0, 8},&lt;BR /&gt;{USDHC2_BASE_ADDR, 0, 4},&lt;BR /&gt;};&lt;/P&gt;
&lt;P&gt;int board_mmc_init(bd_t *bis)&lt;BR /&gt;{&lt;BR /&gt;int i, ret;&lt;BR /&gt;/*&lt;BR /&gt;* According to the board_mmc_init() the following map is done:&lt;BR /&gt;* (U-Boot device node) (Physical Port)&lt;BR /&gt;* mmc0 USDHC1&lt;BR /&gt;* mmc1 USDHC2&lt;BR /&gt;*/&lt;BR /&gt;for (i = 0; i &amp;lt; CONFIG_SYS_FSL_USDHC_NUM; i++) {&lt;BR /&gt;switch (i) {&lt;BR /&gt;case 0:&lt;BR /&gt;init_clk_usdhc(0);&lt;BR /&gt;usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);&lt;BR /&gt;imx_iomux_v3_setup_multiple_pads(usdhc1_pads,&lt;BR /&gt;ARRAY_SIZE(usdhc1_pads));&lt;BR /&gt;gpio_request(USDHC1_PWR_GPIO, "usdhc1_reset");&lt;BR /&gt;gpio_direction_output(USDHC1_PWR_GPIO, 0);&lt;BR /&gt;udelay(500);&lt;BR /&gt;gpio_direction_output(USDHC1_PWR_GPIO, 1);&lt;BR /&gt;break;&lt;BR /&gt;case 1:&lt;BR /&gt;init_clk_usdhc(1);&lt;BR /&gt;usdhc_cfg[1].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);&lt;BR /&gt;imx_iomux_v3_setup_multiple_pads(usdhc2_pads,&lt;BR /&gt;ARRAY_SIZE(usdhc2_pads));&lt;BR /&gt;gpio_request(USDHC2_PWR_GPIO, "usdhc2_reset");&lt;BR /&gt;gpio_direction_output(USDHC2_PWR_GPIO, 0);&lt;BR /&gt;udelay(500);&lt;BR /&gt;gpio_direction_output(USDHC2_PWR_GPIO, 1);&lt;BR /&gt;break;&lt;BR /&gt;default:&lt;BR /&gt;printf("Warning: you configured more USDHC controllers(%d) than supported by the board\n", i + 1);&lt;BR /&gt;return -EINVAL;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;ret = fsl_esdhc_initialize(bis, &amp;amp;usdhc_cfg[i]);&lt;BR /&gt;if (ret)&lt;BR /&gt;return ret;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;return 0;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;....&lt;/P&gt;
&lt;P&gt;You can refer to them.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;weidong&lt;/P&gt;</description>
      <pubDate>Sun, 14 Feb 2021 09:32:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/GPIO-initialization-about-IMX8MQ-on-power/m-p/1230737#M169462</guid>
      <dc:creator>weidong_sun</dc:creator>
      <dc:date>2021-02-14T09:32:30Z</dc:date>
    </item>
  </channel>
</rss>

