Changeset 33343


Ignore:
Timestamp:
2012-09-09T16:05:20+02:00 (5 years ago)
Author:
juhosg
Message:

ar71xx: use dynamic clock dividers on the 2nd MDIO of AR934x

Location:
trunk/target/linux/ar71xx
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ar71xx/files/arch/mips/ath79/dev-eth.c

    r33310 r33343  
    2020#include <linux/platform_device.h> 
    2121#include <linux/serial_8250.h> 
     22#include <linux/clk.h> 
    2223 
    2324#include <asm/mach-ath79/ath79.h> 
     
    145146 
    146147        iounmap(base); 
     148} 
     149 
     150static unsigned long ar934x_get_mdio_ref_clock(void) 
     151{ 
     152        void __iomem *base; 
     153        unsigned long ret; 
     154        u32 t; 
     155 
     156        base = ioremap(AR71XX_PLL_BASE, AR71XX_PLL_SIZE); 
     157 
     158        ret = 0; 
     159        t = __raw_readl(base + AR934X_PLL_SWITCH_CLOCK_CONTROL_REG); 
     160        if (t & AR934X_PLL_SWITCH_CLOCK_CONTROL_MDIO_CLK_SEL) { 
     161                ret = 100 * 1000 * 1000; 
     162        } else { 
     163                struct clk *clk; 
     164 
     165                clk = clk_get(NULL, "ref"); 
     166                if (!IS_ERR(clk)) 
     167                        ret = clk_get_rate(clk); 
     168        } 
     169 
     170        iounmap(base); 
     171 
     172        return ret; 
    147173} 
    148174 
     
    218244        case ATH79_SOC_AR9342: 
    219245        case ATH79_SOC_AR9344: 
     246                if (id == 1) { 
     247                        mdio_data->builtin_switch = 1; 
     248                        mdio_data->ref_clock = ar934x_get_mdio_ref_clock(); 
     249                        mdio_data->mdio_clock = 6250000; 
     250                } 
     251                mdio_data->is_ar934x = 1; 
     252                break; 
    220253        case ATH79_SOC_QCA9558: 
    221254                if (id == 1) 
  • trunk/target/linux/ar71xx/patches-3.3/601-MIPS-ath79-add-more-register-defines.patch

    r33335 r33343  
    7575 #define AR933X_PLL_CLOCK_CTRL_REG      0x08 
    7676  
    77 @@ -212,6 +232,7 @@ 
     77@@ -212,6 +232,8 @@ 
    7878 #define AR934X_PLL_CPU_CONFIG_REG              0x00 
    7979 #define AR934X_PLL_DDR_CONFIG_REG              0x04 
    8080 #define AR934X_PLL_CPU_DDR_CLK_CTRL_REG                0x08 
     81+#define AR934X_PLL_SWITCH_CLOCK_CONTROL_REG    0x24 
    8182+#define AR934X_PLL_ETH_XMII_CONTROL_REG                0x2c 
    8283  
    8384 #define AR934X_PLL_CPU_CONFIG_NFRAC_SHIFT      0 
    8485 #define AR934X_PLL_CPU_CONFIG_NFRAC_MASK       0x3f 
    85 @@ -370,16 +391,50 @@ 
     86@@ -244,6 +266,8 @@ 
     87 #define AR934X_PLL_CPU_DDR_CLK_CTRL_DDRCLK_FROM_DDRPLL BIT(21) 
     88 #define AR934X_PLL_CPU_DDR_CLK_CTRL_AHBCLK_FROM_DDRPLL BIT(24) 
     89  
     90+#define AR934X_PLL_SWITCH_CLOCK_CONTROL_MDIO_CLK_SEL   BIT(6) 
     91+ 
     92 #define QCA955X_PLL_CPU_CONFIG_REG             0x00 
     93 #define QCA955X_PLL_DDR_CONFIG_REG             0x04 
     94 #define QCA955X_PLL_CLK_CTRL_REG               0x08 
     95@@ -370,16 +394,50 @@ 
    8696 #define AR913X_RESET_USB_HOST          BIT(5) 
    8797 #define AR913X_RESET_USB_PHY           BIT(4) 
     
    134144  
    135145 #define AR934X_BOOTSTRAP_SW_OPTION8    BIT(23) 
    136 @@ -520,6 +575,14 @@ 
     146@@ -520,6 +578,14 @@ 
    137147 #define AR71XX_GPIO_REG_INT_ENABLE     0x24 
    138148 #define AR71XX_GPIO_REG_FUNC           0x28 
     
    149159 #define AR724X_GPIO_COUNT              18 
    150160 #define AR913X_GPIO_COUNT              22 
    151 @@ -548,4 +611,133 @@ 
     161@@ -548,4 +614,133 @@ 
    152162 #define AR934X_SRIF_DPLL2_OUTDIV_SHIFT 13 
    153163 #define AR934X_SRIF_DPLL2_OUTDIV_MASK  0x7 
Note: See TracChangeset for help on using the changeset viewer.