1251a449dSTero Kristo /* 2251a449dSTero Kristo * DRA7 Clock init 3251a449dSTero Kristo * 4251a449dSTero Kristo * Copyright (C) 2013 Texas Instruments, Inc. 5251a449dSTero Kristo * 6251a449dSTero Kristo * Tero Kristo (t-kristo@ti.com) 7251a449dSTero Kristo * 8251a449dSTero Kristo * This program is free software; you can redistribute it and/or modify 9251a449dSTero Kristo * it under the terms of the GNU General Public License version 2 as 10251a449dSTero Kristo * published by the Free Software Foundation. 11251a449dSTero Kristo */ 12251a449dSTero Kristo 13251a449dSTero Kristo #include <linux/kernel.h> 14251a449dSTero Kristo #include <linux/list.h> 15e387088aSStephen Boyd #include <linux/clk.h> 16251a449dSTero Kristo #include <linux/clkdev.h> 17251a449dSTero Kristo #include <linux/clk/ti.h> 1824d504a3STero Kristo #include <dt-bindings/clock/dra7.h> 19251a449dSTero Kristo 20a3314e9cSTero Kristo #include "clock.h" 21a3314e9cSTero Kristo 22251a449dSTero Kristo #define DRA7_DPLL_GMAC_DEFFREQ 1000000000 2394e72ae5SRoger Quadros #define DRA7_DPLL_USB_DEFFREQ 960000000 24251a449dSTero Kristo 25251a449dSTero Kristo int __init dra7xx_dt_clk_init(void) 26251a449dSTero Kristo { 27251a449dSTero Kristo int rc; 284b3061b3SPeter Ujfalusi struct clk *dpll_ck, *hdcp_ck; 29251a449dSTero Kristo 3043c56e04STero Kristo ti_dt_clocks_register(dra7xx_compat_clks); 31251a449dSTero Kristo 32251a449dSTero Kristo omap2_clk_disable_autoidle_all(); 33251a449dSTero Kristo 34a8202cd5STero Kristo ti_clk_add_aliases(); 35a8202cd5STero Kristo 36251a449dSTero Kristo dpll_ck = clk_get_sys(NULL, "dpll_gmac_ck"); 37251a449dSTero Kristo rc = clk_set_rate(dpll_ck, DRA7_DPLL_GMAC_DEFFREQ); 38251a449dSTero Kristo if (rc) 39251a449dSTero Kristo pr_err("%s: failed to configure GMAC DPLL!\n", __func__); 40251a449dSTero Kristo 4194e72ae5SRoger Quadros dpll_ck = clk_get_sys(NULL, "dpll_usb_ck"); 4294e72ae5SRoger Quadros rc = clk_set_rate(dpll_ck, DRA7_DPLL_USB_DEFFREQ); 4394e72ae5SRoger Quadros if (rc) 4494e72ae5SRoger Quadros pr_err("%s: failed to configure USB DPLL!\n", __func__); 4594e72ae5SRoger Quadros 4694e72ae5SRoger Quadros dpll_ck = clk_get_sys(NULL, "dpll_usb_m2_ck"); 4794e72ae5SRoger Quadros rc = clk_set_rate(dpll_ck, DRA7_DPLL_USB_DEFFREQ/2); 4894e72ae5SRoger Quadros if (rc) 4994e72ae5SRoger Quadros pr_err("%s: failed to set USB_DPLL M2 OUT\n", __func__); 5094e72ae5SRoger Quadros 51f892b203STomi Valkeinen hdcp_ck = clk_get_sys(NULL, "dss_deshdcp_clk"); 52f892b203STomi Valkeinen rc = clk_prepare_enable(hdcp_ck); 53f892b203STomi Valkeinen if (rc) 54f892b203STomi Valkeinen pr_err("%s: failed to set dss_deshdcp_clk\n", __func__); 55f892b203STomi Valkeinen 56251a449dSTero Kristo return rc; 57251a449dSTero Kristo } 58