Loading arch/arm/plat-s3c64xx/clock.c +22 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ #include <mach/hardware.h> #include <mach/map.h> #include <plat/regs-sys.h> #include <plat/regs-clock.h> #include <plat/cpu.h> #include <plat/devs.h> Loading @@ -33,10 +34,31 @@ struct clk clk_27m = { .rate = 27000000, }; static int clk_48m_ctrl(struct clk *clk, int enable) { unsigned long flags; u32 val; /* can't rely on clock lock, this register has other usages */ local_irq_save(flags); val = __raw_readl(S3C64XX_OTHERS); if (enable) val |= S3C64XX_OTHERS_USBMASK; else val &= ~S3C64XX_OTHERS_USBMASK; __raw_writel(val, S3C64XX_OTHERS); local_irq_restore(flags); return 0; } struct clk clk_48m = { .name = "clk_48m", .id = -1, .rate = 48000000, .enable = clk_48m_ctrl, }; static int inline s3c64xx_gate(void __iomem *reg, Loading arch/arm/plat-s3c64xx/include/plat/regs-sys.h 0 → 100644 +24 −0 Original line number Diff line number Diff line /* arch/arm/plat-s3c64xx/include/plat/regs-sys.h * * Copyright 2008 Openmoko, Inc. * Copyright 2008 Simtec Electronics * Ben Dooks <ben@simtec.co.uk> * http://armlinux.simtec.co.uk/ * * S3C64XX system register definitions * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef __PLAT_REGS_SYS_H #define __PLAT_REGS_SYS_H __FILE__ #define S3C_SYSREG(x) (S3C_VA_SYS + (x)) #define S3C64XX_OTHERS S3C_SYSREG(0x900) #define S3C64XX_OTHERS_USBMASK (1 << 16) #endif /* _PLAT_REGS_SYS_H */ Loading
arch/arm/plat-s3c64xx/clock.c +22 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ #include <mach/hardware.h> #include <mach/map.h> #include <plat/regs-sys.h> #include <plat/regs-clock.h> #include <plat/cpu.h> #include <plat/devs.h> Loading @@ -33,10 +34,31 @@ struct clk clk_27m = { .rate = 27000000, }; static int clk_48m_ctrl(struct clk *clk, int enable) { unsigned long flags; u32 val; /* can't rely on clock lock, this register has other usages */ local_irq_save(flags); val = __raw_readl(S3C64XX_OTHERS); if (enable) val |= S3C64XX_OTHERS_USBMASK; else val &= ~S3C64XX_OTHERS_USBMASK; __raw_writel(val, S3C64XX_OTHERS); local_irq_restore(flags); return 0; } struct clk clk_48m = { .name = "clk_48m", .id = -1, .rate = 48000000, .enable = clk_48m_ctrl, }; static int inline s3c64xx_gate(void __iomem *reg, Loading
arch/arm/plat-s3c64xx/include/plat/regs-sys.h 0 → 100644 +24 −0 Original line number Diff line number Diff line /* arch/arm/plat-s3c64xx/include/plat/regs-sys.h * * Copyright 2008 Openmoko, Inc. * Copyright 2008 Simtec Electronics * Ben Dooks <ben@simtec.co.uk> * http://armlinux.simtec.co.uk/ * * S3C64XX system register definitions * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef __PLAT_REGS_SYS_H #define __PLAT_REGS_SYS_H __FILE__ #define S3C_SYSREG(x) (S3C_VA_SYS + (x)) #define S3C64XX_OTHERS S3C_SYSREG(0x900) #define S3C64XX_OTHERS_USBMASK (1 << 16) #endif /* _PLAT_REGS_SYS_H */