1 /* 2 * linux/include/asm-mips/txx9/generic.h 3 * 4 * This file is subject to the terms and conditions of the GNU General Public 5 * License. See the file "COPYING" in the main directory of this archive 6 * for more details. 7 */ 8 #ifndef __ASM_TXX9_GENERIC_H 9 #define __ASM_TXX9_GENERIC_H 10 11 #include <linux/init.h> 12 #include <linux/ioport.h> /* for struct resource */ 13 14 extern struct resource txx9_ce_res[]; 15 #define TXX9_CE(n) (unsigned long)(txx9_ce_res[(n)].start) 16 extern unsigned int txx9_pcode; 17 extern char txx9_pcode_str[8]; 18 void txx9_reg_res_init(unsigned int pcode, unsigned long base, 19 unsigned long size); 20 21 extern unsigned int txx9_master_clock; 22 extern unsigned int txx9_cpu_clock; 23 extern unsigned int txx9_gbus_clock; 24 #define TXX9_IMCLK (txx9_gbus_clock / 2) 25 26 extern int txx9_ccfg_toeon; 27 struct uart_port; 28 int early_serial_txx9_setup(struct uart_port *port); 29 30 struct pci_dev; 31 struct txx9_board_vec { 32 const char *system; 33 void (*prom_init)(void); 34 void (*mem_setup)(void); 35 void (*irq_setup)(void); 36 void (*time_init)(void); 37 void (*arch_init)(void); 38 void (*device_init)(void); 39 #ifdef CONFIG_PCI 40 int (*pci_map_irq)(const struct pci_dev *dev, u8 slot, u8 pin); 41 #endif 42 }; 43 extern struct txx9_board_vec *txx9_board_vec; 44 extern int (*txx9_irq_dispatch)(int pending); 45 const char *prom_getenv(const char *name); 46 void txx9_wdt_init(unsigned long base); 47 void txx9_wdt_now(unsigned long base); 48 void txx9_spi_init(int busid, unsigned long base, int irq); 49 void txx9_ethaddr_init(unsigned int id, unsigned char *ethaddr); 50 void txx9_sio_init(unsigned long baseaddr, int irq, 51 unsigned int line, unsigned int sclk, int nocts); 52 void prom_putchar(char c); 53 #ifdef CONFIG_EARLY_PRINTK 54 extern void (*txx9_prom_putchar)(char c); 55 void txx9_sio_putchar_init(unsigned long baseaddr); 56 #else 57 static inline void txx9_sio_putchar_init(unsigned long baseaddr) 58 { 59 } 60 #endif 61 62 struct physmap_flash_data; 63 void txx9_physmap_flash_init(int no, unsigned long addr, unsigned long size, 64 const struct physmap_flash_data *pdata); 65 66 /* 8 bit version of __fls(): find first bit set (returns 0..7) */ 67 static inline unsigned int __fls8(unsigned char x) 68 { 69 int r = 7; 70 71 if (!(x & 0xf0)) { 72 r -= 4; 73 x <<= 4; 74 } 75 if (!(x & 0xc0)) { 76 r -= 2; 77 x <<= 2; 78 } 79 if (!(x & 0x80)) 80 r -= 1; 81 return r; 82 } 83 84 void txx9_iocled_init(unsigned long baseaddr, 85 int basenum, unsigned int num, int lowactive, 86 const char *color, char **deftriggers); 87 88 /* 7SEG LED */ 89 void txx9_7segled_init(unsigned int num, 90 void (*putc)(unsigned int pos, unsigned char val)); 91 int txx9_7segled_putc(unsigned int pos, char c); 92 93 void __init txx9_aclc_init(unsigned long baseaddr, int irq, 94 unsigned int dmac_id, 95 unsigned int dma_chan_out, 96 unsigned int dma_chan_in); 97 void __init txx9_sramc_init(struct resource *r); 98 99 #endif /* __ASM_TXX9_GENERIC_H */ 100