xref: /openbmc/linux/arch/arm/mach-omap2/control.c (revision ce491cf85466c3377228c5a852ea627ec5136956)
169d88a00SPaul Walmsley /*
269d88a00SPaul Walmsley  * OMAP2/3 System Control Module register access
369d88a00SPaul Walmsley  *
469d88a00SPaul Walmsley  * Copyright (C) 2007 Texas Instruments, Inc.
569d88a00SPaul Walmsley  * Copyright (C) 2007 Nokia Corporation
669d88a00SPaul Walmsley  *
769d88a00SPaul Walmsley  * Written by Paul Walmsley
869d88a00SPaul Walmsley  *
969d88a00SPaul Walmsley  * This program is free software; you can redistribute it and/or modify
1069d88a00SPaul Walmsley  * it under the terms of the GNU General Public License version 2 as
1169d88a00SPaul Walmsley  * published by the Free Software Foundation.
1269d88a00SPaul Walmsley  */
1369d88a00SPaul Walmsley #undef DEBUG
1469d88a00SPaul Walmsley 
1569d88a00SPaul Walmsley #include <linux/kernel.h>
16a58caad1STony Lindgren #include <linux/io.h>
1769d88a00SPaul Walmsley 
18*ce491cf8STony Lindgren #include <plat/common.h>
19*ce491cf8STony Lindgren #include <plat/control.h>
2069d88a00SPaul Walmsley 
21a58caad1STony Lindgren static void __iomem *omap2_ctrl_base;
2269d88a00SPaul Walmsley 
23a58caad1STony Lindgren #define OMAP_CTRL_REGADDR(reg)		(omap2_ctrl_base + (reg))
2469d88a00SPaul Walmsley 
25a58caad1STony Lindgren void __init omap2_set_globals_control(struct omap_globals *omap2_globals)
2669d88a00SPaul Walmsley {
27a58caad1STony Lindgren 	omap2_ctrl_base = omap2_globals->ctrl;
2869d88a00SPaul Walmsley }
2969d88a00SPaul Walmsley 
30a58caad1STony Lindgren void __iomem *omap_ctrl_base_get(void)
3169d88a00SPaul Walmsley {
3269d88a00SPaul Walmsley 	return omap2_ctrl_base;
3369d88a00SPaul Walmsley }
3469d88a00SPaul Walmsley 
3569d88a00SPaul Walmsley u8 omap_ctrl_readb(u16 offset)
3669d88a00SPaul Walmsley {
3769d88a00SPaul Walmsley 	return __raw_readb(OMAP_CTRL_REGADDR(offset));
3869d88a00SPaul Walmsley }
3969d88a00SPaul Walmsley 
4069d88a00SPaul Walmsley u16 omap_ctrl_readw(u16 offset)
4169d88a00SPaul Walmsley {
4269d88a00SPaul Walmsley 	return __raw_readw(OMAP_CTRL_REGADDR(offset));
4369d88a00SPaul Walmsley }
4469d88a00SPaul Walmsley 
4569d88a00SPaul Walmsley u32 omap_ctrl_readl(u16 offset)
4669d88a00SPaul Walmsley {
4769d88a00SPaul Walmsley 	return __raw_readl(OMAP_CTRL_REGADDR(offset));
4869d88a00SPaul Walmsley }
4969d88a00SPaul Walmsley 
5069d88a00SPaul Walmsley void omap_ctrl_writeb(u8 val, u16 offset)
5169d88a00SPaul Walmsley {
5269d88a00SPaul Walmsley 	__raw_writeb(val, OMAP_CTRL_REGADDR(offset));
5369d88a00SPaul Walmsley }
5469d88a00SPaul Walmsley 
5569d88a00SPaul Walmsley void omap_ctrl_writew(u16 val, u16 offset)
5669d88a00SPaul Walmsley {
5769d88a00SPaul Walmsley 	__raw_writew(val, OMAP_CTRL_REGADDR(offset));
5869d88a00SPaul Walmsley }
5969d88a00SPaul Walmsley 
6069d88a00SPaul Walmsley void omap_ctrl_writel(u32 val, u16 offset)
6169d88a00SPaul Walmsley {
6269d88a00SPaul Walmsley 	__raw_writel(val, OMAP_CTRL_REGADDR(offset));
6369d88a00SPaul Walmsley }
6469d88a00SPaul Walmsley 
65