ARM: imx53: add sdhc pad settings
Subsystems (6)
PATCH 1/5 ARM: imx53: add sdhc pad settings
arch/arm/plat-mxc/include/mach/iomux-mx53.h +43 -40
@@ -27,6 +27,9 @@#define MX53_UART_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE | \ PAD_CTL_DSE_HIGH | PAD_CTL_SRE_FAST | PAD_CTL_HYS) +#define MX53_SDHC_PAD_CTRL (PAD_CTL_HYS | PAD_CTL_PKE | PAD_CTL_PUE | \ + PAD_CTL_PUS_47K_UP | PAD_CTL_DSE_HIGH | \ + PAD_CTL_SRE_FAST)#define _MX53_PAD_GPIO_19__KPP_COL_5 IOMUX_PAD(0x348, 0x20, 0, 0x840, 0, 0)#define _MX53_PAD_GPIO_19__GPIO4_5 IOMUX_PAD(0x348, 0x20, 1, 0x0, 0, 0)
@@ -2057,13 +2060,13 @@#define MX53_PAD_PATA_DIOR__USBPHY2_DATAOUT_7 (_MX53_PAD_PATA_DIOR__USBPHY2_DATAOUT_7 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_RESET_B__PATA_PATA_RESET_B (_MX53_PAD_PATA_RESET_B__PATA_PATA_RESET_B | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_RESET_B__GPIO7_4 (_MX53_PAD_PATA_RESET_B__GPIO7_4 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_RESET_B__ESDHC3_CMD (_MX53_PAD_PATA_RESET_B__ESDHC3_CMD | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_RESET_B__ESDHC3_CMD (_MX53_PAD_PATA_RESET_B__ESDHC3_CMD | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_RESET_B__UART1_CTS (_MX53_PAD_PATA_RESET_B__UART1_CTS | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_RESET_B__CAN2_TXCAN (_MX53_PAD_PATA_RESET_B__CAN2_TXCAN | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_RESET_B__USBPHY1_DATAOUT_0 (_MX53_PAD_PATA_RESET_B__USBPHY1_DATAOUT_0 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_IORDY__PATA_IORDY (_MX53_PAD_PATA_IORDY__PATA_IORDY | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_IORDY__GPIO7_5 (_MX53_PAD_PATA_IORDY__GPIO7_5 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_IORDY__ESDHC3_CLK (_MX53_PAD_PATA_IORDY__ESDHC3_CLK | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_IORDY__ESDHC3_CLK (_MX53_PAD_PATA_IORDY__ESDHC3_CLK | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_IORDY__UART1_RTS (_MX53_PAD_PATA_IORDY__UART1_RTS | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_IORDY__CAN2_RXCAN (_MX53_PAD_PATA_IORDY__CAN2_RXCAN | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_IORDY__USBPHY1_DATAOUT_1 (_MX53_PAD_PATA_IORDY__USBPHY1_DATAOUT_1 | MUX_PAD_CTRL(NO_PAD_CTRL))
@@ -2074,12 +2077,12 @@#define MX53_PAD_PATA_DA_0__USBPHY1_DATAOUT_2 (_MX53_PAD_PATA_DA_0__USBPHY1_DATAOUT_2 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DA_1__PATA_DA_1 (_MX53_PAD_PATA_DA_1__PATA_DA_1 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DA_1__GPIO7_7 (_MX53_PAD_PATA_DA_1__GPIO7_7 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DA_1__ESDHC4_CMD (_MX53_PAD_PATA_DA_1__ESDHC4_CMD | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DA_1__ESDHC4_CMD (_MX53_PAD_PATA_DA_1__ESDHC4_CMD | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DA_1__UART3_CTS (_MX53_PAD_PATA_DA_1__UART3_CTS | MUX_PAD_CTRL(MX53_UART_PAD_CTRL))#define MX53_PAD_PATA_DA_1__USBPHY1_DATAOUT_3 (_MX53_PAD_PATA_DA_1__USBPHY1_DATAOUT_3 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DA_2__PATA_DA_2 (_MX53_PAD_PATA_DA_2__PATA_DA_2 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DA_2__GPIO7_8 (_MX53_PAD_PATA_DA_2__GPIO7_8 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DA_2__ESDHC4_CLK (_MX53_PAD_PATA_DA_2__ESDHC4_CLK | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DA_2__ESDHC4_CLK (_MX53_PAD_PATA_DA_2__ESDHC4_CLK | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DA_2__UART3_RTS (_MX53_PAD_PATA_DA_2__UART3_RTS | MUX_PAD_CTRL(MX53_UART_PAD_CTRL))#define MX53_PAD_PATA_DA_2__USBPHY1_DATAOUT_4 (_MX53_PAD_PATA_DA_2__USBPHY1_DATAOUT_4 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_CS_0__PATA_CS_0 (_MX53_PAD_PATA_CS_0__PATA_CS_0 | MUX_PAD_CTRL(NO_PAD_CTRL))
@@ -2093,124 +2096,124 @@#define MX53_PAD_PATA_DATA0__PATA_DATA_0 (_MX53_PAD_PATA_DATA0__PATA_DATA_0 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA0__GPIO2_0 (_MX53_PAD_PATA_DATA0__GPIO2_0 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA0__EMI_NANDF_D_0 (_MX53_PAD_PATA_DATA0__EMI_NANDF_D_0 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA0__ESDHC3_DAT4 (_MX53_PAD_PATA_DATA0__ESDHC3_DAT4 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA0__ESDHC3_DAT4 (_MX53_PAD_PATA_DATA0__ESDHC3_DAT4 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA0__GPU3d_GPU_DEBUG_OUT_0 (_MX53_PAD_PATA_DATA0__GPU3d_GPU_DEBUG_OUT_0 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA0__IPU_DIAG_BUS_0 (_MX53_PAD_PATA_DATA0__IPU_DIAG_BUS_0 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA0__USBPHY1_DATAOUT_7 (_MX53_PAD_PATA_DATA0__USBPHY1_DATAOUT_7 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA1__PATA_DATA_1 (_MX53_PAD_PATA_DATA1__PATA_DATA_1 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA1__GPIO2_1 (_MX53_PAD_PATA_DATA1__GPIO2_1 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA1__EMI_NANDF_D_1 (_MX53_PAD_PATA_DATA1__EMI_NANDF_D_1 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA1__ESDHC3_DAT5 (_MX53_PAD_PATA_DATA1__ESDHC3_DAT5 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA1__ESDHC3_DAT5 (_MX53_PAD_PATA_DATA1__ESDHC3_DAT5 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA1__GPU3d_GPU_DEBUG_OUT_1 (_MX53_PAD_PATA_DATA1__GPU3d_GPU_DEBUG_OUT_1 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA1__IPU_DIAG_BUS_1 (_MX53_PAD_PATA_DATA1__IPU_DIAG_BUS_1 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA2__PATA_DATA_2 (_MX53_PAD_PATA_DATA2__PATA_DATA_2 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA2__GPIO2_2 (_MX53_PAD_PATA_DATA2__GPIO2_2 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA2__EMI_NANDF_D_2 (_MX53_PAD_PATA_DATA2__EMI_NANDF_D_2 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA2__ESDHC3_DAT6 (_MX53_PAD_PATA_DATA2__ESDHC3_DAT6 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA2__ESDHC3_DAT6 (_MX53_PAD_PATA_DATA2__ESDHC3_DAT6 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA2__GPU3d_GPU_DEBUG_OUT_2 (_MX53_PAD_PATA_DATA2__GPU3d_GPU_DEBUG_OUT_2 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA2__IPU_DIAG_BUS_2 (_MX53_PAD_PATA_DATA2__IPU_DIAG_BUS_2 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA3__PATA_DATA_3 (_MX53_PAD_PATA_DATA3__PATA_DATA_3 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA3__GPIO2_3 (_MX53_PAD_PATA_DATA3__GPIO2_3 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA3__EMI_NANDF_D_3 (_MX53_PAD_PATA_DATA3__EMI_NANDF_D_3 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA3__ESDHC3_DAT7 (_MX53_PAD_PATA_DATA3__ESDHC3_DAT7 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA3__ESDHC3_DAT7 (_MX53_PAD_PATA_DATA3__ESDHC3_DAT7 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA3__GPU3d_GPU_DEBUG_OUT_3 (_MX53_PAD_PATA_DATA3__GPU3d_GPU_DEBUG_OUT_3 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA3__IPU_DIAG_BUS_3 (_MX53_PAD_PATA_DATA3__IPU_DIAG_BUS_3 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA4__PATA_DATA_4 (_MX53_PAD_PATA_DATA4__PATA_DATA_4 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA4__GPIO2_4 (_MX53_PAD_PATA_DATA4__GPIO2_4 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA4__EMI_NANDF_D_4 (_MX53_PAD_PATA_DATA4__EMI_NANDF_D_4 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA4__ESDHC4_DAT4 (_MX53_PAD_PATA_DATA4__ESDHC4_DAT4 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA4__ESDHC4_DAT4 (_MX53_PAD_PATA_DATA4__ESDHC4_DAT4 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA4__GPU3d_GPU_DEBUG_OUT_4 (_MX53_PAD_PATA_DATA4__GPU3d_GPU_DEBUG_OUT_4 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA4__IPU_DIAG_BUS_4 (_MX53_PAD_PATA_DATA4__IPU_DIAG_BUS_4 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA5__PATA_DATA_5 (_MX53_PAD_PATA_DATA5__PATA_DATA_5 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA5__GPIO2_5 (_MX53_PAD_PATA_DATA5__GPIO2_5 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA5__EMI_NANDF_D_5 (_MX53_PAD_PATA_DATA5__EMI_NANDF_D_5 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA5__ESDHC4_DAT5 (_MX53_PAD_PATA_DATA5__ESDHC4_DAT5 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA5__ESDHC4_DAT5 (_MX53_PAD_PATA_DATA5__ESDHC4_DAT5 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA5__GPU3d_GPU_DEBUG_OUT_5 (_MX53_PAD_PATA_DATA5__GPU3d_GPU_DEBUG_OUT_5 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA5__IPU_DIAG_BUS_5 (_MX53_PAD_PATA_DATA5__IPU_DIAG_BUS_5 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA6__PATA_DATA_6 (_MX53_PAD_PATA_DATA6__PATA_DATA_6 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA6__GPIO2_6 (_MX53_PAD_PATA_DATA6__GPIO2_6 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA6__EMI_NANDF_D_6 (_MX53_PAD_PATA_DATA6__EMI_NANDF_D_6 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA6__ESDHC4_DAT6 (_MX53_PAD_PATA_DATA6__ESDHC4_DAT6 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA6__ESDHC4_DAT6 (_MX53_PAD_PATA_DATA6__ESDHC4_DAT6 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA6__GPU3d_GPU_DEBUG_OUT_6 (_MX53_PAD_PATA_DATA6__GPU3d_GPU_DEBUG_OUT_6 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA6__IPU_DIAG_BUS_6 (_MX53_PAD_PATA_DATA6__IPU_DIAG_BUS_6 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA7__PATA_DATA_7 (_MX53_PAD_PATA_DATA7__PATA_DATA_7 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA7__GPIO2_7 (_MX53_PAD_PATA_DATA7__GPIO2_7 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA7__EMI_NANDF_D_7 (_MX53_PAD_PATA_DATA7__EMI_NANDF_D_7 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA7__ESDHC4_DAT7 (_MX53_PAD_PATA_DATA7__ESDHC4_DAT7 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA7__ESDHC4_DAT7 (_MX53_PAD_PATA_DATA7__ESDHC4_DAT7 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA7__GPU3d_GPU_DEBUG_OUT_7 (_MX53_PAD_PATA_DATA7__GPU3d_GPU_DEBUG_OUT_7 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA7__IPU_DIAG_BUS_7 (_MX53_PAD_PATA_DATA7__IPU_DIAG_BUS_7 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA8__PATA_DATA_8 (_MX53_PAD_PATA_DATA8__PATA_DATA_8 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA8__GPIO2_8 (_MX53_PAD_PATA_DATA8__GPIO2_8 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA8__ESDHC1_DAT4 (_MX53_PAD_PATA_DATA8__ESDHC1_DAT4 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA8__ESDHC1_DAT4 (_MX53_PAD_PATA_DATA8__ESDHC1_DAT4 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA8__EMI_NANDF_D_8 (_MX53_PAD_PATA_DATA8__EMI_NANDF_D_8 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA8__ESDHC3_DAT0 (_MX53_PAD_PATA_DATA8__ESDHC3_DAT0 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA8__ESDHC3_DAT0 (_MX53_PAD_PATA_DATA8__ESDHC3_DAT0 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA8__GPU3d_GPU_DEBUG_OUT_8 (_MX53_PAD_PATA_DATA8__GPU3d_GPU_DEBUG_OUT_8 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA8__IPU_DIAG_BUS_8 (_MX53_PAD_PATA_DATA8__IPU_DIAG_BUS_8 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA9__PATA_DATA_9 (_MX53_PAD_PATA_DATA9__PATA_DATA_9 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA9__GPIO2_9 (_MX53_PAD_PATA_DATA9__GPIO2_9 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA9__ESDHC1_DAT5 (_MX53_PAD_PATA_DATA9__ESDHC1_DAT5 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA9__ESDHC1_DAT5 (_MX53_PAD_PATA_DATA9__ESDHC1_DAT5 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA9__EMI_NANDF_D_9 (_MX53_PAD_PATA_DATA9__EMI_NANDF_D_9 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA9__ESDHC3_DAT1 (_MX53_PAD_PATA_DATA9__ESDHC3_DAT1 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA9__ESDHC3_DAT1 (_MX53_PAD_PATA_DATA9__ESDHC3_DAT1 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA9__GPU3d_GPU_DEBUG_OUT_9 (_MX53_PAD_PATA_DATA9__GPU3d_GPU_DEBUG_OUT_9 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA9__IPU_DIAG_BUS_9 (_MX53_PAD_PATA_DATA9__IPU_DIAG_BUS_9 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA10__PATA_DATA_10 (_MX53_PAD_PATA_DATA10__PATA_DATA_10 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA10__GPIO2_10 (_MX53_PAD_PATA_DATA10__GPIO2_10 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA10__ESDHC1_DAT6 (_MX53_PAD_PATA_DATA10__ESDHC1_DAT6 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA10__ESDHC1_DAT6 (_MX53_PAD_PATA_DATA10__ESDHC1_DAT6 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA10__EMI_NANDF_D_10 (_MX53_PAD_PATA_DATA10__EMI_NANDF_D_10 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA10__ESDHC3_DAT2 (_MX53_PAD_PATA_DATA10__ESDHC3_DAT2 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA10__ESDHC3_DAT2 (_MX53_PAD_PATA_DATA10__ESDHC3_DAT2 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA10__GPU3d_GPU_DEBUG_OUT_10 (_MX53_PAD_PATA_DATA10__GPU3d_GPU_DEBUG_OUT_10 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA10__IPU_DIAG_BUS_10 (_MX53_PAD_PATA_DATA10__IPU_DIAG_BUS_10 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA11__PATA_DATA_11 (_MX53_PAD_PATA_DATA11__PATA_DATA_11 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA11__GPIO2_11 (_MX53_PAD_PATA_DATA11__GPIO2_11 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA11__ESDHC1_DAT7 (_MX53_PAD_PATA_DATA11__ESDHC1_DAT7 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA11__ESDHC1_DAT7 (_MX53_PAD_PATA_DATA11__ESDHC1_DAT7 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA11__EMI_NANDF_D_11 (_MX53_PAD_PATA_DATA11__EMI_NANDF_D_11 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA11__ESDHC3_DAT3 (_MX53_PAD_PATA_DATA11__ESDHC3_DAT3 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA11__ESDHC3_DAT3 (_MX53_PAD_PATA_DATA11__ESDHC3_DAT3 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA11__GPU3d_GPU_DEBUG_OUT_11 (_MX53_PAD_PATA_DATA11__GPU3d_GPU_DEBUG_OUT_11 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA11__IPU_DIAG_BUS_11 (_MX53_PAD_PATA_DATA11__IPU_DIAG_BUS_11 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA12__PATA_DATA_12 (_MX53_PAD_PATA_DATA12__PATA_DATA_12 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA12__GPIO2_12 (_MX53_PAD_PATA_DATA12__GPIO2_12 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA12__ESDHC2_DAT4 (_MX53_PAD_PATA_DATA12__ESDHC2_DAT4 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA12__ESDHC2_DAT4 (_MX53_PAD_PATA_DATA12__ESDHC2_DAT4 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA12__EMI_NANDF_D_12 (_MX53_PAD_PATA_DATA12__EMI_NANDF_D_12 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA12__ESDHC4_DAT0 (_MX53_PAD_PATA_DATA12__ESDHC4_DAT0 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA12__ESDHC4_DAT0 (_MX53_PAD_PATA_DATA12__ESDHC4_DAT0 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA12__GPU3d_GPU_DEBUG_OUT_12 (_MX53_PAD_PATA_DATA12__GPU3d_GPU_DEBUG_OUT_12 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA12__IPU_DIAG_BUS_12 (_MX53_PAD_PATA_DATA12__IPU_DIAG_BUS_12 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA13__PATA_DATA_13 (_MX53_PAD_PATA_DATA13__PATA_DATA_13 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA13__GPIO2_13 (_MX53_PAD_PATA_DATA13__GPIO2_13 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA13__ESDHC2_DAT5 (_MX53_PAD_PATA_DATA13__ESDHC2_DAT5 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA13__ESDHC2_DAT5 (_MX53_PAD_PATA_DATA13__ESDHC2_DAT5 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA13__EMI_NANDF_D_13 (_MX53_PAD_PATA_DATA13__EMI_NANDF_D_13 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA13__ESDHC4_DAT1 (_MX53_PAD_PATA_DATA13__ESDHC4_DAT1 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA13__ESDHC4_DAT1 (_MX53_PAD_PATA_DATA13__ESDHC4_DAT1 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA13__GPU3d_GPU_DEBUG_OUT_13 (_MX53_PAD_PATA_DATA13__GPU3d_GPU_DEBUG_OUT_13 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA13__IPU_DIAG_BUS_13 (_MX53_PAD_PATA_DATA13__IPU_DIAG_BUS_13 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA14__PATA_DATA_14 (_MX53_PAD_PATA_DATA14__PATA_DATA_14 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA14__GPIO2_14 (_MX53_PAD_PATA_DATA14__GPIO2_14 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA14__ESDHC2_DAT6 (_MX53_PAD_PATA_DATA14__ESDHC2_DAT6 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA14__ESDHC2_DAT6 (_MX53_PAD_PATA_DATA14__ESDHC2_DAT6 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA14__EMI_NANDF_D_14 (_MX53_PAD_PATA_DATA14__EMI_NANDF_D_14 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA14__ESDHC4_DAT2 (_MX53_PAD_PATA_DATA14__ESDHC4_DAT2 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA14__ESDHC4_DAT2 (_MX53_PAD_PATA_DATA14__ESDHC4_DAT2 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA14__GPU3d_GPU_DEBUG_OUT_14 (_MX53_PAD_PATA_DATA14__GPU3d_GPU_DEBUG_OUT_14 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA14__IPU_DIAG_BUS_14 (_MX53_PAD_PATA_DATA14__IPU_DIAG_BUS_14 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA15__PATA_DATA_15 (_MX53_PAD_PATA_DATA15__PATA_DATA_15 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA15__GPIO2_15 (_MX53_PAD_PATA_DATA15__GPIO2_15 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA15__ESDHC2_DAT7 (_MX53_PAD_PATA_DATA15__ESDHC2_DAT7 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA15__ESDHC2_DAT7 (_MX53_PAD_PATA_DATA15__ESDHC2_DAT7 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA15__EMI_NANDF_D_15 (_MX53_PAD_PATA_DATA15__EMI_NANDF_D_15 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_PATA_DATA15__ESDHC4_DAT3 (_MX53_PAD_PATA_DATA15__ESDHC4_DAT3 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_PATA_DATA15__ESDHC4_DAT3 (_MX53_PAD_PATA_DATA15__ESDHC4_DAT3 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_PATA_DATA15__GPU3d_GPU_DEBUG_OUT_15 (_MX53_PAD_PATA_DATA15__GPU3d_GPU_DEBUG_OUT_15 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_PATA_DATA15__IPU_DIAG_BUS_15 (_MX53_PAD_PATA_DATA15__IPU_DIAG_BUS_15 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_SD1_DATA0__ESDHC1_DAT0 (_MX53_PAD_SD1_DATA0__ESDHC1_DAT0 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_SD1_DATA0__ESDHC1_DAT0 (_MX53_PAD_SD1_DATA0__ESDHC1_DAT0 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_SD1_DATA0__GPIO1_16 (_MX53_PAD_SD1_DATA0__GPIO1_16 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_DATA0__GPT_CAPIN1 (_MX53_PAD_SD1_DATA0__GPT_CAPIN1 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_DATA0__CSPI_MISO (_MX53_PAD_SD1_DATA0__CSPI_MISO | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_DATA0__CCM_PLL3_BYP (_MX53_PAD_SD1_DATA0__CCM_PLL3_BYP | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_SD1_DATA1__ESDHC1_DAT1 (_MX53_PAD_SD1_DATA1__ESDHC1_DAT1 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_SD1_DATA1__ESDHC1_DAT1 (_MX53_PAD_SD1_DATA1__ESDHC1_DAT1 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_SD1_DATA1__GPIO1_17 (_MX53_PAD_SD1_DATA1__GPIO1_17 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_DATA1__GPT_CAPIN2 (_MX53_PAD_SD1_DATA1__GPT_CAPIN2 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_DATA1__CSPI_SS0 (_MX53_PAD_SD1_DATA1__CSPI_SS0 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_DATA1__CCM_PLL4_BYP (_MX53_PAD_SD1_DATA1__CCM_PLL4_BYP | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_SD1_CMD__ESDHC1_CMD (_MX53_PAD_SD1_CMD__ESDHC1_CMD | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_SD1_CMD__ESDHC1_CMD (_MX53_PAD_SD1_CMD__ESDHC1_CMD | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_SD1_CMD__GPIO1_18 (_MX53_PAD_SD1_CMD__GPIO1_18 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_CMD__GPT_CMPOUT1 (_MX53_PAD_SD1_CMD__GPT_CMPOUT1 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_CMD__CSPI_MOSI (_MX53_PAD_SD1_CMD__CSPI_MOSI | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_CMD__CCM_PLL1_BYP (_MX53_PAD_SD1_CMD__CCM_PLL1_BYP | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_SD1_DATA2__ESDHC1_DAT2 (_MX53_PAD_SD1_DATA2__ESDHC1_DAT2 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_SD1_DATA2__ESDHC1_DAT2 (_MX53_PAD_SD1_DATA2__ESDHC1_DAT2 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_SD1_DATA2__GPIO1_19 (_MX53_PAD_SD1_DATA2__GPIO1_19 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_DATA2__GPT_CMPOUT2 (_MX53_PAD_SD1_DATA2__GPT_CMPOUT2 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_DATA2__PWM2_PWMO (_MX53_PAD_SD1_DATA2__PWM2_PWMO | MUX_PAD_CTRL(NO_PAD_CTRL))
@@ -2218,13 +2221,13 @@#define MX53_PAD_SD1_DATA2__CSPI_SS1 (_MX53_PAD_SD1_DATA2__CSPI_SS1 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_DATA2__WDOG1_WDOG_RST_B_DEB (_MX53_PAD_SD1_DATA2__WDOG1_WDOG_RST_B_DEB | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_DATA2__CCM_PLL2_BYP (_MX53_PAD_SD1_DATA2__CCM_PLL2_BYP | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_SD1_CLK__ESDHC1_CLK (_MX53_PAD_SD1_CLK__ESDHC1_CLK | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_SD1_CLK__ESDHC1_CLK (_MX53_PAD_SD1_CLK__ESDHC1_CLK | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_SD1_CLK__GPIO1_20 (_MX53_PAD_SD1_CLK__GPIO1_20 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_CLK__OSC32k_32K_OUT (_MX53_PAD_SD1_CLK__OSC32k_32K_OUT | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_CLK__GPT_CLKIN (_MX53_PAD_SD1_CLK__GPT_CLKIN | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_CLK__CSPI_SCLK (_MX53_PAD_SD1_CLK__CSPI_SCLK | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_CLK__SATA_PHY_DTB_0 (_MX53_PAD_SD1_CLK__SATA_PHY_DTB_0 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_SD1_DATA3__ESDHC1_DAT3 (_MX53_PAD_SD1_DATA3__ESDHC1_DAT3 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_SD1_DATA3__ESDHC1_DAT3 (_MX53_PAD_SD1_DATA3__ESDHC1_DAT3 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_SD1_DATA3__GPIO1_21 (_MX53_PAD_SD1_DATA3__GPIO1_21 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_DATA3__GPT_CMPOUT3 (_MX53_PAD_SD1_DATA3__GPT_CMPOUT3 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_DATA3__PWM1_PWMO (_MX53_PAD_SD1_DATA3__PWM1_PWMO | MUX_PAD_CTRL(NO_PAD_CTRL))
@@ -2232,37 +2235,37 @@#define MX53_PAD_SD1_DATA3__CSPI_SS2 (_MX53_PAD_SD1_DATA3__CSPI_SS2 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_DATA3__WDOG2_WDOG_RST_B_DEB (_MX53_PAD_SD1_DATA3__WDOG2_WDOG_RST_B_DEB | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD1_DATA3__SATA_PHY_DTB_1 (_MX53_PAD_SD1_DATA3__SATA_PHY_DTB_1 | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_SD2_CLK__ESDHC2_CLK (_MX53_PAD_SD2_CLK__ESDHC2_CLK | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_SD2_CLK__ESDHC2_CLK (_MX53_PAD_SD2_CLK__ESDHC2_CLK | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_SD2_CLK__GPIO1_10 (_MX53_PAD_SD2_CLK__GPIO1_10 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_CLK__KPP_COL_5 (_MX53_PAD_SD2_CLK__KPP_COL_5 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_CLK__AUDMUX_AUD4_RXFS (_MX53_PAD_SD2_CLK__AUDMUX_AUD4_RXFS | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_CLK__CSPI_SCLK (_MX53_PAD_SD2_CLK__CSPI_SCLK | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_CLK__SCC_RANDOM_V (_MX53_PAD_SD2_CLK__SCC_RANDOM_V | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_SD2_CMD__ESDHC2_CMD (_MX53_PAD_SD2_CMD__ESDHC2_CMD | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_SD2_CMD__ESDHC2_CMD (_MX53_PAD_SD2_CMD__ESDHC2_CMD | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_SD2_CMD__GPIO1_11 (_MX53_PAD_SD2_CMD__GPIO1_11 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_CMD__KPP_ROW_5 (_MX53_PAD_SD2_CMD__KPP_ROW_5 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_CMD__AUDMUX_AUD4_RXC (_MX53_PAD_SD2_CMD__AUDMUX_AUD4_RXC | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_CMD__CSPI_MOSI (_MX53_PAD_SD2_CMD__CSPI_MOSI | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_CMD__SCC_RANDOM (_MX53_PAD_SD2_CMD__SCC_RANDOM | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_SD2_DATA3__ESDHC2_DAT3 (_MX53_PAD_SD2_DATA3__ESDHC2_DAT3 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_SD2_DATA3__ESDHC2_DAT3 (_MX53_PAD_SD2_DATA3__ESDHC2_DAT3 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_SD2_DATA3__GPIO1_12 (_MX53_PAD_SD2_DATA3__GPIO1_12 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_DATA3__KPP_COL_6 (_MX53_PAD_SD2_DATA3__KPP_COL_6 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_DATA3__AUDMUX_AUD4_TXC (_MX53_PAD_SD2_DATA3__AUDMUX_AUD4_TXC | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_DATA3__CSPI_SS2 (_MX53_PAD_SD2_DATA3__CSPI_SS2 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_DATA3__SJC_DONE (_MX53_PAD_SD2_DATA3__SJC_DONE | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_SD2_DATA2__ESDHC2_DAT2 (_MX53_PAD_SD2_DATA2__ESDHC2_DAT2 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_SD2_DATA2__ESDHC2_DAT2 (_MX53_PAD_SD2_DATA2__ESDHC2_DAT2 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_SD2_DATA2__GPIO1_13 (_MX53_PAD_SD2_DATA2__GPIO1_13 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_DATA2__KPP_ROW_6 (_MX53_PAD_SD2_DATA2__KPP_ROW_6 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_DATA2__AUDMUX_AUD4_TXD (_MX53_PAD_SD2_DATA2__AUDMUX_AUD4_TXD | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_DATA2__CSPI_SS1 (_MX53_PAD_SD2_DATA2__CSPI_SS1 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_DATA2__SJC_FAIL (_MX53_PAD_SD2_DATA2__SJC_FAIL | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_SD2_DATA1__ESDHC2_DAT1 (_MX53_PAD_SD2_DATA1__ESDHC2_DAT1 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_SD2_DATA1__ESDHC2_DAT1 (_MX53_PAD_SD2_DATA1__ESDHC2_DAT1 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_SD2_DATA1__GPIO1_14 (_MX53_PAD_SD2_DATA1__GPIO1_14 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_DATA1__KPP_COL_7 (_MX53_PAD_SD2_DATA1__KPP_COL_7 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_DATA1__AUDMUX_AUD4_TXFS (_MX53_PAD_SD2_DATA1__AUDMUX_AUD4_TXFS | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_DATA1__CSPI_SS0 (_MX53_PAD_SD2_DATA1__CSPI_SS0 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_DATA1__RTIC_SEC_VIO (_MX53_PAD_SD2_DATA1__RTIC_SEC_VIO | MUX_PAD_CTRL(NO_PAD_CTRL)) -#define MX53_PAD_SD2_DATA0__ESDHC2_DAT0 (_MX53_PAD_SD2_DATA0__ESDHC2_DAT0 | MUX_PAD_CTRL(NO_PAD_CTRL)) +#define MX53_PAD_SD2_DATA0__ESDHC2_DAT0 (_MX53_PAD_SD2_DATA0__ESDHC2_DAT0 | MUX_PAD_CTRL(MX53_SDHC_PAD_CTRL))#define MX53_PAD_SD2_DATA0__GPIO1_15 (_MX53_PAD_SD2_DATA0__GPIO1_15 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_DATA0__KPP_ROW_7 (_MX53_PAD_SD2_DATA0__KPP_ROW_7 | MUX_PAD_CTRL(NO_PAD_CTRL))#define MX53_PAD_SD2_DATA0__AUDMUX_AUD4_RXD (_MX53_PAD_SD2_DATA0__AUDMUX_AUD4_RXD | MUX_PAD_CTRL(NO_PAD_CTRL))
Signature · 1 line
1.7.1
PATCH 2/5 ARM: imx51/53: add sdhc3/4 clock
arch/arm/mach-mx5/clock-mx51-mx53.c +75 -0
@@ -42,6 +42,7 @@ static struct clk usboh3_clk;static struct clk emi_fast_clk;static struct clk ipu_clk;static struct clk mipi_hsc1_clk; +static struct clk esdhc1_clk;#define MAX_DPLL_WAIT_TRIES 1000/* 1000 * udelay(1) = 1ms */
@@ -1147,6 +1148,34 @@ CLK_GET_RATE(esdhc2, 1, ESDHC2_MSHC2) CLK_SET_PARENT(esdhc2, 1, ESDHC2_MSHC2) CLK_SET_RATE(esdhc2, 1, ESDHC2_MSHC2) +static int clk_esdhc3_set_parent (struct clk *clk,struct clk *parent) +{ +u32 reg; + + reg =__raw_readl (MXC_CCM_CSCMR1 ); +if (parent == &esdhc1_clk) + reg &= ~MXC_CCM_CSCMR1_ESDHC3_CLK_SEL ; +else + reg |=MXC_CCM_CSCMR1_ESDHC3_CLK_SEL ; +__raw_writel (reg,MXC_CCM_CSCMR1 ); + +return 0 ; +} + +static int clk_esdhc4_set_parent (struct clk *clk,struct clk *parent) +{ +u32 reg; + + reg =__raw_readl (MXC_CCM_CSCMR1 ); +if (parent == &esdhc1_clk) + reg &= ~MXC_CCM_CSCMR1_ESDHC4_CLK_SEL ; +else + reg |=MXC_CCM_CSCMR1_ESDHC4_CLK_SEL ; +__raw_writel (reg,MXC_CCM_CSCMR1 ); + +return 0 ; +} +#define DEFINE_CLOCK_FULL (name, i, er, es, gr, sr, e, d, p, s) \ static struct clk name = { \ .id = i, \
@@ -1253,6 +1282,32 @@ DEFINE_CLOCK_FULL(esdhc2_ipg_clk, 1, MXC_CCM_CCGR3, MXC_CCM_CCGRx_CG2_OFFSET, NULL, NULL, _clk_max_enable, _clk_max_disable, &ipg_clk, NULL);DEFINE_CLOCK_MAX (esdhc2_clk,1 ,MXC_CCM_CCGR3 , MXC_CCM_CCGRx_CG3_OFFSET, clk_esdhc2, &pll2_sw_clk, &esdhc2_ipg_clk); +DEFINE_CLOCK_FULL (esdhc3_ipg_clk,2 ,MXC_CCM_CCGR3 , MXC_CCM_CCGRx_CG4_OFFSET, +NULL ,NULL , _clk_max_enable, _clk_max_disable, &ipg_clk,NULL ); +DEFINE_CLOCK_FULL (esdhc4_ipg_clk,3 ,MXC_CCM_CCGR3 , MXC_CCM_CCGRx_CG6_OFFSET, +NULL ,NULL , _clk_max_enable, _clk_max_disable, &ipg_clk,NULL ); + +static struct clk esdhc3_clk = { + .id =2 , + .parent = &esdhc1_clk, + .set_parent = clk_esdhc3_set_parent, + .enable_reg =MXC_CCM_CCGR3 , + .enable_shift = MXC_CCM_CCGRx_CG5_OFFSET, + .enable = _clk_max_enable, + .disable = _clk_max_disable, + .secondary = &esdhc3_ipg_clk, +}; + +static struct clk esdhc4_clk = { + .id =3 , + .parent = &esdhc1_clk, + .set_parent = clk_esdhc4_set_parent, + .enable_reg =MXC_CCM_CCGR3 , + .enable_shift = MXC_CCM_CCGRx_CG7_OFFSET, + .enable = _clk_max_enable, + .disable = _clk_max_disable, + .secondary = &esdhc4_ipg_clk, +};DEFINE_CLOCK (mipi_esc_clk,0 ,MXC_CCM_CCGR4 , MXC_CCM_CCGRx_CG5_OFFSET,NULL ,NULL ,NULL , &pll2_sw_clk);DEFINE_CLOCK (mipi_hsc2_clk,0 ,MXC_CCM_CCGR4 , MXC_CCM_CCGRx_CG4_OFFSET,NULL ,NULL , &mipi_esc_clk, &pll2_sw_clk);
@@ -1312,6 +1367,8 @@ static struct clk_lookup mx51_lookups[] = { _REGISTER_CLOCK("imx51-cspi.0", NULL, cspi_clk) _REGISTER_CLOCK("sdhci-esdhc-imx.0", NULL, esdhc1_clk) _REGISTER_CLOCK("sdhci-esdhc-imx.1", NULL, esdhc2_clk) + _REGISTER_CLOCK("sdhci-esdhc-imx.2", NULL, esdhc3_clk) + _REGISTER_CLOCK("sdhci-esdhc-imx.3", NULL, esdhc4_clk) _REGISTER_CLOCK(NULL, "cpu_clk", cpu_clk) _REGISTER_CLOCK(NULL, "iim_clk", iim_clk)_REGISTER_CLOCK ("imx2-wdt.0" ,NULL , dummy_clk)
@@ -1333,6 +1390,8 @@ static struct clk_lookup mx53_lookups[] = { _REGISTER_CLOCK("imx-i2c.1", NULL, i2c2_clk) _REGISTER_CLOCK("sdhci-esdhc-imx.0", NULL, esdhc1_clk) _REGISTER_CLOCK("sdhci-esdhc-imx.1", NULL, esdhc2_clk) + _REGISTER_CLOCK("sdhci-esdhc-imx.2", NULL, esdhc3_clk) + _REGISTER_CLOCK("sdhci-esdhc-imx.3", NULL, esdhc4_clk) _REGISTER_CLOCK("imx53-ecspi.0", NULL, ecspi1_clk) _REGISTER_CLOCK("imx53-ecspi.1", NULL, ecspi2_clk)_REGISTER_CLOCK ("imx53-cspi.0" ,NULL , cspi_clk)
@@ -1412,6 +1471,14 @@ int __init mx53_clocks_init(unsigned long ckil, unsigned long osc, ckih2_reference = ckih2; oscillator_reference = osc; + esdhc2_clk.get_rate =NULL ; + esdhc2_clk.set_rate =NULL ; + esdhc2_clk.set_parent = clk_esdhc3_set_parent; + esdhc2_clk.parent = &esdhc1_clk; + esdhc3_clk.get_rate = clk_esdhc2_get_rate; + esdhc3_clk.set_rate = clk_esdhc2_set_rate; + esdhc3_clk.set_parent = clk_esdhc2_set_parent; +for (i =0 ; i <ARRAY_SIZE (mx53_lookups); i++)clkdev_add (&mx53_lookups[i]);
@@ -1425,6 +1492,14 @@ int __init mx53_clocks_init(unsigned long ckil, unsigned long osc,mx53_revision ();clk_disable (&iim_clk); +/* Set SDHC parents to be PLL2 */ +clk_set_parent (&esdhc1_clk, &pll2_sw_clk); +clk_set_parent (&esdhc3_clk, &pll2_sw_clk); + +/* set SDHC root clock as 200MHZ*/ +clk_set_rate (&esdhc1_clk,200000000 ); +clk_set_rate (&esdhc3_clk,200000000 ); +/* System timer */ mxc_timer_init (&gpt_clk,MX53_IO_ADDRESS (MX53_GPT1_BASE_ADDR ),MX53_INT_GPT );
Signature · 1 line
1.7.1
Sascha Hauer
maintainerPATCH 2/5 ARM: imx51/53: add sdhc3/4 clock
Quoted 17 lines · Richard Zhao
Signed-off-by Richard Zhao <[email protected]>arch/arm/mach-mx5/clock-mx51-mx53.c +1
-0@@ -42,6 +42,7 @@ static struct clk usboh3_clk;static struct clk emi_fast_clk;static struct clk ipu_clk;static struct clk mipi_hsc1_clk; +static struct clk esdhc1_clk;#define MAX_DPLL_WAIT_TRIES 1000/* 1000 * udelay(1) = 1ms */ @@ -1147,6 +1148,34 @@ CLK_GET_RATE(esdhc2, 1, ESDHC2_MSHC2) CLK_SET_PARENT(esdhc2, 1, ESDHC2_MSHC2)CLK_SET_RATE (esdhc2,1 ,ESDHC2_MSHC2 )
arch/arm/mach-mx5/clock-mx51-mx53.c CLK_GET_RATE(esdhc2, 1, ESDHC2_MSHC2) · line 1159
Quoted 10 lines
arch/arm/mach-mx5/clock-mx51-mx53.c +9
-0+static int clk_esdhc3_set_parent (struct clk *clk,struct clk *parent) +{ +u32 reg; + + reg =__raw_readl (MXC_CCM_CSCMR1 ); +if (parent == &esdhc1_clk) + reg &= ~MXC_CCM_CSCMR1_ESDHC3_CLK_SEL ; +else + reg |=MXC_CCM_CSCMR1_ESDHC3_CLK_SEL ;
parent != &esdhc1_clk doesn't mean parent is a valid parent for this clock. Please do the parameter checking properly.
Quoted 4 lines
arch/arm/mach-mx5/clock-mx51-mx53.c +4
-0+__raw_writel (reg,MXC_CCM_CSCMR1 ); + +return 0 ; +}
arch/arm/mach-mx5/clock-mx51-mx53.c CLK_GET_RATE(esdhc2, 1, ESDHC2_MSHC2) · line 1173
Quoted 10 lines
arch/arm/mach-mx5/clock-mx51-mx53.c +10
-0+ +static int clk_esdhc4_set_parent (struct clk *clk,struct clk *parent) +{ +u32 reg; + + reg =__raw_readl (MXC_CCM_CSCMR1 ); +if (parent == &esdhc1_clk) + reg &= ~MXC_CCM_CSCMR1_ESDHC4_CLK_SEL ; +else + reg |=MXC_CCM_CSCMR1_ESDHC4_CLK_SEL ;
ditto.
Quoted 61 lines
arch/arm/mach-mx5/clock-mx51-mx53.c +35
-0+__raw_writel (reg,MXC_CCM_CSCMR1 ); + +return 0 ; +} +#define DEFINE_CLOCK_FULL (name, i, er, es, gr, sr, e, d, p, s) \ static struct clk name = { \ .id = i, \@@ -1253,6 +1282,32 @@ DEFINE_CLOCK_FULL(esdhc2_ipg_clk, 1, MXC_CCM_CCGR3, MXC_CCM_CCGRx_CG2_OFFSET, NULL, NULL, _clk_max_enable, _clk_max_disable, &ipg_clk, NULL);DEFINE_CLOCK_MAX (esdhc2_clk,1 ,MXC_CCM_CCGR3 , MXC_CCM_CCGRx_CG3_OFFSET, clk_esdhc2, &pll2_sw_clk, &esdhc2_ipg_clk); +DEFINE_CLOCK_FULL (esdhc3_ipg_clk,2 ,MXC_CCM_CCGR3 , MXC_CCM_CCGRx_CG4_OFFSET, +NULL ,NULL , _clk_max_enable, _clk_max_disable, &ipg_clk,NULL ); +DEFINE_CLOCK_FULL (esdhc4_ipg_clk,3 ,MXC_CCM_CCGR3 , MXC_CCM_CCGRx_CG6_OFFSET, +NULL ,NULL , _clk_max_enable, _clk_max_disable, &ipg_clk,NULL ); + +static struct clk esdhc3_clk = { + .id =2 , + .parent = &esdhc1_clk, + .set_parent = clk_esdhc3_set_parent, + .enable_reg =MXC_CCM_CCGR3 , + .enable_shift = MXC_CCM_CCGRx_CG5_OFFSET, + .enable = _clk_max_enable, + .disable = _clk_max_disable, + .secondary = &esdhc3_ipg_clk, +}; + +static struct clk esdhc4_clk = { + .id =3 , + .parent = &esdhc1_clk, + .set_parent = clk_esdhc4_set_parent, + .enable_reg =MXC_CCM_CCGR3 , + .enable_shift = MXC_CCM_CCGRx_CG7_OFFSET, + .enable = _clk_max_enable, + .disable = _clk_max_disable, + .secondary = &esdhc4_ipg_clk, +};DEFINE_CLOCK (mipi_esc_clk,0 ,MXC_CCM_CCGR4 , MXC_CCM_CCGRx_CG5_OFFSET,NULL ,NULL ,NULL , &pll2_sw_clk);DEFINE_CLOCK (mipi_hsc2_clk,0 ,MXC_CCM_CCGR4 , MXC_CCM_CCGRx_CG4_OFFSET,NULL ,NULL , &mipi_esc_clk, &pll2_sw_clk);@@ -1312,6 +1367,8 @@ static struct clk_lookup mx51_lookups[] = { _REGISTER_CLOCK("imx51-cspi.0", NULL, cspi_clk) _REGISTER_CLOCK("sdhci-esdhc-imx.0", NULL, esdhc1_clk) _REGISTER_CLOCK("sdhci-esdhc-imx.1", NULL, esdhc2_clk) + _REGISTER_CLOCK("sdhci-esdhc-imx.2", NULL, esdhc3_clk) + _REGISTER_CLOCK("sdhci-esdhc-imx.3", NULL, esdhc4_clk) _REGISTER_CLOCK(NULL, "cpu_clk", cpu_clk) _REGISTER_CLOCK(NULL, "iim_clk", iim_clk)_REGISTER_CLOCK ("imx2-wdt.0" ,NULL , dummy_clk)@@ -1333,6 +1390,8 @@ static struct clk_lookup mx53_lookups[] = { _REGISTER_CLOCK("imx-i2c.1", NULL, i2c2_clk) _REGISTER_CLOCK("sdhci-esdhc-imx.0", NULL, esdhc1_clk) _REGISTER_CLOCK("sdhci-esdhc-imx.1", NULL, esdhc2_clk) + _REGISTER_CLOCK("sdhci-esdhc-imx.2", NULL, esdhc3_clk) + _REGISTER_CLOCK("sdhci-esdhc-imx.3", NULL, esdhc4_clk) _REGISTER_CLOCK("imx53-ecspi.0", NULL, ecspi1_clk) _REGISTER_CLOCK("imx53-ecspi.1", NULL, ecspi2_clk)_REGISTER_CLOCK ("imx53-cspi.0" ,NULL , cspi_clk)@@ -1412,6 +1471,14 @@ int __init mx53_clocks_init(unsigned long ckil, unsigned long osc, ckih2_reference = ckih2;
arch/arm/mach-mx5/clock-mx51-mx53.c int __init mx53_clocks_init(unsigned long ckil, unsigned long osc, · line 1481
Quoted 10 lines
arch/arm/mach-mx5/clock-mx51-mx53.c +8
-0oscillator_reference = osc; + esdhc2_clk.get_rate =NULL ; + esdhc2_clk.set_rate =NULL ; + esdhc2_clk.set_parent = clk_esdhc3_set_parent; + esdhc2_clk.parent = &esdhc1_clk; + esdhc3_clk.get_rate = clk_esdhc2_get_rate; + esdhc3_clk.set_rate = clk_esdhc2_set_rate; + esdhc3_clk.set_parent = clk_esdhc2_set_parent; +
This is just too confusing and will be hard to cleanup when we get clkops for i.MX. Please make SoC specific clocks from this and do not reassign the function pointers.
Sascha
Signature · 4 lines
Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
PATCH 2/5 ARM: imx51/53: add sdhc3/4 clock
Hi Sascha,
Quoted 19 lines · Sascha Hauer
Quoted 18 lines · Richard Zhao
Signed-off-by Richard Zhao <[email protected]>arch/arm/mach-mx5/clock-mx51-mx53.c +1
-0@@ -42,6 +42,7 @@ static struct clk usboh3_clk;static struct clk emi_fast_clk;static struct clk ipu_clk;static struct clk mipi_hsc1_clk; +static struct clk esdhc1_clk;#define MAX_DPLL_WAIT_TRIES 1000/* 1000 * udelay(1) = 1ms */ @@ -1147,6 +1148,34 @@ CLK_GET_RATE(esdhc2, 1, ESDHC2_MSHC2) CLK_SET_PARENT(esdhc2, 1, ESDHC2_MSHC2)CLK_SET_RATE (esdhc2,1 ,ESDHC2_MSHC2 )
Quoted 12 lines
arch/arm/mach-mx5/clock-mx51-mx53.c CLK_GET_RATE(esdhc2, 1, ESDHC2_MSHC2) · line 1159
Quoted 9 lines
arch/arm/mach-mx5/clock-mx51-mx53.c +9
-0+static int clk_esdhc3_set_parent (struct clk *clk,struct clk *parent) +{ +u32 reg; + + reg =__raw_readl (MXC_CCM_CSCMR1 ); +if (parent == &esdhc1_clk) + reg &= ~MXC_CCM_CSCMR1_ESDHC3_CLK_SEL ; +else + reg |=MXC_CCM_CSCMR1_ESDHC3_CLK_SEL ;parent !=
&esdhc1_clkdoesn't mean parent is a valid parent for this clock. Please do the parameter checking properly.
I can add a check here, but it will not share the same function between mx51 and mx53. for mx51, partents can be sdhc1_clk and sdhc2_clk, but for mx53, it can be sdhc1_clk and sdhc3_clk.
Quoted 81 lines
Quoted 5 lines
arch/arm/mach-mx5/clock-mx51-mx53.c +4
-0+__raw_writel (reg,MXC_CCM_CSCMR1 ); + +return 0 ; +}arch/arm/mach-mx5/clock-mx51-mx53.c CLK_GET_RATE(esdhc2, 1, ESDHC2_MSHC2) · line 1173
Quoted 10 lines
arch/arm/mach-mx5/clock-mx51-mx53.c +10
-0+ +static int clk_esdhc4_set_parent (struct clk *clk,struct clk *parent) +{ +u32 reg; + + reg =__raw_readl (MXC_CCM_CSCMR1 ); +if (parent == &esdhc1_clk) + reg &= ~MXC_CCM_CSCMR1_ESDHC4_CLK_SEL ; +else + reg |=MXC_CCM_CSCMR1_ESDHC4_CLK_SEL ;ditto.
Quoted 63 lines
arch/arm/mach-mx5/clock-mx51-mx53.c +35
-0+__raw_writel (reg,MXC_CCM_CSCMR1 ); + +return 0 ; +} +#define DEFINE_CLOCK_FULL (name, i, er, es, gr, sr, e, d, p, s) \ static struct clk name = { \ .id = i, \@@ -1253,6 +1282,32 @@ DEFINE_CLOCK_FULL(esdhc2_ipg_clk, 1, MXC_CCM_CCGR3, MXC_CCM_CCGRx_CG2_OFFSET, NULL, NULL, _clk_max_enable, _clk_max_disable, &ipg_clk, NULL);DEFINE_CLOCK_MAX (esdhc2_clk,1 ,MXC_CCM_CCGR3 , MXC_CCM_CCGRx_CG3_OFFSET, clk_esdhc2, &pll2_sw_clk, &esdhc2_ipg_clk); +DEFINE_CLOCK_FULL (esdhc3_ipg_clk,2 ,MXC_CCM_CCGR3 , MXC_CCM_CCGRx_CG4_OFFSET, +NULL ,NULL , _clk_max_enable, _clk_max_disable, &ipg_clk,NULL ); +DEFINE_CLOCK_FULL (esdhc4_ipg_clk,3 ,MXC_CCM_CCGR3 , MXC_CCM_CCGRx_CG6_OFFSET, +NULL ,NULL , _clk_max_enable, _clk_max_disable, &ipg_clk,NULL ); + +static struct clk esdhc3_clk = { + .id =2 , + .parent = &esdhc1_clk, + .set_parent = clk_esdhc3_set_parent, + .enable_reg =MXC_CCM_CCGR3 , + .enable_shift = MXC_CCM_CCGRx_CG5_OFFSET, + .enable = _clk_max_enable, + .disable = _clk_max_disable, + .secondary = &esdhc3_ipg_clk, +}; + +static struct clk esdhc4_clk = { + .id =3 , + .parent = &esdhc1_clk, + .set_parent = clk_esdhc4_set_parent, + .enable_reg =MXC_CCM_CCGR3 , + .enable_shift = MXC_CCM_CCGRx_CG7_OFFSET, + .enable = _clk_max_enable, + .disable = _clk_max_disable, + .secondary = &esdhc4_ipg_clk, +};DEFINE_CLOCK (mipi_esc_clk,0 ,MXC_CCM_CCGR4 , MXC_CCM_CCGRx_CG5_OFFSET,NULL ,NULL ,NULL , &pll2_sw_clk);DEFINE_CLOCK (mipi_hsc2_clk,0 ,MXC_CCM_CCGR4 , MXC_CCM_CCGRx_CG4_OFFSET,NULL ,NULL , &mipi_esc_clk, &pll2_sw_clk);@@ -1312,6 +1367,8 @@ static struct clk_lookup mx51_lookups[] = { _REGISTER_CLOCK("imx51-cspi.0", NULL, cspi_clk) _REGISTER_CLOCK("sdhci-esdhc-imx.0", NULL, esdhc1_clk) _REGISTER_CLOCK("sdhci-esdhc-imx.1", NULL, esdhc2_clk) + _REGISTER_CLOCK("sdhci-esdhc-imx.2", NULL, esdhc3_clk) + _REGISTER_CLOCK("sdhci-esdhc-imx.3", NULL, esdhc4_clk) _REGISTER_CLOCK(NULL, "cpu_clk", cpu_clk) _REGISTER_CLOCK(NULL, "iim_clk", iim_clk)_REGISTER_CLOCK ("imx2-wdt.0" ,NULL , dummy_clk)@@ -1333,6 +1390,8 @@ static struct clk_lookup mx53_lookups[] = { _REGISTER_CLOCK("imx-i2c.1", NULL, i2c2_clk) _REGISTER_CLOCK("sdhci-esdhc-imx.0", NULL, esdhc1_clk) _REGISTER_CLOCK("sdhci-esdhc-imx.1", NULL, esdhc2_clk) + _REGISTER_CLOCK("sdhci-esdhc-imx.2", NULL, esdhc3_clk) + _REGISTER_CLOCK("sdhci-esdhc-imx.3", NULL, esdhc4_clk) _REGISTER_CLOCK("imx53-ecspi.0", NULL, ecspi1_clk) _REGISTER_CLOCK("imx53-ecspi.1", NULL, ecspi2_clk)_REGISTER_CLOCK ("imx53-cspi.0" ,NULL , cspi_clk)@@ -1412,6 +1471,14 @@ int __init mx53_clocks_init(unsigned long ckil, unsigned long osc, ckih2_reference = ckih2; oscillator_reference = osc;
Quoted 12 lines
arch/arm/mach-mx5/clock-mx51-mx53.c int __init mx53_clocks_init(unsigned long ckil, unsigned long osc, · line 1481
Quoted 8 lines
arch/arm/mach-mx5/clock-mx51-mx53.c +8
-0+ esdhc2_clk.get_rate =NULL ; + esdhc2_clk.set_rate =NULL ; + esdhc2_clk.set_parent = clk_esdhc3_set_parent; + esdhc2_clk.parent = &esdhc1_clk; + esdhc3_clk.get_rate = clk_esdhc2_get_rate; + esdhc3_clk.set_rate = clk_esdhc2_set_rate; + esdhc3_clk.set_parent = clk_esdhc2_set_parent; +This is just too confusing and will be hard to cleanup when we get clkops for i.MX. Please make SoC specific clocks from this and do not reassign the function pointers.
ok.
Thanks
Richard
Quoted 10 lines
Sascha
Signature · 4 lines
Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
PATCH 3/5 ARM: imx53_loco: add esdhc device support
In reply to Richard Zhaoarch/arm/mach-mx5/Kconfig +1 -0
@@ -162,6 +162,7 @@ config MACH_MX53_LOCO select IMX_HAVE_PLATFORM_IMX2_WDT select IMX_HAVE_PLATFORM_IMX_I2C select IMX_HAVE_PLATFORM_IMX_UART + select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX help Include support for MX53 LOCO platform. This includes specific configurations for the board and its peripherals.
arch/arm/mach-mx5/board-mx53_loco.c +2 -0
@@ -213,6 +213,8 @@ static void __init mx53_loco_board_init(void)imx53_add_imx2_wdt (0 ,NULL );imx53_add_imx_i2c (0 , &mx53_loco_i2c_data);imx53_add_imx_i2c (1 , &mx53_loco_i2c_data); +imx53_add_sdhci_esdhc_imx (0 ,NULL ); +imx53_add_sdhci_esdhc_imx (2 ,NULL ); }static void __init mx53_loco_timer_init (void )
Signature · 1 line
1.7.1
PATCH 4/5 mm: sdhci-esdhc: remove SDHCI_QUIRK_NO_CARD_NO_RESET from ESDHC_DEFAULT_QUIRKS
In reply to Richard Zhaosdhci-esdhc-imx does not need SDHCI_QUIRK_NO_CARD_NO_RESET. Make it OF-specific.
drivers/mmc/host/sdhci-esdhc.h +1 -2
@@ -24,8 +24,7 @@ SDHCI_QUIRK_NONSTANDARD_CLOCK | \ SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK | \ SDHCI_QUIRK_PIO_NEEDS_DELAY | \ - SDHCI_QUIRK_RESTORE_IRQS_AFTER_RESET | \ - SDHCI_QUIRK_NO_CARD_NO_RESET) + SDHCI_QUIRK_RESTORE_IRQS_AFTER_RESET)#define ESDHC_SYSTEM_CONTROL 0x2c#define ESDHC_CLOCK_MASK 0x0000fff0
drivers/mmc/host/sdhci-of-esdhc.c +1 -1
@@ -73,7 +73,7 @@ static unsigned int esdhc_of_get_min_clock(struct sdhci_host *host) }struct sdhci_of_data sdhci_esdhc = { - .quirks =ESDHC_DEFAULT_QUIRKS , + .quirks =ESDHC_DEFAULT_QUIRKS |SDHCI_QUIRK_NO_CARD_NO_RESET , .ops = { .read_l = sdhci_be32bs_readl, .read_w = esdhc_readw,
Signature · 1 line
1.7.1
PATCH 4/5 mm: sdhci-esdhc: remove SDHCI_QUIRK_NO_CARD_NO_RESET from ESDHC_DEFAULT_QUIRKS
Quoted 2 lines · Richard Zhao
sdhci-esdhc-imx does not need
SDHCI_QUIRK_NO_CARD_NO_RESET. Make it OF-specific.
Just to make sure, because all the other patches are for mx53: Do you have tested it on mx25/35/51 also?
Regards,
Wolfram
Signature · 9 lines
Pengutronix e.K. | Wolfram Sang | Industrial Linux Solutions | http://www.pengutronix.de/ | -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 198 bytes Desc: Digital signature URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20110221/68f6d0be/attachment.sig>
PATCH 5/5 mmc: sdhci: add quirk SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO
In reply to Richard ZhaoFix no INT in MULTI-BLK IO.
drivers/mmc/host/sdhci-esdhc-imx.c +4 -1
@@ -113,7 +113,10 @@ static int esdhc_pltfm_init(struct sdhci_host *host, struct sdhci_pltfm_data *pdclk_enable (clk); pltfm_host->clk = clk; -if (cpu_is_mx35 () ||cpu_is_mx51 ()) +if (cpu_is_mx53 ()) + host->quirks |=SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO ; + +if (cpu_is_mx35 () ||cpu_is_mx51 () ||cpu_is_mx53 ()) host->quirks |=SDHCI_QUIRK_BROKEN_TIMEOUT_VAL ;/* Fix errata ENGcm07207 which is present on i.MX25 and i.MX35 */
drivers/mmc/host/sdhci.c +25 -0
@@ -828,6 +828,20 @@ static void sdhci_set_transfer_mode(struct sdhci_host *host, mode |=SDHCI_TRNS_MULTI |SDHCI_TRNS_ACMD12 ; else mode |= SDHCI_TRNS_MULTI; + +if (host->quirks &SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO ) { +/* +* Fix no INT bug in SDIO MULTI-BLK read +* set bit1 of Vendor Spec Registor +*/ +if ((host->cmd->opcode ==0x35 ) + && (data->flags &MMC_DATA_READ )) { +u32 v; + v =readl (host->ioaddr +SDHCI_VENDOR_SPEC ); + v |=0x2 ; +writel (v, host->ioaddr +SDHCI_VENDOR_SPEC ); + } + } }if (data->flags &MMC_DATA_READ ) mode |=SDHCI_TRNS_READ ;
@@ -868,6 +882,12 @@ static void sdhci_finish_data(struct sdhci_host *host)else data->bytes_xfered = data->blksz * data->blocks; +if (host->quirks &SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO ) { +if (readl (host->ioaddr +SDHCI_VENDOR_SPEC ) &0x2 ) +writel (readl (host->ioaddr +SDHCI_VENDOR_SPEC ) & ~0x2 , + host->ioaddr +SDHCI_VENDOR_SPEC ); + } +if (data->stop) {/* * The controller needs a reset of internal state machines
@@ -950,6 +970,11 @@ static void sdhci_send_command(struct sdhci_host *host, struct mmc_command *cmd)if (cmd->data) flags |=SDHCI_CMD_DATA ; +/*Set the CMD_TYPE of the CMD12, fix no INT in MULTI_BLK IO */ +if (host->quirks &SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO ) { +if (cmd->opcode ==12 ) + flags |=SDHCI_CMD_ABORTCMD ; + }sdhci_writew (host,SDHCI_MAKE_CMD (cmd->opcode, flags),SDHCI_COMMAND ); }
drivers/mmc/host/sdhci.h +3 -0
@@ -45,6 +45,7 @@#define SDHCI_CMD_CRC 0x08#define SDHCI_CMD_INDEX 0x10#define SDHCI_CMD_DATA 0x20 +#define SDHCI_CMD_ABORTCMD 0xC0#define SDHCI_CMD_RESP_NONE 0x00#define SDHCI_CMD_RESP_LONG 0x01
@@ -183,6 +184,8 @@/* 60-FB reserved */ +#define SDHCI_VENDOR_SPEC 0xC0 +#define SDHCI_SLOT_INT_STATUS 0xFC#define SDHCI_HOST_VERSION 0xFE
include/linux/mmc/sdhci.h +2 -0
@@ -85,6 +85,8 @@ struct sdhci_host {#define SDHCI_QUIRK_NO_HISPD_BIT (1<<29)/* Controller treats ADMA descriptors with length 0000h incorrectly */ #define SDHCI_QUIRK_BROKEN_ADMA_ZEROLEN_DESC (1<<30) +/* Controller can't come to the correct status in MULTI-BLK IO automatically */ +#define SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO (1<<31)int irq;/* Device IRQ */ void __iomem *ioaddr;/* Mapped address */
Signature · 1 line
1.7.1
PATCH 5/5 mmc: sdhci: add quirk SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO
Quoted 9 lines · Richard Zhao
Fix no INT in MULTI-BLK IO.
Signed-off-by Richard Zhu <[email protected]>drivers/mmc/host/sdhci-esdhc-imx.c +0
-0
drivers/mmc/host/sdhci-esdhc-imx.c static int esdhc_pltfm_init(struct sdhci_host *host, struct sdhci_pltfm_data *pd · line 117
Quoted 6 lines
drivers/mmc/host/sdhci-esdhc-imx.c +2
-1@@ -113,7 +113,10 @@ static int esdhc_pltfm_init(struct sdhci_host *host, struct sdhci_pltfm_data *pdclk_enable (clk); pltfm_host->clk = clk; -if (cpu_is_mx35 () ||cpu_is_mx51 ()) +if (cpu_is_mx53 ()) + host->quirks |=SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO ;
Have you tried it doing it via IO-accessors?
drivers/mmc/host/sdhci-esdhc-imx.c static int esdhc_pltfm_init(struct sdhci_host *host, struct sdhci_pltfm_data *pd · line 119
Quoted 1 line
drivers/mmc/host/sdhci-esdhc-imx.c +1
-0+if (cpu_is_mx35 () ||cpu_is_mx51 () ||cpu_is_mx53 ())
Maybe we should use !cpu_is_mx25 for simplicity?
Regards,
Wolfram
Signature · 9 lines
Pengutronix e.K. | Wolfram Sang | Industrial Linux Solutions | http://www.pengutronix.de/ | -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 198 bytes Desc: Digital signature URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20110221/41168972/attachment.sig>
PATCH 5/5 mmc: sdhci: add quirk SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO
Hi Wolfsang:
See my comments marked by Richard Zhu below.
Best Regards
Richard Zhu
Quoted 23 lines
-----Original Message-----
From: Wolfram Sang [mailto:w.sang at pengutronix.de]
Sent: Monday, February 21, 2011 6:05 PM
To: Zhao Richard-B20223
Cc: linux-arm-kernel at lists.infradead.org; kernel at pengutronix.de; linux- mmc at vger.kernel.org; cjb at laptop.org; avorontsov at ru.mvista.com; eric at eukrea.com; linuxzsc at gmail.com; Zhu Richard-R65037; Zhu Richard- R65037
Subject: Re: [PATCH 5/5] mmc: sdhci: add quirkSDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IOReview
Quoted 5 lines · Richard Zhao
Fix no INT in MULTI-BLK IO.
Signed-off-by Richard Zhu <[email protected]>(quoted diff) +0
-0
b/drivers/mmc/host/sdhci-esdhc-imx.cdrivers/mmc/host/sdhci-esdhc-imx.c static int esdhc_pltfm_init(struct sdhci_host
Quoted 4 lines
index 9b82910..2eeb03e 100644
drivers/mmc/host/sdhci-esdhc-imx.c +0
-0@@ -113,7 +113,10 @@ static int esdhc_pltfm_init(struct sdhci_host*host, struct
sdhci_pltfm_data*pd
Quoted 8 lines
drivers/mmc/host/sdhci-esdhc-imx.c static int esdhc_pltfm_init(struct sdhci_host *host, struct sdhci_pltfm_data *pd · line 117
Quoted 6 lines
drivers/mmc/host/sdhci-esdhc-imx.c +2
-1clk_enable (clk); pltfm_host->clk = clk; -if (cpu_is_mx35 () ||cpu_is_mx51 ()) +if (cpu_is_mx53 ()) + host->quirks |=SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO ;Have you tried it doing it via IO-accessors?
Richard Zhu: This quirk is used to fix a mechanism problem in the MMC CMDs execution procedure. It would be very abrupt and ugly, if the IO-accessors are added into these original procedures. So one quirk is used here, and used to fix two different case.
One is multi-blk read in SDIO mode, the other is the Mult-blk read/write in mass storage mode.
Quoted 4 lines
drivers/mmc/host/sdhci-esdhc-imx.c static int esdhc_pltfm_init(struct sdhci_host *host, struct sdhci_pltfm_data *pd · line 119
Quoted 2 lines
drivers/mmc/host/sdhci-esdhc-imx.c +1
-0+if (cpu_is_mx35 () ||cpu_is_mx51 () ||cpu_is_mx53 ())Maybe we should use !cpu_is_mx25 for simplicity?
Richard Zhu: Accepted.
Quoted 10 lines
Regards,
Wolfram
--
Pengutronix e.K. | Wolfram Sang
|
Industrial Linux Solutions | http://www.pengutronix.de/
|
PATCH 5/5 mmc: sdhci: add quirk SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO
Quoted 7 lines
Quoted 5 lines
drivers/mmc/host/sdhci-esdhc-imx.c static int esdhc_pltfm_init(struct sdhci_host *host, struct sdhci_pltfm_data *pd · line 117
Quoted 3 lines
drivers/mmc/host/sdhci-esdhc-imx.c +2
-1-if (cpu_is_mx35 () ||cpu_is_mx51 ()) +if (cpu_is_mx53 ()) + host->quirks |=SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO ;Have you tried it doing it via IO-accessors?
Richard Zhu: This quirk is used to fix a mechanism problem in the MMC CMDs execution procedure. It would be very abrupt and ugly, if the IO-accessors are added into these original procedures.
Please don't get it personal, but IMHO it is pretty ugly the way it is now. This quirk is very imx-specific and calling something like SDHCI_VENDOR_SPEC in sdhci.c looks clearly wrong to me. By the way, what does this bit do, the description doesn't say so?
Regards,
Wolfram
Signature · 9 lines
Pengutronix e.K. | Wolfram Sang | Industrial Linux Solutions | http://www.pengutronix.de/ | -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 198 bytes Desc: Digital signature URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20110221/2393fe81/attachment.sig>
PATCH 5/5 mmc: sdhci: add quirk SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO
Quoted 4 lines · Wolfram Sang
Quoted 4 lines
Quoted 4 lines
Quoted 3 lines
drivers/mmc/host/sdhci-esdhc-imx.c +2
-1-if (cpu_is_mx35 () ||cpu_is_mx51 ()) +if (cpu_is_mx53 ()) + host->quirks |=SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO ;
Quoted 8 lines
Quoted 3 lines
Quoted 1 line
Have you tried it doing it via IO-accessors?
Richard Zhu: This quirk is used to fix a mechanism problem in the MMC CMDs execution procedure. It would be very abrupt and ugly, if the IO-accessors are added into these original procedures.
Please don't get it personal, but IMHO it is pretty ugly the way it is now. This quirk is very imx-specific and calling something like
SDHCI_VENDOR_SPECinsdhci.clooks clearly wrong to me. By the way, what does this bit do, the description doesn't say so?
SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO is rather too verbose. Isn't there a shorter version which could be used? SDHCI_QUIRK_SDIO_MULTIBLK_INT maybe?
PATCH 5/5 mmc: sdhci: add quirk SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO
Quoted 9 lines · Russell King - ARM Linux
Quoted 8 lines · Wolfram Sang
Quoted 7 lines
Quoted 5 lines
drivers/mmc/host/sdhci-esdhc-imx.c static int esdhc_pltfm_init(struct sdhci_host *host, struct sdhci_pltfm_data *pd · line 117
Quoted 3 lines
drivers/mmc/host/sdhci-esdhc-imx.c +2
-1-if (cpu_is_mx35 () ||cpu_is_mx51 ()) +if (cpu_is_mx53 ()) + host->quirks |=SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO ;Have you tried it doing it via IO-accessors?
Richard Zhu: This quirk is used to fix a mechanism problem in the MMC CMDs execution procedure. It would be very abrupt and ugly, if the IO-accessors are added into these original procedures.
Quoted 8 lines
Quoted 4 lines
Please don't get it personal, but IMHO it is pretty ugly the way it is now. This quirk is very imx-specific and calling something like
SDHCI_VENDOR_SPECinsdhci.clooks clearly wrong to me. By the way, what does this bit do, the description doesn't say so?
SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IOis rather too verbose. Isn't there a shorter version which could be used?SDHCI_QUIRK_SDIO_MULTIBLK_INTmaybe?
As I understand, the non-SDIO part is handled here:
+ /*Set the CMD_TYPE of the CMD12, fix no INT in MULTI_BLK IO */
+ if (host->quirks & SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO) {
+ if (cmd->opcode == 12)
+ flags |= SDHCI_CMD_ABORTCMD;
+ }
But I'd really like to avoid the quirk bit. Maybe we'll get a better idea once we understand what that magic bit actually does. For a start, we might simply set SDHCI_QUIRK_NO_MULTIBLOCK for mx53 like we do for other imx.
Regards,
Wolfram
Signature · 9 lines
Pengutronix e.K. | Wolfram Sang | Industrial Linux Solutions | http://www.pengutronix.de/ | -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 198 bytes Desc: Digital signature URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20110221/d80aa342/attachment.sig>
PATCH 5/5 mmc: sdhci: add quirk SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO
Hi Wolfsang:
Maybe I don't describe my thoughts clearly and exactly.
I feel it's not easy to add the the IO-accessors in every cmd execution procedure, to make a double check why a IO-accessor is needed or not.
Best Regards
Richard Zhu
Quoted 29 lines
-----Original Message-----
From: Wolfram Sang [mailto:w.sang at pengutronix.de]
Sent: Monday, February 21, 2011 7:16 PM
To: Russell King - ARM Linux
Cc: Zhu Richard-R65037; Zhao Richard-B20223; cjb at laptop.org; eric at eukrea.com; linux-mmc at vger.kernel.org; kernel at pengutronix.de; avorontsov at ru.mvista.com; linux-arm-kernel at lists.infradead.org; linuxzsc at gmail.com
Subject: Re: [PATCH 5/5] mmc: sdhci: add quirkSDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IOQuoted 8 lines · Russell King - ARM Linux
Quoted 7 lines · Wolfram Sang
Quoted 7 lines
Quoted 6 lines
drivers/mmc/host/sdhci-esdhc-imx.c static int esdhc_pltfm_init(struct sdhci_host *host, struct sdhci_pltfm_data *pd
Quoted 4 lines
drivers/mmc/host/sdhci-esdhc-imx.c +3
-1-if (cpu_is_mx35 () ||cpu_is_mx51 ()) +if (cpu_is_mx53 ()) + host->quirks |= +SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO ;Have you tried it doing it via IO-accessors?
Richard Zhu: This quirk is used to fix a mechanism problem in the
MMC CMDs execution procedure.
Quoted 1 line
Quoted 1 line
Quoted 1 line
It would be very abrupt and ugly, if the IO-accessors are added
into these original procedures.
Quoted 6 lines
Quoted 5 lines
Please don't get it personal, but IMHO it is pretty ugly the way it is now. This quirk is very imx-specific and calling something like
SDHCI_VENDOR_SPECinsdhci.clooks clearly wrong to me. By the way, what does this bit do, the description doesn't say so?
Quoted 5 lines
Quoted 3 lines
SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IOis rather too verbose. Isn't there a shorter version which could be used?SDHCI_QUIRK_SDIO_MULTIBLK_INTmaybe?As I understand, the non-SDIO part is handled here:
Yes, it is. The following codes are used to solve non-sdio part.
That bit is introduced by imx53 latest spec.
I think so too that the SDHCI_VENDOR_SPEC shouldn't be used in sdhci.c file, but
I don't have better idea to fix the issue in this situation.
Option:
Make a double check when issue every MMC CMD, to figure out whether a IO-accessor is needed or not? Two checkpoints would be needed, one is in the sdhci_send_command function, the other should be in sdhci_data_finish func. How do you think this method?
Quoted 11 lines
drivers/mmc/host/sdhci.c +5
-0+/*Set the CMD_TYPE of the CMD12, fix no INT in MULTI_BLK IO */ +if (host->quirks &SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO ) { +if (cmd->opcode ==12 ) + flags |=SDHCI_CMD_ABORTCMD ; + }But I'd really like to avoid the quirk bit. Maybe we'll get a better idea once we understand what that magic bit actually does. For a start, we might simply set
SDHCI_QUIRK_NO_MULTIBLOCKfor mx53 like we do for other imx.
As I know that, this bit is used to make the machine stat of the eSDHC IC to be a correct stat after SDIO Multi-Read.
Quoted 10 lines
Regards,
Wolfram
--
Pengutronix e.K. | Wolfram Sang
|
Industrial Linux Solutions | http://www.pengutronix.de/
|
PATCH 5/5 mmc: sdhci: add quirk SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO
In reply to Wolfram SangHi WolfSang:
I mis-understand your meaning of the IO-Accessors.
It maybe work when the IO-Accessors are used.
Wait a minute, I would resend the patches use he IO-Accessors methods.
Best Regards
Richard Zhu
Quoted 89 lines
-----Original Message-----
From: Zhu Richard-R65037
Sent: Tuesday, February 22, 2011 10:22 AM
To: 'Wolfram Sang'; Russell King - ARM Linux
Cc: Zhao Richard-B20223; cjb at laptop.org; eric at eukrea.com; linux- mmc at vger.kernel.org; kernel at pengutronix.de; avorontsov at ru.mvista.com; linux-arm-kernel at lists.infradead.org; linuxzsc at gmail.com
Subject: RE: [PATCH 5/5] mmc: sdhci: add quirkSDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IOHi Wolfsang:
Maybe I don't describe my thoughts clearly and exactly.
I feel it's not easy to add the the IO-accessors in every cmd execution procedure, to make a double check why a IO-accessor is needed or not.Best Regards
Richard ZhuQuoted 12 lines
-----Original Message-----
From: Wolfram Sang [mailto:w.sang at pengutronix.de]
Sent: Monday, February 21, 2011 7:16 PM
To: Russell King - ARM Linux
Cc: Zhu Richard-R65037; Zhao Richard-B20223; cjb at laptop.org; eric at eukrea.com; linux-mmc at vger.kernel.org; kernel at pengutronix.de; avorontsov at ru.mvista.com; linux-arm-kernel at lists.infradead.org; linuxzsc at gmail.com
Subject: Re: [PATCH 5/5] mmc: sdhci: add quirkSDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IOOn Mon, Feb 21, 2011 at 11:09:05AM +0000, Russell King - ARM Linux
Quoted 18 lines · wrote:
Quoted 9 lines · Wolfram Sang
Quoted 8 lines
Quoted 8 lines
Quoted 6 lines
drivers/mmc/host/sdhci-esdhc-imx.c static int esdhc_pltfm_init(struct sdhci_host *host, struct sdhci_pltfm_data *pd
Quoted 4 lines
drivers/mmc/host/sdhci-esdhc-imx.c +3
-1-if (cpu_is_mx35 () ||cpu_is_mx51 ()) +if (cpu_is_mx53 ()) + host->quirks |= +SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO ;Have you tried it doing it via IO-accessors?
Richard Zhu: This quirk is used to fix a mechanism problem in the
MMC CMDs execution procedure.
Quoted 1 line
Quoted 1 line
Quoted 1 line
It would be very abrupt and ugly, if the IO-accessors are added
into these original procedures.
Quoted 6 lines
Quoted 5 lines
Please don't get it personal, but IMHO it is pretty ugly the way it is now. This quirk is very imx-specific and calling something like
SDHCI_VENDOR_SPECinsdhci.clooks clearly wrong to me. By the way, what does this bit do, the description doesn't say so?Quoted 5 lines
Quoted 3 lines
SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IOis rather too verbose. Isn't there a shorter version which could be used?SDHCI_QUIRK_SDIO_MULTIBLK_INTmaybe?As I understand, the non-SDIO part is handled here:
Yes, it is. The following codes are used to solve non-sdio part. That bit is introduced by imx53 latest spec.
I think so too that theSDHCI_VENDOR_SPECshouldn't be used insdhci.cfile, but I don't have better idea to fix the issue in this situation. Option:
Make a double check when issue every MMC CMD, to figure out whether a IO- accessor is needed or not?
Two checkpoints would be needed, one is in thesdhci_send_commandfunction, the other should be insdhci_data_finishfunc.
How do you think this method?Quoted 11 lines
drivers/mmc/host/sdhci.c +5
-0+/*Set the CMD_TYPE of the CMD12, fix no INT in MULTI_BLK IO */ +if (host->quirks &SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO ) { +if (cmd->opcode ==12 ) + flags |=SDHCI_CMD_ABORTCMD ; + }But I'd really like to avoid the quirk bit. Maybe we'll get a better idea once we understand what that magic bit actually does. For a start, we might simply set
SDHCI_QUIRK_NO_MULTIBLOCKfor mx53 like we do for other imx.As I know that, this bit is used to make the machine stat of the eSDHC IC to be a correct stat after SDIO Multi-Read.
Quoted 10 lines
Regards,
Wolfram
--
Pengutronix e.K. | Wolfram Sang
|
Industrial Linux Solutions | http://www.pengutronix.de/
|
PATCH 5/5 mmc: sdhci: add quirk SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO
In reply to Russell King - ARM LinuxHi Russell King:
Thanks for your comments firstly.
Best Regards
Richard Zhu
Quoted 23 lines
-----Original Message-----
From: Russell King - ARM Linux [mailto:linux at arm.linux.org.uk]
Sent: Monday, February 21, 2011 7:09 PM
To: Wolfram Sang
Cc: Zhu Richard-R65037; Zhao Richard-B20223; cjb at laptop.org; eric at eukrea.com; linux-mmc at vger.kernel.org; kernel at pengutronix.de; avorontsov at ru.mvista.com; linux-arm-kernel at lists.infradead.org; linuxzsc at gmail.com
Subject: Re: [PATCH 5/5] mmc: sdhci: add quirkSDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IOQuoted 7 lines · Wolfram Sang
Quoted 7 lines
Quoted 6 lines
drivers/mmc/host/sdhci-esdhc-imx.c static int esdhc_pltfm_init(struct sdhci_host *host, struct sdhci_pltfm_data *pd
Quoted 4 lines
drivers/mmc/host/sdhci-esdhc-imx.c +3
-1-if (cpu_is_mx35 () ||cpu_is_mx51 ()) +if (cpu_is_mx53 ()) + host->quirks |= +SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO ;Have you tried it doing it via IO-accessors?
Richard Zhu: This quirk is used to fix a mechanism problem in the MMC
CMDs execution procedure.
Quoted 1 line
Quoted 1 line
It would be very abrupt and ugly, if the IO-accessors are added into
these original procedures.
Quoted 1 line
Quoted 8 lines
Quoted 4 lines
Please don't get it personal, but IMHO it is pretty ugly the way it is now. This quirk is very imx-specific and calling something like
SDHCI_VENDOR_SPECinsdhci.clooks clearly wrong to me. By the way, what does this bit do, the description doesn't say so?
SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IOis rather too verbose. Isn't there a shorter version which could be used?SDHCI_QUIRK_SDIO_MULTIBLK_INTmaybe?
Yeah, I agree, the clear and shorter is better.
I'm discussing with WolfSang that this quirk should be added or not. First of all, we should make a decision that this quirk is needed or not. Then we can refine it.
PATCH 5/5 mmc: sdhci: add quirk SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO
In reply to Richard Zhaodrivers/mmc/host/sdhci.c static void sdhci_finish_data(struct sdhci_host *host) · line 888
Quoted 4 lines · Richard Zhao
drivers/mmc/host/sdhci.c +4
-0+if (host->quirks &SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO ) { +if (readl (host->ioaddr +SDHCI_VENDOR_SPEC ) &0x2 ) +writel (readl (host->ioaddr +SDHCI_VENDOR_SPEC ) & ~0x2 , + host->ioaddr +SDHCI_VENDOR_SPEC );
Is it necessary to read the register twice, or would:
u32 val = readl(host->ioaddr + SDHCI_VENDOR_SPEC); if (val & 0x02) writel(val & ~0x02, host->ioaddr + SDHCI_VENDOR_SPEC);
be clearer and more obvious?
PATCH 5/5 mmc: sdhci: add quirk SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO
Quoted 8 lines · Russell King - ARM Linux
drivers/mmc/host/sdhci.c static void sdhci_finish_data(struct sdhci_host *host) · line 888
Quoted 4 lines · Richard Zhao
drivers/mmc/host/sdhci.c +4
-0+if (host->quirks &SDHCI_QUIRK_FIX_NO_INT_IN_MULTI_BLK_IO ) { +if (readl (host->ioaddr +SDHCI_VENDOR_SPEC ) &0x2 ) +writel (readl (host->ioaddr +SDHCI_VENDOR_SPEC ) & ~0x2 , + host->ioaddr +SDHCI_VENDOR_SPEC );Is it necessary to read the register twice, or would:
Quoted 5 lines
u32 val = readl(host->ioaddr + SDHCI_VENDOR_SPEC); if (val & 0x02) writel(val & ~0x02, host->ioaddr + SDHCI_VENDOR_SPEC);be clearer and more obvious?
correct. Thanks.
Richard
Quoted 5 lines
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel