|
@@ -413,3 +413,169 @@ static struct arm_idlect1_clk lcd_ck_1510 = {
|
|
* XXX The enable_bit here is misused - it simply switches between 12MHz
|
|
* XXX The enable_bit here is misused - it simply switches between 12MHz
|
|
* and 48MHz. Reimplement with clksel.
|
|
* and 48MHz. Reimplement with clksel.
|
|
*
|
|
*
|
|
|
|
+ * XXX does this need SYSC register handling?
|
|
|
|
+ */
|
|
|
|
+static struct clk uart1_1510 = {
|
|
|
|
+ .name = "uart1_ck",
|
|
|
|
+ .ops = &clkops_null,
|
|
|
|
+ /* Direct from ULPD, no real parent */
|
|
|
|
+ .parent = &armper_ck.clk,
|
|
|
|
+ .rate = 12000000,
|
|
|
|
+ .flags = ENABLE_REG_32BIT | CLOCK_NO_IDLE_PARENT,
|
|
|
|
+ .enable_reg = OMAP1_IO_ADDRESS(MOD_CONF_CTRL_0),
|
|
|
|
+ .enable_bit = CONF_MOD_UART1_CLK_MODE_R,
|
|
|
|
+ .set_rate = &omap1_set_uart_rate,
|
|
|
|
+ .recalc = &omap1_uart_recalc,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * XXX The enable_bit here is misused - it simply switches between 12MHz
|
|
|
|
+ * and 48MHz. Reimplement with clksel.
|
|
|
|
+ *
|
|
|
|
+ * XXX SYSC register handling does not belong in the clock framework
|
|
|
|
+ */
|
|
|
|
+static struct uart_clk uart1_16xx = {
|
|
|
|
+ .clk = {
|
|
|
|
+ .name = "uart1_ck",
|
|
|
|
+ .ops = &clkops_uart_16xx,
|
|
|
|
+ /* Direct from ULPD, no real parent */
|
|
|
|
+ .parent = &armper_ck.clk,
|
|
|
|
+ .rate = 48000000,
|
|
|
|
+ .flags = ENABLE_REG_32BIT | CLOCK_NO_IDLE_PARENT,
|
|
|
|
+ .enable_reg = OMAP1_IO_ADDRESS(MOD_CONF_CTRL_0),
|
|
|
|
+ .enable_bit = CONF_MOD_UART1_CLK_MODE_R,
|
|
|
|
+ },
|
|
|
|
+ .sysc_addr = 0xfffb0054,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * XXX The enable_bit here is misused - it simply switches between 12MHz
|
|
|
|
+ * and 48MHz. Reimplement with clksel.
|
|
|
|
+ *
|
|
|
|
+ * XXX does this need SYSC register handling?
|
|
|
|
+ */
|
|
|
|
+static struct clk uart2_ck = {
|
|
|
|
+ .name = "uart2_ck",
|
|
|
|
+ .ops = &clkops_null,
|
|
|
|
+ /* Direct from ULPD, no real parent */
|
|
|
|
+ .parent = &armper_ck.clk,
|
|
|
|
+ .rate = 12000000,
|
|
|
|
+ .flags = ENABLE_REG_32BIT | CLOCK_NO_IDLE_PARENT,
|
|
|
|
+ .enable_reg = OMAP1_IO_ADDRESS(MOD_CONF_CTRL_0),
|
|
|
|
+ .enable_bit = CONF_MOD_UART2_CLK_MODE_R,
|
|
|
|
+ .set_rate = &omap1_set_uart_rate,
|
|
|
|
+ .recalc = &omap1_uart_recalc,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * XXX The enable_bit here is misused - it simply switches between 12MHz
|
|
|
|
+ * and 48MHz. Reimplement with clksel.
|
|
|
|
+ *
|
|
|
|
+ * XXX does this need SYSC register handling?
|
|
|
|
+ */
|
|
|
|
+static struct clk uart3_1510 = {
|
|
|
|
+ .name = "uart3_ck",
|
|
|
|
+ .ops = &clkops_null,
|
|
|
|
+ /* Direct from ULPD, no real parent */
|
|
|
|
+ .parent = &armper_ck.clk,
|
|
|
|
+ .rate = 12000000,
|
|
|
|
+ .flags = ENABLE_REG_32BIT | CLOCK_NO_IDLE_PARENT,
|
|
|
|
+ .enable_reg = OMAP1_IO_ADDRESS(MOD_CONF_CTRL_0),
|
|
|
|
+ .enable_bit = CONF_MOD_UART3_CLK_MODE_R,
|
|
|
|
+ .set_rate = &omap1_set_uart_rate,
|
|
|
|
+ .recalc = &omap1_uart_recalc,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * XXX The enable_bit here is misused - it simply switches between 12MHz
|
|
|
|
+ * and 48MHz. Reimplement with clksel.
|
|
|
|
+ *
|
|
|
|
+ * XXX SYSC register handling does not belong in the clock framework
|
|
|
|
+ */
|
|
|
|
+static struct uart_clk uart3_16xx = {
|
|
|
|
+ .clk = {
|
|
|
|
+ .name = "uart3_ck",
|
|
|
|
+ .ops = &clkops_uart_16xx,
|
|
|
|
+ /* Direct from ULPD, no real parent */
|
|
|
|
+ .parent = &armper_ck.clk,
|
|
|
|
+ .rate = 48000000,
|
|
|
|
+ .flags = ENABLE_REG_32BIT | CLOCK_NO_IDLE_PARENT,
|
|
|
|
+ .enable_reg = OMAP1_IO_ADDRESS(MOD_CONF_CTRL_0),
|
|
|
|
+ .enable_bit = CONF_MOD_UART3_CLK_MODE_R,
|
|
|
|
+ },
|
|
|
|
+ .sysc_addr = 0xfffb9854,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk usb_clko = { /* 6 MHz output on W4_USB_CLKO */
|
|
|
|
+ .name = "usb_clko",
|
|
|
|
+ .ops = &clkops_generic,
|
|
|
|
+ /* Direct from ULPD, no parent */
|
|
|
|
+ .rate = 6000000,
|
|
|
|
+ .flags = ENABLE_REG_32BIT,
|
|
|
|
+ .enable_reg = OMAP1_IO_ADDRESS(ULPD_CLOCK_CTRL),
|
|
|
|
+ .enable_bit = USB_MCLK_EN_BIT,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk usb_hhc_ck1510 = {
|
|
|
|
+ .name = "usb_hhc_ck",
|
|
|
|
+ .ops = &clkops_generic,
|
|
|
|
+ /* Direct from ULPD, no parent */
|
|
|
|
+ .rate = 48000000, /* Actually 2 clocks, 12MHz and 48MHz */
|
|
|
|
+ .flags = ENABLE_REG_32BIT,
|
|
|
|
+ .enable_reg = OMAP1_IO_ADDRESS(MOD_CONF_CTRL_0),
|
|
|
|
+ .enable_bit = USB_HOST_HHC_UHOST_EN,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk usb_hhc_ck16xx = {
|
|
|
|
+ .name = "usb_hhc_ck",
|
|
|
|
+ .ops = &clkops_generic,
|
|
|
|
+ /* Direct from ULPD, no parent */
|
|
|
|
+ .rate = 48000000,
|
|
|
|
+ /* OTG_SYSCON_2.OTG_PADEN == 0 (not 1510-compatible) */
|
|
|
|
+ .flags = ENABLE_REG_32BIT,
|
|
|
|
+ .enable_reg = OMAP1_IO_ADDRESS(OTG_BASE + 0x08), /* OTG_SYSCON_2 */
|
|
|
|
+ .enable_bit = OTG_SYSCON_2_UHOST_EN_SHIFT
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk usb_dc_ck = {
|
|
|
|
+ .name = "usb_dc_ck",
|
|
|
|
+ .ops = &clkops_generic,
|
|
|
|
+ /* Direct from ULPD, no parent */
|
|
|
|
+ .rate = 48000000,
|
|
|
|
+ .enable_reg = OMAP1_IO_ADDRESS(SOFT_REQ_REG),
|
|
|
|
+ .enable_bit = USB_REQ_EN_SHIFT,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk usb_dc_ck7xx = {
|
|
|
|
+ .name = "usb_dc_ck",
|
|
|
|
+ .ops = &clkops_generic,
|
|
|
|
+ /* Direct from ULPD, no parent */
|
|
|
|
+ .rate = 48000000,
|
|
|
|
+ .enable_reg = OMAP1_IO_ADDRESS(SOFT_REQ_REG),
|
|
|
|
+ .enable_bit = SOFT_USB_OTG_DPLL_REQ_SHIFT,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk uart1_7xx = {
|
|
|
|
+ .name = "uart1_ck",
|
|
|
|
+ .ops = &clkops_generic,
|
|
|
|
+ /* Direct from ULPD, no parent */
|
|
|
|
+ .rate = 12000000,
|
|
|
|
+ .enable_reg = OMAP1_IO_ADDRESS(SOFT_REQ_REG),
|
|
|
|
+ .enable_bit = 9,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk uart2_7xx = {
|
|
|
|
+ .name = "uart2_ck",
|
|
|
|
+ .ops = &clkops_generic,
|
|
|
|
+ /* Direct from ULPD, no parent */
|
|
|
|
+ .rate = 12000000,
|
|
|
|
+ .enable_reg = OMAP1_IO_ADDRESS(SOFT_REQ_REG),
|
|
|
|
+ .enable_bit = 11,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk mclk_1510 = {
|
|
|
|
+ .name = "mclk",
|
|
|
|
+ .ops = &clkops_generic,
|
|
|
|
+ /* Direct from ULPD, no parent. May be enabled by ext hardware. */
|
|
|
|
+ .rate = 12000000,
|
|
|
|
+ .enable_reg = OMAP1_IO_ADDRESS(SOFT_REQ_REG),
|