1 /************************************************************************
4 * Infineon Technologies AG
5 * St. Martin Strasse 53; 81669 Muenchen; Germany
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version
10 * 2 of the License, or (at your option) any later version.
12 ************************************************************************/
14 #include <linux/module.h>
15 #include <linux/types.h>
16 #include <linux/kernel.h>
17 #include <linux/proc_fs.h>
18 #include <linux/init.h>
19 #include <asm/addrspace.h>
24 #include <lantiq_soc.h>
26 static struct svip_reg_sys1 *const sys1 = (struct svip_reg_sys1 *)LTQ_SYS1_BASE;
27 static struct svip_reg_sys2 *const sys2 = (struct svip_reg_sys2 *)LTQ_SYS2_BASE;
29 void svip_sys1_clk_enable(u32 mask)
31 sys1_w32(sys1_r32(clksr) | mask, clkenr);
34 EXPORT_SYMBOL(svip_sys1_clk_enable);
36 int svip_sys1_clk_is_enabled(u32 mask)
38 return (sys1_r32(clksr) & mask) != 0;
40 EXPORT_SYMBOL(svip_sys1_clk_is_enabled);
42 void svip_sys2_clk_enable(u32 mask)
44 sys2_w32(sys2_r32(clksr) | mask, clkenr);
47 EXPORT_SYMBOL(svip_sys2_clk_enable);
49 int svip_sys2_clk_is_enabled(u32 mask)
51 return (sys2_r32(clksr) & mask) != 0;
53 EXPORT_SYMBOL(svip_sys2_clk_is_enabled);
55 int ltq_pms_read_procmem(char *buf, char **start, off_t offset,
56 int count, int *eof, void *data)
61 u32 reg_tmp, bits_tmp;
63 len = sprintf(buf, "\nSVIP PMS Settings\n");
64 len = len + sprintf(buf + len,
66 len = len + sprintf(buf + len,
67 " 210987654321098765432109876543210\n");
68 len = len + sprintf(buf + len,
69 "---------------------------------------------\n");
70 len = len + sprintf(buf + len,
72 reg_tmp = sys1_r32(clksr);
74 for (t = 31; t != -1; t--) {
75 bits_tmp = (reg_tmp & bit) >> t;
76 len = len + sprintf(buf + len, "%d", bits_tmp);
79 len = len + sprintf(buf + len, "\n\n");
80 len = len + sprintf(buf + len, "SYS2_CLKSR: ");
81 reg_tmp = sys2_r32(clksr);
83 for (t = 31; t != -1; t--) {
84 bits_tmp = (reg_tmp & bit) >> t;
85 len = len + sprintf(buf + len, "%d", bits_tmp);
88 len = len + sprintf(buf + len, "\n\n");
95 int __init ltq_pms_init_proc(void)
97 return create_proc_read_entry("driver/ltq_pms", 0, NULL,
98 ltq_pms_read_procmem, NULL) == NULL;
101 module_init(ltq_pms_init_proc);