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