History

Merge branches 'clk-doc', 'clk-more-critical', 'clk-meson' and 'clk-basic-be' into clk-next

- Remove clk_readl() and introduce BE versions of basic clk types * clk-doc: clk: Drop duplicate clk_register() documentation clk: Document and simplify clk_core_get_rate_nolock() clk: Remove 'flags' member of struct clk_fixed_rate clk: nxp: Drop 'flags' on fixed_rate clk macro clk: Document __clk_mux_determine_rate() clk: Document CLK_MUX_READ_ONLY mux flag clk: Document deprecated things clk: Collapse gpio clk kerneldoc * clk-more-critical: clk: highbank: Convert to CLK_IS_CRITICAL * clk-meson: (21 commits) clk: meson: axg-audio: add g12a support clk: meson: axg-audio: don't register inputs in the onecell data clk: meson: axg_audio: replace prefix axg by aud dt-bindings: clk: axg-audio: add g12a support clk: meson: meson8b: add the video decoder clock trees clk: meson: meson8b: add the VPU clock trees clk: meson: meson8b: add support for the GP_PLL clock on Meson8m2 clk: meson: meson8b: use a separate clock table for Meson8m2 dt-bindings: clock: meson8b: export the video decoder clocks clk: meson-g12a: add video decoder clocks dt-bindings: clock: meson8b: export the VPU clock clk: meson-g12a: add PCIE PLL clocks dt-bindings: clock: g12a-aoclk: expose CLKID_AO_CTS_OSCIN clk: meson-pll: add reduced specific clk_ops for G12A PCIe PLL dt-bindings: clock: meson8b: drop the "ABP" clock definition clk: meson: g12a: add cpu clocks dt-bindings: clk: g12a-clkc: add VDEC clock IDs dt-bindings: clock: axg-audio: unexpose controller inputs dt-bindings: clk: g12a-clkc: add PCIE PLL clock ID clk: g12a-aoclk: re-export CLKID_AO_SAR_ADC_SEL clock id ... * clk-basic-be: clk: core: replace clk_{readl,writel} with {readl,writel} clk: core: remove powerpc special handling powerpc/512x: mark clocks as big endian clk: mux: add explicit big endian support clk: multiplier: add explicit big endian support clk: gate: add explicit big endian support clk: fractional-divider: add explicit big endian support clk: divider: add explicit big endian support

Stephen Boyd committed 7 years ago

Commit f6111b95 parents 2ed3b91 f14382d 043f44a 6e4fcc3 5834fd736 files · +2424 −710Browse files

Showing the changes to include/linux (1 of 36 files). Show all

Unified · Split

include/linux/clk-provider.h+31−59
@@ -24,7 +24,7 @@ · 23 unmodified lines
24#define CLK_SET_RATE_PARENT BIT(2) /* propagate rate change up one level */24#define CLK_SET_RATE_PARENT BIT(2) /* propagate rate change up one level */
25#define CLK_IGNORE_UNUSED BIT(3) /* do not gate even if unused */25#define CLK_IGNORE_UNUSED BIT(3) /* do not gate even if unused */
26 /* unused */26 /* unused */
27#define CLK_IS_BASIC BIT(5) /* Basic clk, can't do a to_clk_foo() */27#define CLK_IS_BASIC BIT(5) /* deprecated, don't use */
28#define CLK_GET_RATE_NOCACHE BIT(6) /* do not use the cached clk rate */28#define CLK_GET_RATE_NOCACHE BIT(6) /* do not use the cached clk rate */
29#define CLK_SET_RATE_NO_REPARENT BIT(7) /* don't re-parent on rate change */29#define CLK_SET_RATE_NO_REPARENT BIT(7) /* don't re-parent on rate change */
30#define CLK_GET_ACCURACY_NOCACHE BIT(8) /* do not use the cached clk accuracy */30#define CLK_GET_ACCURACY_NOCACHE BIT(8) /* do not use the cached clk accuracy */
@@ -307,7 +307,6 @@ struct clk_fixed_rate { · 276 unmodified lines
307 struct clk_hw hw;307 struct clk_hw hw;
308 unsigned long fixed_rate;308 unsigned long fixed_rate;
309 unsigned long fixed_accuracy;309 unsigned long fixed_accuracy;
310 u8 flags;
311};310};
312 311
313#define to_clk_fixed_rate(_hw) container_of(_hw, struct clk_fixed_rate, hw)312#define to_clk_fixed_rate(_hw) container_of(_hw, struct clk_fixed_rate, hw)
@@ -349,6 +348,9 @@ void of_fixed_clk_setup(struct device_node *np); · 35 unmodified lines
349 * of this register, and mask of gate bits are in higher 16-bit of this348 * of this register, and mask of gate bits are in higher 16-bit of this
350 * register. While setting the gate bits, higher 16-bit should also be349 * register. While setting the gate bits, higher 16-bit should also be
351 * updated to indicate changing gate bits.350 * updated to indicate changing gate bits.
351 * CLK_GATE_BIG_ENDIAN - by default little endian register accesses are used for
352 * the gate register. Setting this flag makes the register accesses big
353 * endian.
352 */354 */
353struct clk_gate {355struct clk_gate {
354 struct clk_hw hw;356 struct clk_hw hw;
@@ -362,6 +364,7 @@ struct clk_gate { · 7 unmodified lines
362 364
363#define CLK_GATE_SET_TO_DISABLE BIT(0)365#define CLK_GATE_SET_TO_DISABLE BIT(0)
364#define CLK_GATE_HIWORD_MASK BIT(1)366#define CLK_GATE_HIWORD_MASK BIT(1)
367#define CLK_GATE_BIG_ENDIAN BIT(2)
365 368
366extern const struct clk_ops clk_gate_ops;369extern const struct clk_ops clk_gate_ops;
367struct clk *clk_register_gate(struct device *dev, const char *name,370struct clk *clk_register_gate(struct device *dev, const char *name,
@@ -417,6 +420,9 @@ struct clk_div_table { · 49 unmodified lines
417 * CLK_DIVIDER_MAX_AT_ZERO - For dividers which are like CLK_DIVIDER_ONE_BASED420 * CLK_DIVIDER_MAX_AT_ZERO - For dividers which are like CLK_DIVIDER_ONE_BASED
418 * except when the value read from the register is zero, the divisor is421 * except when the value read from the register is zero, the divisor is
419 * 2^width of the field.422 * 2^width of the field.
423 * CLK_DIVIDER_BIG_ENDIAN - By default little endian register accesses are used
424 * for the divider register. Setting this flag makes the register accesses
425 * big endian.
420 */426 */
421struct clk_divider {427struct clk_divider {
422 struct clk_hw hw;428 struct clk_hw hw;
@@ -438,6 +444,7 @@ struct clk_divider { · 15 unmodified lines
438#define CLK_DIVIDER_ROUND_CLOSEST BIT(4)444#define CLK_DIVIDER_ROUND_CLOSEST BIT(4)
439#define CLK_DIVIDER_READ_ONLY BIT(5)445#define CLK_DIVIDER_READ_ONLY BIT(5)
440#define CLK_DIVIDER_MAX_AT_ZERO BIT(6)446#define CLK_DIVIDER_MAX_AT_ZERO BIT(6)
447#define CLK_DIVIDER_BIG_ENDIAN BIT(7)
441 448
442extern const struct clk_ops clk_divider_ops;449extern const struct clk_ops clk_divider_ops;
443extern const struct clk_ops clk_divider_ro_ops;450extern const struct clk_ops clk_divider_ro_ops;
@@ -499,8 +506,13 @@ void clk_hw_unregister_divider(struct clk_hw *hw); · 55 unmodified lines
499 * register, and mask of mux bits are in higher 16-bit of this register.506 * register, and mask of mux bits are in higher 16-bit of this register.
500 * While setting the mux bits, higher 16-bit should also be updated to507 * While setting the mux bits, higher 16-bit should also be updated to
501 * indicate changing mux bits.508 * indicate changing mux bits.
509 * CLK_MUX_READ_ONLY - The mux registers can't be written, only read in the
510 * .get_parent clk_op.
502 * CLK_MUX_ROUND_CLOSEST - Use the parent rate that is closest to the desired511 * CLK_MUX_ROUND_CLOSEST - Use the parent rate that is closest to the desired
503 * frequency.512 * frequency.
513 * CLK_MUX_BIG_ENDIAN - By default little endian register accesses are used for
514 * the mux register. Setting this flag makes the register accesses big
515 * endian.
504 */516 */
505struct clk_mux {517struct clk_mux {
506 struct clk_hw hw;518 struct clk_hw hw;
@@ -519,6 +531,7 @@ struct clk_mux { · 12 unmodified lines
519#define CLK_MUX_HIWORD_MASK BIT(2)531#define CLK_MUX_HIWORD_MASK BIT(2)
520#define CLK_MUX_READ_ONLY BIT(3) /* mux can't be changed */532#define CLK_MUX_READ_ONLY BIT(3) /* mux can't be changed */
521#define CLK_MUX_ROUND_CLOSEST BIT(4)533#define CLK_MUX_ROUND_CLOSEST BIT(4)
534#define CLK_MUX_BIG_ENDIAN BIT(5)
522 535
523extern const struct clk_ops clk_mux_ops;536extern const struct clk_ops clk_mux_ops;
524extern const struct clk_ops clk_mux_ro_ops;537extern const struct clk_ops clk_mux_ro_ops;
@@ -602,6 +615,9 @@ void clk_hw_unregister_fixed_factor(struct clk_hw *hw); · 77 unmodified lines
602 * is the value read from the register. If CLK_FRAC_DIVIDER_ZERO_BASED615 * is the value read from the register. If CLK_FRAC_DIVIDER_ZERO_BASED
603 * is set then the numerator and denominator are both the value read616 * is set then the numerator and denominator are both the value read
604 * plus one.617 * plus one.
618 * CLK_FRAC_DIVIDER_BIG_ENDIAN - By default little endian register accesses are
619 * used for the divider register. Setting this flag makes the register
620 * accesses big endian.
605 */621 */
606struct clk_fractional_divider {622struct clk_fractional_divider {
607 struct clk_hw hw;623 struct clk_hw hw;
@@ -622,6 +638,7 @@ struct clk_fractional_divider { · 14 unmodified lines
622#define to_clk_fd(_hw) container_of(_hw, struct clk_fractional_divider, hw)638#define to_clk_fd(_hw) container_of(_hw, struct clk_fractional_divider, hw)
623 639
624#define CLK_FRAC_DIVIDER_ZERO_BASED BIT(0)640#define CLK_FRAC_DIVIDER_ZERO_BASED BIT(0)
641#define CLK_FRAC_DIVIDER_BIG_ENDIAN BIT(1)
625 642
626extern const struct clk_ops clk_fractional_divider_ops;643extern const struct clk_ops clk_fractional_divider_ops;
627struct clk *clk_register_fractional_divider(struct device *dev,644struct clk *clk_register_fractional_divider(struct device *dev,
@@ -654,6 +671,9 @@ void clk_hw_unregister_fractional_divider(struct clk_hw *hw); · 26 unmodified lines
654 * leaving the parent rate unmodified.671 * leaving the parent rate unmodified.
655 * CLK_MULTIPLIER_ROUND_CLOSEST - Makes the best calculated divider to be672 * CLK_MULTIPLIER_ROUND_CLOSEST - Makes the best calculated divider to be
656 * rounded to the closest integer instead of the down one.673 * rounded to the closest integer instead of the down one.
674 * CLK_MULTIPLIER_BIG_ENDIAN - By default little endian register accesses are
675 * used for the multiplier register. Setting this flag makes the register
676 * accesses big endian.
657 */677 */
658struct clk_multiplier {678struct clk_multiplier {
659 struct clk_hw hw;679 struct clk_hw hw;
@@ -668,6 +688,7 @@ struct clk_multiplier { · 8 unmodified lines
668 688
669#define CLK_MULTIPLIER_ZERO_BYPASS BIT(0)689#define CLK_MULTIPLIER_ZERO_BYPASS BIT(0)
670#define CLK_MULTIPLIER_ROUND_CLOSEST BIT(1)690#define CLK_MULTIPLIER_ROUND_CLOSEST BIT(1)
691#define CLK_MULTIPLIER_BIG_ENDIAN BIT(2)
671 692
672extern const struct clk_ops clk_multiplier_ops;693extern const struct clk_ops clk_multiplier_ops;
673 694
@@ -712,16 +733,19 @@ struct clk_hw *clk_hw_register_composite(struct device *dev, const char *name, · 38 unmodified lines
712 unsigned long flags);733 unsigned long flags);
713void clk_hw_unregister_composite(struct clk_hw *hw);734void clk_hw_unregister_composite(struct clk_hw *hw);
714 735
715/***736/**
716 * struct clk_gpio_gate - gpio gated clock737 * struct clk_gpio - gpio gated clock
717 *738 *
718 * @hw: handle between common and hardware-specific interfaces739 * @hw: handle between common and hardware-specific interfaces
719 * @gpiod: gpio descriptor740 * @gpiod: gpio descriptor
720 *741 *
721 * Clock with a gpio control for enabling and disabling the parent clock.742 * Clock with a gpio control for enabling and disabling the parent clock
722 * Implements .enable, .disable and .is_enabled743 * or switching between two parents by asserting or deasserting the gpio.
744 *
745 * Implements .enable, .disable and .is_enabled or
746 * .get_parent, .set_parent and .determine_rate depending on which clk_ops
747 * is used.
723 */748 */
724
725struct clk_gpio {749struct clk_gpio {
726 struct clk_hw hw;750 struct clk_hw hw;
727 struct gpio_desc *gpiod;751 struct gpio_desc *gpiod;
@@ -738,16 +762,6 @@ struct clk_hw *clk_hw_register_gpio_gate(struct device *dev, const char *name, · 10 unmodified lines
738 unsigned long flags);762 unsigned long flags);
739void clk_hw_unregister_gpio_gate(struct clk_hw *hw);763void clk_hw_unregister_gpio_gate(struct clk_hw *hw);
740 764
741/**
742 * struct clk_gpio_mux - gpio controlled clock multiplexer
743 *
744 * @hw: see struct clk_gpio
745 * @gpiod: gpio descriptor to select the parent of this clock multiplexer
746 *
747 * Clock with a gpio control for selecting the parent clock.
748 * Implements .get_parent, .set_parent and .determine_rate
749 */
750
751extern const struct clk_ops clk_gpio_mux_ops;765extern const struct clk_ops clk_gpio_mux_ops;
752struct clk *clk_register_gpio_mux(struct device *dev, const char *name,766struct clk *clk_register_gpio_mux(struct device *dev, const char *name,
753 const char * const *parent_names, u8 num_parents, struct gpio_desc *gpiod,767 const char * const *parent_names, u8 num_parents, struct gpio_desc *gpiod,
@@ -757,17 +771,6 @@ struct clk_hw *clk_hw_register_gpio_mux(struct device *dev, const char *name, · 3 unmodified lines
757 unsigned long flags);771 unsigned long flags);
758void clk_hw_unregister_gpio_mux(struct clk_hw *hw);772void clk_hw_unregister_gpio_mux(struct clk_hw *hw);
759 773
760/**
761 * clk_register - allocate a new clock, register it and return an opaque cookie
762 * @dev: device that is registering this clock
763 * @hw: link to hardware-specific clock data
764 *
765 * clk_register is the primary interface for populating the clock tree with new
766 * clock nodes. It returns a pointer to the newly allocated struct clk which
767 * cannot be dereferenced by driver code but may be used in conjuction with the
768 * rest of the clock API. In the event of an error clk_register will return an
769 * error code; drivers must test for an error code after calling clk_register.
770 */
771struct clk *clk_register(struct device *dev, struct clk_hw *hw);774struct clk *clk_register(struct device *dev, struct clk_hw *hw);
772struct clk *devm_clk_register(struct device *dev, struct clk_hw *hw);775struct clk *devm_clk_register(struct device *dev, struct clk_hw *hw);
773 776
@@ -993,37 +996,6 @@ static inline int of_clk_detect_critical(struct device_node *np, int index, · 219 unmodified lines
993}996}
994#endif /* CONFIG_OF */997#endif /* CONFIG_OF */
995 998
996/*
997 * wrap access to peripherals in accessor routines
998 * for improved portability across platforms
999 */
1000
1001#if IS_ENABLED(CONFIG_PPC)
1002
1003static inline u32 clk_readl(u32 __iomem *reg)
1004{
1005 return ioread32be(reg);
1006}
1007
1008static inline void clk_writel(u32 val, u32 __iomem *reg)
1009{
1010 iowrite32be(val, reg);
1011}
1012
1013#else /* platform dependent I/O accessors */
1014
1015static inline u32 clk_readl(u32 __iomem *reg)
1016{
1017 return readl(reg);
1018}
1019
1020static inline void clk_writel(u32 val, u32 __iomem *reg)
1021{
1022 writel(val, reg);
1023}
1024
1025#endif /* platform dependent I/O accessors */
1026
1027void clk_gate_restore_context(struct clk_hw *hw);999void clk_gate_restore_context(struct clk_hw *hw);
1028 1000
1029#endif /* CONFIG_COMMON_CLK */1001#endif /* CONFIG_COMMON_CLK */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t