[U-Boot] [PATCH] MX3: make additional hardware and clocks available
Helmut Raiger
helmut.raiger at hale.at
Thu Jun 9 10:58:33 CEST 2011
This patch is in preparation for the contribution of our board support.
More to follow ...
diff --git a/arch/arm/cpu/arm1136/mx31/devices.c
b/arch/arm/cpu/arm1136/mx31/devices.c
index 1e7d48f..ace48f4 100644
--- a/arch/arm/cpu/arm1136/mx31/devices.c
+++ b/arch/arm/cpu/arm1136/mx31/devices.c
@@ -38,7 +38,21 @@ void mx31_uart1_hw_init(void)
}
#endif
+#ifdef CONFIG_SYS_MX31_UART2
+void mx31_uart2_hw_init(void)
+{
+ /* setup pins for UART2 */
+ mx31_gpio_mux(MUX_RXD2__UART2_RXD_MUX);
+ mx31_gpio_mux(MUX_TXD2__UART2_TXD_MUX);
+ mx31_gpio_mux(MUX_RTS2__UART2_RTS_B);
+ mx31_gpio_mux(MUX_CTS2__UART2_CTS_B);
+}
+#endif
+
#ifdef CONFIG_MXC_SPI
+/* note: putting several spi setups here makes no sense as they may differ
+ * at board level (physical pin SS0 of CSPI2 may aswell be used as SS0
of CSPI3)
+ */
void mx31_spi2_hw_init(void)
{
/* SPI2 */
diff --git a/arch/arm/cpu/arm1136/mx31/generic.c
b/arch/arm/cpu/arm1136/mx31/generic.c
index 4ebf38d..92dd8d6 100644
--- a/arch/arm/cpu/arm1136/mx31/generic.c
+++ b/arch/arm/cpu/arm1136/mx31/generic.c
@@ -71,6 +71,18 @@ u32 mx31_get_ipg_clk(void)
return freq;
}
+/* hsp is the clock for the ipu */
+u32 mx31_get_hsp_clk(void)
+{
+ u32 freq = mx31_get_mcu_main_clk();
+ u32 pdr0 = __REG(CCM_PDR0);
+
+ /* divided by HSP_PODF in PDR0 */
+ freq /= ((pdr0 >> 11) & 0x7) + 1;
+
+ return freq;
+}
+
void mx31_dump_clocks(void)
{
u32 cpufreq = mx31_get_mcu_main_clk();
diff --git a/arch/arm/include/asm/arch-mx31/clock.h
b/arch/arm/include/asm/arch-mx31/clock.h
old mode 100644
new mode 100755
index 9f7ae80..980bec1
--- a/arch/arm/include/asm/arch-mx31/clock.h
+++ b/arch/arm/include/asm/arch-mx31/clock.h
@@ -26,10 +26,11 @@
extern u32 mx31_get_ipg_clk(void);
#define imx_get_uartclk mx31_get_ipg_clk
+extern u32 mx31_get_hsp_clk(void);
extern void mx31_gpio_mux(unsigned long mode);
extern void mx31_set_pad(enum iomux_pins pin, u32 config);
-
void mx31_uart1_hw_init(void);
+void mx31_uart2_hw_init(void);
void mx31_spi2_hw_init(void);
void mxc_hw_watchdog_enable(void);
void mxc_hw_watchdog_reset(void);
diff --git a/arch/arm/include/asm/arch-mx31/imx-regs.h
b/arch/arm/include/asm/arch-mx31/imx-regs.h
old mode 100644
new mode 100755
index 306f966..af163cd
--- a/arch/arm/include/asm/arch-mx31/imx-regs.h
+++ b/arch/arm/include/asm/arch-mx31/imx-regs.h
@@ -604,12 +604,41 @@ enum iomux_pins {
/* Register offsets based on IOMUXC_BASE */
/* 0x00 .. 0x7b */
+#define MUX_CTL_CSPI3_MISO 0x0c
+#define MUX_CTL_CSPI3_SCLK 0x0d
+#define MUX_CTL_CSPI3_SPI_RDY 0x0e
+#define MUX_CTL_TTM_PAD 0x0f
+#define MUX_CTL_ATA_RESET_B 0x10
+#define MUX_CTL_CE_CONTROL 0x11
+#define MUX_CTL_CLKSS 0x12
+#define MUX_CTL_CSPI3_MOSI 0x13
+
+#define MUX_CTL_SD1_DATA1 0x18
+#define MUX_CTL_SD1_DATA2 0x19
+#define MUX_CTL_SD1_DATA3 0x1a
+#define MUX_CTL_SD1_CMD 0x1d
+#define MUX_CTL_SD1_CLK 0x1e
+#define MUX_CTL_SD1_DATA0 0x1f
+
#define MUX_CTL_USBH2_DATA1 0x40
#define MUX_CTL_USBH2_DIR 0x44
#define MUX_CTL_USBH2_STP 0x45
#define MUX_CTL_USBH2_NXT 0x46
#define MUX_CTL_USBH2_DATA0 0x47
#define MUX_CTL_USBH2_CLK 0x4B
+
+#define MUX_CTL_TXD2 0x70
+#define MUX_CTL_RTS2 0x71
+#define MUX_CTL_CTS2 0x72
+#define MUX_CTL_BATT_LINE 0x73
+#define MUX_CTL_RI_DTE1 0x74
+#define MUX_CTL_DCD_DTE1 0x75
+#define MUX_CTL_DTR_DCE2 0x76
+#define MUX_CTL_RXD2 0x77
+#define MUX_CTL_RI_DCE1 0x78
+#define MUX_CTL_DCD_DCE1 0x79
+#define MUX_CTL_DTR_DTE1 0x7a
+#define MUX_CTL_DSR_DTE1 0x7b
#define MUX_CTL_RTS1 0x7c
#define MUX_CTL_CTS1 0x7d
#define MUX_CTL_DTR_DCE1 0x7e
@@ -667,6 +696,11 @@ enum iomux_pins {
#define MUX_RTS1__UART1_RTS_B IOMUX_MODE(MUX_CTL_RTS1, MUX_CTL_FUNC)
#define MUX_CTS1__UART1_CTS_B IOMUX_MODE(MUX_CTL_CTS1, MUX_CTL_FUNC)
+#define MUX_RXD2__UART2_RXD_MUX IOMUX_MODE(MUX_CTL_RXD2, MUX_CTL_FUNC)
+#define MUX_TXD2__UART2_TXD_MUX IOMUX_MODE(MUX_CTL_TXD2, MUX_CTL_FUNC)
+#define MUX_RTS2__UART2_RTS_B IOMUX_MODE(MUX_CTL_RTS2, MUX_CTL_FUNC)
+#define MUX_CTS2__UART2_CTS_B IOMUX_MODE(MUX_CTL_CTS2, MUX_CTL_FUNC)
+
#define MUX_CSPI2_SS0__CSPI2_SS0_B IOMUX_MODE(MUX_CTL_CSPI2_SS0,
MUX_CTL_FUNC)
#define MUX_CSPI2_SS1__CSPI2_SS1_B IOMUX_MODE(MUX_CTL_CSPI2_SS1,
MUX_CTL_FUNC)
#define MUX_CSPI2_SS2__CSPI2_SS2_B IOMUX_MODE(MUX_CTL_CSPI2_SS2,
MUX_CTL_FUNC)
@@ -739,6 +773,10 @@ enum iomux_pins {
*/
#define NFC_BASE_ADDR 0xB8000000
+/* SD card controller */
+#define SDHC1_BASE_ADDR 0x50004000
+#define SDHC2_BASE_ADDR 0x50008000
+
/*
* Internal RAM (16KB)
*/
diff --git a/include/fsl_pmic.h b/include/fsl_pmic.h
old mode 100644
new mode 100755
index e3abde6..e0ef810
--- a/include/fsl_pmic.h
+++ b/include/fsl_pmic.h
@@ -121,6 +121,8 @@ enum {
/* Interrupt status 1 */
#define RTCRSTI (1 << 7)
+struct spi_slave *pmic_spi_probe(void);
+void pmic_spi_free(struct spi_slave *slave);
void pmic_show_pmic_info(void);
void pmic_reg_write(u32 reg, u32 value);
u32 pmic_reg_read(u32 reg);
--
Scanned by MailScanner.
More information about the U-Boot
mailing list