The common clock framework changes for 3.10 include many fixes for
existing platforms, as well as adoption of the framework by new platforms and devices. Some long-needed fixes to the core framework are here as well as new features such as improved initialization of clocks from DT as well as framework reentrancy for nested clock operations. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQIcBAABAgAGBQJRfqtLAAoJEDqPOy9afJhJsxwP/RLvfeeMIU3804ahVNK2C59h ehJ06ZP+b0u0A7+YSC7CX1pHXIFW+UoZgYLJiLdV2kEdpOIKMELZyUcEVB97u1Of TVlsmHfTLv2zVAq/LYRVSKFYeMUd/6RRoq7Cm6hoj638IVeXG7C+8pei2aVZe++t 1ENmb4UGFJ7NLfpE5zQ3fEuIfHfuWA8Od6SmPaV/YG5Io8HgkDGF3/tCJURJGII6 xLN2Rh8qbFktJLVvKe6yLyvUEZiWh8A6HNPyNiFYYGX11wU76zK2wMN3BW6Nn/kW 3PubzISoKRaoCZvuVK+CoLWnhFl2LteFVVmL1TBc/jxJe6q+rLX33sXl1q9K+SLt POnHf/7nDyO3zbZWgfRR1r3FdeZqdLYw8HVsLcOKFcv9n1UligzuUNml5PklKwNh BDMmSo5ytS1QPV1e9ZtVrk6IyvDyrenwfDW1Mw43ST6D23FVrivywB4X9ur6WljI d1/CBvQXQZ11Hd4OAvqRL8QYFJvc5WlERjSd1j6I6XS6xioKOTKMkUC/KpRcCid9 avA6mJ5k/a1jTojvh2wl37paI//OzY0VDlxRSeMZIu9Dsn29DnPlE5CLg535Ovu+ mn9OtLFEDNnlgWCMQYUehGd7ITgtwrB/fxxNeBbMYjDz4AIirR2BIvMR7I8CMTQz M0rHu8NpwKH6eqC6kAup =+LO3 -----END PGP SIGNATURE----- Merge tag 'clk-for-linus-3.10' of git://git.linaro.org/people/mturquette/linux Pull clock framework update from Michael Turquette: "The common clock framework changes for 3.10 include many fixes for existing platforms, as well as adoption of the framework by new platforms and devices. Some long-needed fixes to the core framework are here as well as new features such as improved initialization of clocks from DT as well as framework reentrancy for nested clock operations." * tag 'clk-for-linus-3.10' of git://git.linaro.org/people/mturquette/linux: (44 commits) clk: add clk_ignore_unused option to keep boot clocks on clk: ux500: fix mismatched types clk: vexpress: Add separate SP810 driver clk: si5351: make clk-si5351 depend on CONFIG_OF clk: export __clk_get_flags for modular clock providers clk: vt8500: Missing breaks in vtwm_pll_round_rate/_set_rate. clk: sunxi: Unify oscillator clock clk: composite: allow fixed rates & fixed dividers clk: composite: rename 'div' references to 'rate' clk: add si5351 i2c common clock driver clk: add device tree fixed-factor-clock binding support clk: Properly handle notifier return values clk: ux500: abx500: Define clock tree for ab850x clk: ux500: Add support for sysctrl clocks clk: mvebu: Fix valid value range checking for cpu_freq_select clk: Fixup locking issues for clk_set_parent clk: Fixup errorhandling for clk_set_parent clk: Restructure code for __clk_reparent clk: sunxi: drop an unnecesary kmalloc clk: sunxi: drop CLK_IGNORE_UNUSED ...
This commit is contained in:
commit
362ed48dee
48 changed files with 4520 additions and 306 deletions
114
include/linux/platform_data/si5351.h
Normal file
114
include/linux/platform_data/si5351.h
Normal file
|
@ -0,0 +1,114 @@
|
|||
/*
|
||||
* Si5351A/B/C programmable clock generator platform_data.
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_PLATFORM_DATA_SI5351_H__
|
||||
#define __LINUX_PLATFORM_DATA_SI5351_H__
|
||||
|
||||
struct clk;
|
||||
|
||||
/**
|
||||
* enum si5351_variant - SiLabs Si5351 chip variant
|
||||
* @SI5351_VARIANT_A: Si5351A (8 output clocks, XTAL input)
|
||||
* @SI5351_VARIANT_A3: Si5351A MSOP10 (3 output clocks, XTAL input)
|
||||
* @SI5351_VARIANT_B: Si5351B (8 output clocks, XTAL/VXCO input)
|
||||
* @SI5351_VARIANT_C: Si5351C (8 output clocks, XTAL/CLKIN input)
|
||||
*/
|
||||
enum si5351_variant {
|
||||
SI5351_VARIANT_A = 1,
|
||||
SI5351_VARIANT_A3 = 2,
|
||||
SI5351_VARIANT_B = 3,
|
||||
SI5351_VARIANT_C = 4,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum si5351_pll_src - Si5351 pll clock source
|
||||
* @SI5351_PLL_SRC_DEFAULT: default, do not change eeprom config
|
||||
* @SI5351_PLL_SRC_XTAL: pll source clock is XTAL input
|
||||
* @SI5351_PLL_SRC_CLKIN: pll source clock is CLKIN input (Si5351C only)
|
||||
*/
|
||||
enum si5351_pll_src {
|
||||
SI5351_PLL_SRC_DEFAULT = 0,
|
||||
SI5351_PLL_SRC_XTAL = 1,
|
||||
SI5351_PLL_SRC_CLKIN = 2,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum si5351_multisynth_src - Si5351 multisynth clock source
|
||||
* @SI5351_MULTISYNTH_SRC_DEFAULT: default, do not change eeprom config
|
||||
* @SI5351_MULTISYNTH_SRC_VCO0: multisynth source clock is VCO0
|
||||
* @SI5351_MULTISYNTH_SRC_VCO1: multisynth source clock is VCO1/VXCO
|
||||
*/
|
||||
enum si5351_multisynth_src {
|
||||
SI5351_MULTISYNTH_SRC_DEFAULT = 0,
|
||||
SI5351_MULTISYNTH_SRC_VCO0 = 1,
|
||||
SI5351_MULTISYNTH_SRC_VCO1 = 2,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum si5351_clkout_src - Si5351 clock output clock source
|
||||
* @SI5351_CLKOUT_SRC_DEFAULT: default, do not change eeprom config
|
||||
* @SI5351_CLKOUT_SRC_MSYNTH_N: clkout N source clock is multisynth N
|
||||
* @SI5351_CLKOUT_SRC_MSYNTH_0_4: clkout N source clock is multisynth 0 (N<4)
|
||||
* or 4 (N>=4)
|
||||
* @SI5351_CLKOUT_SRC_XTAL: clkout N source clock is XTAL
|
||||
* @SI5351_CLKOUT_SRC_CLKIN: clkout N source clock is CLKIN (Si5351C only)
|
||||
*/
|
||||
enum si5351_clkout_src {
|
||||
SI5351_CLKOUT_SRC_DEFAULT = 0,
|
||||
SI5351_CLKOUT_SRC_MSYNTH_N = 1,
|
||||
SI5351_CLKOUT_SRC_MSYNTH_0_4 = 2,
|
||||
SI5351_CLKOUT_SRC_XTAL = 3,
|
||||
SI5351_CLKOUT_SRC_CLKIN = 4,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum si5351_drive_strength - Si5351 clock output drive strength
|
||||
* @SI5351_DRIVE_DEFAULT: default, do not change eeprom config
|
||||
* @SI5351_DRIVE_2MA: 2mA clock output drive strength
|
||||
* @SI5351_DRIVE_4MA: 4mA clock output drive strength
|
||||
* @SI5351_DRIVE_6MA: 6mA clock output drive strength
|
||||
* @SI5351_DRIVE_8MA: 8mA clock output drive strength
|
||||
*/
|
||||
enum si5351_drive_strength {
|
||||
SI5351_DRIVE_DEFAULT = 0,
|
||||
SI5351_DRIVE_2MA = 2,
|
||||
SI5351_DRIVE_4MA = 4,
|
||||
SI5351_DRIVE_6MA = 6,
|
||||
SI5351_DRIVE_8MA = 8,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct si5351_clkout_config - Si5351 clock output configuration
|
||||
* @clkout: clkout number
|
||||
* @multisynth_src: multisynth source clock
|
||||
* @clkout_src: clkout source clock
|
||||
* @pll_master: if true, clkout can also change pll rate
|
||||
* @drive: output drive strength
|
||||
* @rate: initial clkout rate, or default if 0
|
||||
*/
|
||||
struct si5351_clkout_config {
|
||||
enum si5351_multisynth_src multisynth_src;
|
||||
enum si5351_clkout_src clkout_src;
|
||||
enum si5351_drive_strength drive;
|
||||
bool pll_master;
|
||||
unsigned long rate;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct si5351_platform_data - Platform data for the Si5351 clock driver
|
||||
* @variant: Si5351 chip variant
|
||||
* @clk_xtal: xtal input clock
|
||||
* @clk_clkin: clkin input clock
|
||||
* @pll_src: array of pll source clock setting
|
||||
* @clkout: array of clkout configuration
|
||||
*/
|
||||
struct si5351_platform_data {
|
||||
enum si5351_variant variant;
|
||||
struct clk *clk_xtal;
|
||||
struct clk *clk_clkin;
|
||||
enum si5351_pll_src pll_src[2];
|
||||
struct si5351_clkout_config clkout[8];
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue