Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  *
0004  *  Copyright (C) 2010 John Crispin <john@phrozen.org>
0005  */
0006 #ifndef _LANTIQ_H__
0007 #define _LANTIQ_H__
0008 
0009 #include <linux/irq.h>
0010 #include <linux/device.h>
0011 #include <linux/clk.h>
0012 
0013 /* generic reg access functions */
0014 #define ltq_r32(reg)        __raw_readl(reg)
0015 #define ltq_w32(val, reg)   __raw_writel(val, reg)
0016 #define ltq_w32_mask(clear, set, reg)   \
0017     ltq_w32((ltq_r32(reg) & ~(clear)) | (set), reg)
0018 #define ltq_r8(reg)     __raw_readb(reg)
0019 #define ltq_w8(val, reg)    __raw_writeb(val, reg)
0020 
0021 /* register access macros for EBU and CGU */
0022 #define ltq_ebu_w32(x, y)   ltq_w32((x), ltq_ebu_membase + (y))
0023 #define ltq_ebu_r32(x)      ltq_r32(ltq_ebu_membase + (x))
0024 #define ltq_ebu_w32_mask(x, y, z) \
0025     ltq_w32_mask(x, y, ltq_ebu_membase + (z))
0026 extern __iomem void *ltq_ebu_membase;
0027 
0028 /* spinlock all ebu i/o */
0029 extern spinlock_t ebu_lock;
0030 
0031 /* some irq helpers */
0032 extern void ltq_disable_irq(struct irq_data *data);
0033 extern void ltq_mask_and_ack_irq(struct irq_data *data);
0034 extern void ltq_enable_irq(struct irq_data *data);
0035 extern int ltq_eiu_get_irq(int exin);
0036 
0037 /* clock handling */
0038 extern int clk_activate(struct clk *clk);
0039 extern void clk_deactivate(struct clk *clk);
0040 extern struct clk *clk_get_cpu(void);
0041 extern struct clk *clk_get_fpi(void);
0042 extern struct clk *clk_get_io(void);
0043 extern struct clk *clk_get_ppe(void);
0044 
0045 /* find out what bootsource we have */
0046 extern unsigned char ltq_boot_select(void);
0047 /* find out the soc type */
0048 extern int ltq_soc_type(void);
0049 
0050 #define IOPORT_RESOURCE_START   0x10000000
0051 #define IOPORT_RESOURCE_END 0xffffffff
0052 #define IOMEM_RESOURCE_START    0x10000000
0053 #define IOMEM_RESOURCE_END  0xffffffff
0054 
0055 #endif