Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * Purna Chandra Mandal,<purna.mandal@microchip.com>
0004  * Copyright (C) 2015 Microchip Technology Inc.  All rights reserved.
0005  */
0006 #ifndef __MICROCHIP_CLK_PIC32_H_
0007 #define __MICROCHIP_CLK_PIC32_H_
0008 
0009 #include <linux/clk-provider.h>
0010 
0011 /* PIC32 clock data */
0012 struct pic32_clk_common {
0013     struct device *dev;
0014     void __iomem *iobase;
0015     spinlock_t reg_lock; /* clock lock */
0016 };
0017 
0018 /* System PLL clock */
0019 struct pic32_sys_pll_data {
0020     struct clk_init_data init_data;
0021     const u32 ctrl_reg;
0022     const u32 status_reg;
0023     const u32 lock_mask;
0024 };
0025 
0026 /* System clock */
0027 struct pic32_sys_clk_data {
0028     struct clk_init_data init_data;
0029     const u32 mux_reg;
0030     const u32 slew_reg;
0031     const u32 *parent_map;
0032     const u32 slew_div;
0033 };
0034 
0035 /* Reference Oscillator clock */
0036 struct pic32_ref_osc_data {
0037     struct clk_init_data init_data;
0038     const u32 ctrl_reg;
0039     const u32 *parent_map;
0040 };
0041 
0042 /* Peripheral Bus clock */
0043 struct pic32_periph_clk_data {
0044     struct clk_init_data init_data;
0045     const u32 ctrl_reg;
0046 };
0047 
0048 /* External Secondary Oscillator clock  */
0049 struct pic32_sec_osc_data {
0050     struct clk_init_data init_data;
0051     const u32 enable_reg;
0052     const u32 status_reg;
0053     const u32 enable_mask;
0054     const u32 status_mask;
0055     const unsigned long fixed_rate;
0056 };
0057 
0058 extern const struct clk_ops pic32_pbclk_ops;
0059 extern const struct clk_ops pic32_sclk_ops;
0060 extern const struct clk_ops pic32_sclk_no_div_ops;
0061 extern const struct clk_ops pic32_spll_ops;
0062 extern const struct clk_ops pic32_roclk_ops;
0063 extern const struct clk_ops pic32_sosc_ops;
0064 
0065 struct clk *pic32_periph_clk_register(const struct pic32_periph_clk_data *data,
0066                       struct pic32_clk_common *core);
0067 struct clk *pic32_refo_clk_register(const struct pic32_ref_osc_data *data,
0068                     struct pic32_clk_common *core);
0069 struct clk *pic32_sys_clk_register(const struct pic32_sys_clk_data *data,
0070                    struct pic32_clk_common *core);
0071 struct clk *pic32_spll_clk_register(const struct pic32_sys_pll_data *data,
0072                     struct pic32_clk_common *core);
0073 struct clk *pic32_sosc_clk_register(const struct pic32_sec_osc_data *data,
0074                     struct pic32_clk_common *core);
0075 
0076 #endif /* __MICROCHIP_CLK_PIC32_H_*/