diff options
Diffstat (limited to 'include/asm-powerpc')
-rw-r--r-- | include/asm-powerpc/asm-compat.h | 2 | ||||
-rw-r--r-- | include/asm-powerpc/hugetlb.h | 10 | ||||
-rw-r--r-- | include/asm-powerpc/ide.h | 26 | ||||
-rw-r--r-- | include/asm-powerpc/io.h | 5 | ||||
-rw-r--r-- | include/asm-powerpc/kgdb.h | 92 | ||||
-rw-r--r-- | include/asm-powerpc/machdep.h | 3 | ||||
-rw-r--r-- | include/asm-powerpc/mmu-hash64.h | 6 | ||||
-rw-r--r-- | include/asm-powerpc/page.h | 3 | ||||
-rw-r--r-- | include/asm-powerpc/page_64.h | 1 | ||||
-rw-r--r-- | include/asm-powerpc/pgalloc-64.h | 4 | ||||
-rw-r--r-- | include/asm-powerpc/pgtable-4k.h | 3 | ||||
-rw-r--r-- | include/asm-powerpc/pgtable-64k.h | 2 | ||||
-rw-r--r-- | include/asm-powerpc/pgtable-ppc32.h | 31 | ||||
-rw-r--r-- | include/asm-powerpc/pgtable-ppc64.h | 8 | ||||
-rw-r--r-- | include/asm-powerpc/pmi.h | 1 | ||||
-rw-r--r-- | include/asm-powerpc/ps3.h | 7 | ||||
-rw-r--r-- | include/asm-powerpc/reg.h | 4 | ||||
-rw-r--r-- | include/asm-powerpc/semaphore.h | 1 | ||||
-rw-r--r-- | include/asm-powerpc/uaccess.h | 21 | ||||
-rw-r--r-- | include/asm-powerpc/ucc_fast.h | 8 |
20 files changed, 128 insertions, 110 deletions
diff --git a/include/asm-powerpc/asm-compat.h b/include/asm-powerpc/asm-compat.h index 8ec2e1da68bf..8f0fe7971949 100644 --- a/include/asm-powerpc/asm-compat.h +++ b/include/asm-powerpc/asm-compat.h | |||
@@ -22,6 +22,7 @@ | |||
22 | #define PPC_STL stringify_in_c(std) | 22 | #define PPC_STL stringify_in_c(std) |
23 | #define PPC_LCMPI stringify_in_c(cmpdi) | 23 | #define PPC_LCMPI stringify_in_c(cmpdi) |
24 | #define PPC_LONG stringify_in_c(.llong) | 24 | #define PPC_LONG stringify_in_c(.llong) |
25 | #define PPC_LONG_ALIGN stringify_in_c(.balign 8) | ||
25 | #define PPC_TLNEI stringify_in_c(tdnei) | 26 | #define PPC_TLNEI stringify_in_c(tdnei) |
26 | #define PPC_LLARX stringify_in_c(ldarx) | 27 | #define PPC_LLARX stringify_in_c(ldarx) |
27 | #define PPC_STLCX stringify_in_c(stdcx.) | 28 | #define PPC_STLCX stringify_in_c(stdcx.) |
@@ -43,6 +44,7 @@ | |||
43 | #define PPC_STL stringify_in_c(stw) | 44 | #define PPC_STL stringify_in_c(stw) |
44 | #define PPC_LCMPI stringify_in_c(cmpwi) | 45 | #define PPC_LCMPI stringify_in_c(cmpwi) |
45 | #define PPC_LONG stringify_in_c(.long) | 46 | #define PPC_LONG stringify_in_c(.long) |
47 | #define PPC_LONG_ALIGN stringify_in_c(.balign 4) | ||
46 | #define PPC_TLNEI stringify_in_c(twnei) | 48 | #define PPC_TLNEI stringify_in_c(twnei) |
47 | #define PPC_LLARX stringify_in_c(lwarx) | 49 | #define PPC_LLARX stringify_in_c(lwarx) |
48 | #define PPC_STLCX stringify_in_c(stwcx.) | 50 | #define PPC_STLCX stringify_in_c(stwcx.) |
diff --git a/include/asm-powerpc/hugetlb.h b/include/asm-powerpc/hugetlb.h index be32ff02f4a0..26f0d0ab27a5 100644 --- a/include/asm-powerpc/hugetlb.h +++ b/include/asm-powerpc/hugetlb.h | |||
@@ -7,7 +7,7 @@ | |||
7 | int is_hugepage_only_range(struct mm_struct *mm, unsigned long addr, | 7 | int is_hugepage_only_range(struct mm_struct *mm, unsigned long addr, |
8 | unsigned long len); | 8 | unsigned long len); |
9 | 9 | ||
10 | void hugetlb_free_pgd_range(struct mmu_gather **tlb, unsigned long addr, | 10 | void hugetlb_free_pgd_range(struct mmu_gather *tlb, unsigned long addr, |
11 | unsigned long end, unsigned long floor, | 11 | unsigned long end, unsigned long floor, |
12 | unsigned long ceiling); | 12 | unsigned long ceiling); |
13 | 13 | ||
@@ -21,11 +21,13 @@ pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, | |||
21 | * If the arch doesn't supply something else, assume that hugepage | 21 | * If the arch doesn't supply something else, assume that hugepage |
22 | * size aligned regions are ok without further preparation. | 22 | * size aligned regions are ok without further preparation. |
23 | */ | 23 | */ |
24 | static inline int prepare_hugepage_range(unsigned long addr, unsigned long len) | 24 | static inline int prepare_hugepage_range(struct file *file, |
25 | unsigned long addr, unsigned long len) | ||
25 | { | 26 | { |
26 | if (len & ~HPAGE_MASK) | 27 | struct hstate *h = hstate_file(file); |
28 | if (len & ~huge_page_mask(h)) | ||
27 | return -EINVAL; | 29 | return -EINVAL; |
28 | if (addr & ~HPAGE_MASK) | 30 | if (addr & ~huge_page_mask(h)) |
29 | return -EINVAL; | 31 | return -EINVAL; |
30 | return 0; | 32 | return 0; |
31 | } | 33 | } |
diff --git a/include/asm-powerpc/ide.h b/include/asm-powerpc/ide.h index 3d90bf7d3d73..1aaf27be8741 100644 --- a/include/asm-powerpc/ide.h +++ b/include/asm-powerpc/ide.h | |||
@@ -14,14 +14,6 @@ | |||
14 | #endif | 14 | #endif |
15 | #include <asm/io.h> | 15 | #include <asm/io.h> |
16 | 16 | ||
17 | #ifndef MAX_HWIFS | ||
18 | #ifdef __powerpc64__ | ||
19 | #define MAX_HWIFS 10 | ||
20 | #else | ||
21 | #define MAX_HWIFS 8 | ||
22 | #endif | ||
23 | #endif | ||
24 | |||
25 | #define __ide_mm_insw(p, a, c) readsw((void __iomem *)(p), (a), (c)) | 17 | #define __ide_mm_insw(p, a, c) readsw((void __iomem *)(p), (a), (c)) |
26 | #define __ide_mm_insl(p, a, c) readsl((void __iomem *)(p), (a), (c)) | 18 | #define __ide_mm_insl(p, a, c) readsl((void __iomem *)(p), (a), (c)) |
27 | #define __ide_mm_outsw(p, a, c) writesw((void __iomem *)(p), (a), (c)) | 19 | #define __ide_mm_outsw(p, a, c) writesw((void __iomem *)(p), (a), (c)) |
@@ -40,16 +32,6 @@ static __inline__ int ide_default_irq(unsigned long base) | |||
40 | case 0x170: return 15; | 32 | case 0x170: return 15; |
41 | } | 33 | } |
42 | #endif | 34 | #endif |
43 | #ifdef CONFIG_PPC_PREP | ||
44 | switch (base) { | ||
45 | case 0x1f0: return 13; | ||
46 | case 0x170: return 13; | ||
47 | case 0x1e8: return 11; | ||
48 | case 0x168: return 10; | ||
49 | case 0xfff0: return 14; /* MCP(N)750 ide0 */ | ||
50 | case 0xffe0: return 15; /* MCP(N)750 ide1 */ | ||
51 | } | ||
52 | #endif | ||
53 | return 0; | 35 | return 0; |
54 | } | 36 | } |
55 | 37 | ||
@@ -62,14 +44,6 @@ static __inline__ unsigned long ide_default_io_base(int index) | |||
62 | case 1: return 0x170; | 44 | case 1: return 0x170; |
63 | } | 45 | } |
64 | #endif | 46 | #endif |
65 | #ifdef CONFIG_PPC_PREP | ||
66 | switch (index) { | ||
67 | case 0: return 0x1f0; | ||
68 | case 1: return 0x170; | ||
69 | case 2: return 0x1e8; | ||
70 | case 3: return 0x168; | ||
71 | } | ||
72 | #endif | ||
73 | return 0; | 47 | return 0; |
74 | } | 48 | } |
75 | 49 | ||
diff --git a/include/asm-powerpc/io.h b/include/asm-powerpc/io.h index 8b627823f5f9..77c7fa025e65 100644 --- a/include/asm-powerpc/io.h +++ b/include/asm-powerpc/io.h | |||
@@ -617,7 +617,8 @@ static inline void iosync(void) | |||
617 | * and can be hooked by the platform via ppc_md | 617 | * and can be hooked by the platform via ppc_md |
618 | * | 618 | * |
619 | * * ioremap_flags allows to specify the page flags as an argument and can | 619 | * * ioremap_flags allows to specify the page flags as an argument and can |
620 | * also be hooked by the platform via ppc_md | 620 | * also be hooked by the platform via ppc_md. ioremap_prot is the exact |
621 | * same thing as ioremap_flags. | ||
621 | * | 622 | * |
622 | * * ioremap_nocache is identical to ioremap | 623 | * * ioremap_nocache is identical to ioremap |
623 | * | 624 | * |
@@ -639,6 +640,8 @@ extern void __iomem *ioremap(phys_addr_t address, unsigned long size); | |||
639 | extern void __iomem *ioremap_flags(phys_addr_t address, unsigned long size, | 640 | extern void __iomem *ioremap_flags(phys_addr_t address, unsigned long size, |
640 | unsigned long flags); | 641 | unsigned long flags); |
641 | #define ioremap_nocache(addr, size) ioremap((addr), (size)) | 642 | #define ioremap_nocache(addr, size) ioremap((addr), (size)) |
643 | #define ioremap_prot(addr, size, prot) ioremap_flags((addr), (size), (prot)) | ||
644 | |||
642 | extern void iounmap(volatile void __iomem *addr); | 645 | extern void iounmap(volatile void __iomem *addr); |
643 | 646 | ||
644 | extern void __iomem *__ioremap(phys_addr_t, unsigned long size, | 647 | extern void __iomem *__ioremap(phys_addr_t, unsigned long size, |
diff --git a/include/asm-powerpc/kgdb.h b/include/asm-powerpc/kgdb.h index b617dac82969..1399caf719ae 100644 --- a/include/asm-powerpc/kgdb.h +++ b/include/asm-powerpc/kgdb.h | |||
@@ -1,57 +1,65 @@ | |||
1 | /* | 1 | /* |
2 | * kgdb.h: Defines and declarations for serial line source level | 2 | * include/asm-powerpc/kgdb.h |
3 | * remote debugging of the Linux kernel using gdb. | ||
4 | * | 3 | * |
4 | * The PowerPC (32/64) specific defines / externs for KGDB. Based on | ||
5 | * the previous 32bit and 64bit specific files, which had the following | ||
6 | * copyrights: | ||
7 | * | ||
8 | * PPC64 Mods (C) 2005 Frank Rowand (frowand@mvista.com) | ||
9 | * PPC Mods (C) 2004 Tom Rini (trini@mvista.com) | ||
10 | * PPC Mods (C) 2003 John Whitney (john.whitney@timesys.com) | ||
5 | * PPC Mods (C) 1998 Michael Tesch (tesch@cs.wisc.edu) | 11 | * PPC Mods (C) 1998 Michael Tesch (tesch@cs.wisc.edu) |
6 | * | 12 | * |
13 | * | ||
7 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 14 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
15 | * Author: Tom Rini <trini@kernel.crashing.org> | ||
16 | * | ||
17 | * 2006 (c) MontaVista Software, Inc. This file is licensed under | ||
18 | * the terms of the GNU General Public License version 2. This program | ||
19 | * is licensed "as is" without any warranty of any kind, whether express | ||
20 | * or implied. | ||
8 | */ | 21 | */ |
9 | #ifdef __KERNEL__ | 22 | #ifdef __KERNEL__ |
10 | #ifndef _PPC_KGDB_H | 23 | #ifndef __POWERPC_KGDB_H__ |
11 | #define _PPC_KGDB_H | 24 | #define __POWERPC_KGDB_H__ |
12 | 25 | ||
13 | #ifndef __ASSEMBLY__ | 26 | #ifndef __ASSEMBLY__ |
14 | 27 | ||
15 | /* Things specific to the gen550 backend. */ | 28 | #define BREAK_INSTR_SIZE 4 |
16 | struct uart_port; | 29 | #define BUFMAX ((NUMREGBYTES * 2) + 512) |
17 | 30 | #define OUTBUFMAX ((NUMREGBYTES * 2) + 512) | |
18 | extern void gen550_progress(char *, unsigned short); | 31 | static inline void arch_kgdb_breakpoint(void) |
19 | extern void gen550_kgdb_map_scc(void); | 32 | { |
20 | extern void gen550_init(int, struct uart_port *); | 33 | asm(".long 0x7d821008"); /* twge r2, r2 */ |
21 | 34 | } | |
22 | /* Things specific to the pmac backend. */ | 35 | #define CACHE_FLUSH_IS_SAFE 1 |
23 | extern void zs_kgdb_hook(int tty_num); | ||
24 | |||
25 | /* To init the kgdb engine. (called by serial hook)*/ | ||
26 | extern void set_debug_traps(void); | ||
27 | |||
28 | /* To enter the debugger explicitly. */ | ||
29 | extern void breakpoint(void); | ||
30 | |||
31 | /* For taking exceptions | ||
32 | * these are defined in traps.c | ||
33 | */ | ||
34 | extern int (*debugger)(struct pt_regs *regs); | ||
35 | extern int (*debugger_bpt)(struct pt_regs *regs); | ||
36 | extern int (*debugger_sstep)(struct pt_regs *regs); | ||
37 | extern int (*debugger_iabr_match)(struct pt_regs *regs); | ||
38 | extern int (*debugger_dabr_match)(struct pt_regs *regs); | ||
39 | extern void (*debugger_fault_handler)(struct pt_regs *regs); | ||
40 | |||
41 | /* What we bring to the party */ | ||
42 | int kgdb_bpt(struct pt_regs *regs); | ||
43 | int kgdb_sstep(struct pt_regs *regs); | ||
44 | void kgdb(struct pt_regs *regs); | ||
45 | int kgdb_iabr_match(struct pt_regs *regs); | ||
46 | int kgdb_dabr_match(struct pt_regs *regs); | ||
47 | 36 | ||
37 | /* The number bytes of registers we have to save depends on a few | ||
38 | * things. For 64bit we default to not including vector registers and | ||
39 | * vector state registers. */ | ||
40 | #ifdef CONFIG_PPC64 | ||
48 | /* | 41 | /* |
49 | * external low-level support routines (ie macserial.c) | 42 | * 64 bit (8 byte) registers: |
43 | * 32 gpr, 32 fpr, nip, msr, link, ctr | ||
44 | * 32 bit (4 byte) registers: | ||
45 | * ccr, xer, fpscr | ||
50 | */ | 46 | */ |
51 | extern void kgdb_interruptible(int); /* control interrupts from serial */ | 47 | #define NUMREGBYTES ((68 * 8) + (3 * 4)) |
52 | extern void putDebugChar(char); /* write a single character */ | 48 | #define NUMCRITREGBYTES 184 |
53 | extern char getDebugChar(void); /* read and return a single char */ | 49 | #else /* CONFIG_PPC32 */ |
54 | 50 | /* On non-E500 family PPC32 we determine the size by picking the last | |
51 | * register we need, but on E500 we skip sections so we list what we | ||
52 | * need to store, and add it up. */ | ||
53 | #ifndef CONFIG_E500 | ||
54 | #define MAXREG (PT_FPSCR+1) | ||
55 | #else | ||
56 | /* 32 GPRs (8 bytes), nip, msr, ccr, link, ctr, xer, acc (8 bytes), spefscr*/ | ||
57 | #define MAXREG ((32*2)+6+2+1) | ||
58 | #endif | ||
59 | #define NUMREGBYTES (MAXREG * sizeof(int)) | ||
60 | /* CR/LR, R1, R2, R13-R31 inclusive. */ | ||
61 | #define NUMCRITREGBYTES (23 * sizeof(int)) | ||
62 | #endif /* 32/64 */ | ||
55 | #endif /* !(__ASSEMBLY__) */ | 63 | #endif /* !(__ASSEMBLY__) */ |
56 | #endif /* !(_PPC_KGDB_H) */ | 64 | #endif /* !__POWERPC_KGDB_H__ */ |
57 | #endif /* __KERNEL__ */ | 65 | #endif /* __KERNEL__ */ |
diff --git a/include/asm-powerpc/machdep.h b/include/asm-powerpc/machdep.h index 989922621e35..1233d735fd28 100644 --- a/include/asm-powerpc/machdep.h +++ b/include/asm-powerpc/machdep.h | |||
@@ -80,7 +80,8 @@ struct machdep_calls { | |||
80 | long index, | 80 | long index, |
81 | long npages, | 81 | long npages, |
82 | unsigned long uaddr, | 82 | unsigned long uaddr, |
83 | enum dma_data_direction direction); | 83 | enum dma_data_direction direction, |
84 | struct dma_attrs *attrs); | ||
84 | void (*tce_free)(struct iommu_table *tbl, | 85 | void (*tce_free)(struct iommu_table *tbl, |
85 | long index, | 86 | long index, |
86 | long npages); | 87 | long npages); |
diff --git a/include/asm-powerpc/mmu-hash64.h b/include/asm-powerpc/mmu-hash64.h index d1dc16afb118..19c7a9403490 100644 --- a/include/asm-powerpc/mmu-hash64.h +++ b/include/asm-powerpc/mmu-hash64.h | |||
@@ -194,9 +194,9 @@ extern int mmu_ci_restrictions; | |||
194 | 194 | ||
195 | #ifdef CONFIG_HUGETLB_PAGE | 195 | #ifdef CONFIG_HUGETLB_PAGE |
196 | /* | 196 | /* |
197 | * The page size index of the huge pages for use by hugetlbfs | 197 | * The page size indexes of the huge pages for use by hugetlbfs |
198 | */ | 198 | */ |
199 | extern int mmu_huge_psize; | 199 | extern unsigned int mmu_huge_psizes[MMU_PAGE_COUNT]; |
200 | 200 | ||
201 | #endif /* CONFIG_HUGETLB_PAGE */ | 201 | #endif /* CONFIG_HUGETLB_PAGE */ |
202 | 202 | ||
@@ -281,6 +281,8 @@ extern int htab_bolt_mapping(unsigned long vstart, unsigned long vend, | |||
281 | unsigned long pstart, unsigned long mode, | 281 | unsigned long pstart, unsigned long mode, |
282 | int psize, int ssize); | 282 | int psize, int ssize); |
283 | extern void set_huge_psize(int psize); | 283 | extern void set_huge_psize(int psize); |
284 | extern void add_gpage(unsigned long addr, unsigned long page_size, | ||
285 | unsigned long number_of_pages); | ||
284 | extern void demote_segment_4k(struct mm_struct *mm, unsigned long addr); | 286 | extern void demote_segment_4k(struct mm_struct *mm, unsigned long addr); |
285 | 287 | ||
286 | extern void htab_initialize(void); | 288 | extern void htab_initialize(void); |
diff --git a/include/asm-powerpc/page.h b/include/asm-powerpc/page.h index cffdf0eb0df6..e088545cb3f5 100644 --- a/include/asm-powerpc/page.h +++ b/include/asm-powerpc/page.h | |||
@@ -119,9 +119,6 @@ extern phys_addr_t kernstart_addr; | |||
119 | /* align addr on a size boundary - adjust address up if needed */ | 119 | /* align addr on a size boundary - adjust address up if needed */ |
120 | #define _ALIGN(addr,size) _ALIGN_UP(addr,size) | 120 | #define _ALIGN(addr,size) _ALIGN_UP(addr,size) |
121 | 121 | ||
122 | /* to align the pointer to the (next) page boundary */ | ||
123 | #define PAGE_ALIGN(addr) _ALIGN(addr, PAGE_SIZE) | ||
124 | |||
125 | /* | 122 | /* |
126 | * Don't compare things with KERNELBASE or PAGE_OFFSET to test for | 123 | * Don't compare things with KERNELBASE or PAGE_OFFSET to test for |
127 | * "kernelness", use is_kernel_addr() - it should do what you want. | 124 | * "kernelness", use is_kernel_addr() - it should do what you want. |
diff --git a/include/asm-powerpc/page_64.h b/include/asm-powerpc/page_64.h index 02fd80710e9d..043bfdfe4f73 100644 --- a/include/asm-powerpc/page_64.h +++ b/include/asm-powerpc/page_64.h | |||
@@ -90,6 +90,7 @@ extern unsigned int HPAGE_SHIFT; | |||
90 | #define HPAGE_SIZE ((1UL) << HPAGE_SHIFT) | 90 | #define HPAGE_SIZE ((1UL) << HPAGE_SHIFT) |
91 | #define HPAGE_MASK (~(HPAGE_SIZE - 1)) | 91 | #define HPAGE_MASK (~(HPAGE_SIZE - 1)) |
92 | #define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT) | 92 | #define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT) |
93 | #define HUGE_MAX_HSTATE 3 | ||
93 | 94 | ||
94 | #endif /* __ASSEMBLY__ */ | 95 | #endif /* __ASSEMBLY__ */ |
95 | 96 | ||
diff --git a/include/asm-powerpc/pgalloc-64.h b/include/asm-powerpc/pgalloc-64.h index 68980990f62a..812a1d8f35cb 100644 --- a/include/asm-powerpc/pgalloc-64.h +++ b/include/asm-powerpc/pgalloc-64.h | |||
@@ -22,7 +22,7 @@ extern struct kmem_cache *pgtable_cache[]; | |||
22 | #define PUD_CACHE_NUM 1 | 22 | #define PUD_CACHE_NUM 1 |
23 | #define PMD_CACHE_NUM 1 | 23 | #define PMD_CACHE_NUM 1 |
24 | #define HUGEPTE_CACHE_NUM 2 | 24 | #define HUGEPTE_CACHE_NUM 2 |
25 | #define PTE_NONCACHE_NUM 3 /* from GFP rather than kmem_cache */ | 25 | #define PTE_NONCACHE_NUM 7 /* from GFP rather than kmem_cache */ |
26 | 26 | ||
27 | static inline pgd_t *pgd_alloc(struct mm_struct *mm) | 27 | static inline pgd_t *pgd_alloc(struct mm_struct *mm) |
28 | { | 28 | { |
@@ -119,7 +119,7 @@ static inline void pte_free(struct mm_struct *mm, pgtable_t ptepage) | |||
119 | __free_page(ptepage); | 119 | __free_page(ptepage); |
120 | } | 120 | } |
121 | 121 | ||
122 | #define PGF_CACHENUM_MASK 0x3 | 122 | #define PGF_CACHENUM_MASK 0x7 |
123 | 123 | ||
124 | typedef struct pgtable_free { | 124 | typedef struct pgtable_free { |
125 | unsigned long val; | 125 | unsigned long val; |
diff --git a/include/asm-powerpc/pgtable-4k.h b/include/asm-powerpc/pgtable-4k.h index fd2090dc1dce..c9601dfb4a1e 100644 --- a/include/asm-powerpc/pgtable-4k.h +++ b/include/asm-powerpc/pgtable-4k.h | |||
@@ -51,6 +51,9 @@ | |||
51 | #define _PAGE_HPTEFLAGS (_PAGE_BUSY | _PAGE_HASHPTE | \ | 51 | #define _PAGE_HPTEFLAGS (_PAGE_BUSY | _PAGE_HASHPTE | \ |
52 | _PAGE_SECONDARY | _PAGE_GROUP_IX) | 52 | _PAGE_SECONDARY | _PAGE_GROUP_IX) |
53 | 53 | ||
54 | /* There is no 4K PFN hack on 4K pages */ | ||
55 | #define _PAGE_4K_PFN 0 | ||
56 | |||
54 | /* PAGE_MASK gives the right answer below, but only by accident */ | 57 | /* PAGE_MASK gives the right answer below, but only by accident */ |
55 | /* It should be preserving the high 48 bits and then specifically */ | 58 | /* It should be preserving the high 48 bits and then specifically */ |
56 | /* preserving _PAGE_SECONDARY | _PAGE_GROUP_IX */ | 59 | /* preserving _PAGE_SECONDARY | _PAGE_GROUP_IX */ |
diff --git a/include/asm-powerpc/pgtable-64k.h b/include/asm-powerpc/pgtable-64k.h index c5007712473f..7e54adb35596 100644 --- a/include/asm-powerpc/pgtable-64k.h +++ b/include/asm-powerpc/pgtable-64k.h | |||
@@ -138,7 +138,7 @@ static inline struct subpage_prot_table *pgd_subpage_prot(pgd_t *pgd) | |||
138 | unsigned __split = (psize == MMU_PAGE_4K || \ | 138 | unsigned __split = (psize == MMU_PAGE_4K || \ |
139 | psize == MMU_PAGE_64K_AP); \ | 139 | psize == MMU_PAGE_64K_AP); \ |
140 | shift = mmu_psize_defs[psize].shift; \ | 140 | shift = mmu_psize_defs[psize].shift; \ |
141 | for (index = 0; va < __end; index++, va += (1 << shift)) { \ | 141 | for (index = 0; va < __end; index++, va += (1L << shift)) { \ |
142 | if (!__split || __rpte_sub_valid(rpte, index)) do { \ | 142 | if (!__split || __rpte_sub_valid(rpte, index)) do { \ |
143 | 143 | ||
144 | #define pte_iterate_hashed_end() } while(0); } } while(0) | 144 | #define pte_iterate_hashed_end() } while(0); } } while(0) |
diff --git a/include/asm-powerpc/pgtable-ppc32.h b/include/asm-powerpc/pgtable-ppc32.h index 73015f0139de..bdbab72f3ebc 100644 --- a/include/asm-powerpc/pgtable-ppc32.h +++ b/include/asm-powerpc/pgtable-ppc32.h | |||
@@ -295,10 +295,10 @@ extern int icache_44x_need_flush; | |||
295 | #define _PAGE_PRESENT 0x00001 /* S: PTE contains a translation */ | 295 | #define _PAGE_PRESENT 0x00001 /* S: PTE contains a translation */ |
296 | #define _PAGE_USER 0x00002 /* S: User page (maps to UR) */ | 296 | #define _PAGE_USER 0x00002 /* S: User page (maps to UR) */ |
297 | #define _PAGE_FILE 0x00002 /* S: when !present: nonlinear file mapping */ | 297 | #define _PAGE_FILE 0x00002 /* S: when !present: nonlinear file mapping */ |
298 | #define _PAGE_ACCESSED 0x00004 /* S: Page referenced */ | 298 | #define _PAGE_RW 0x00004 /* S: Write permission (SW) */ |
299 | #define _PAGE_HWWRITE 0x00008 /* H: Dirty & RW, set in exception */ | 299 | #define _PAGE_DIRTY 0x00008 /* S: Page dirty */ |
300 | #define _PAGE_RW 0x00010 /* S: Write permission */ | 300 | #define _PAGE_HWEXEC 0x00010 /* H: SX permission */ |
301 | #define _PAGE_HWEXEC 0x00020 /* H: UX permission */ | 301 | #define _PAGE_ACCESSED 0x00020 /* S: Page referenced */ |
302 | 302 | ||
303 | #define _PAGE_ENDIAN 0x00040 /* H: E bit */ | 303 | #define _PAGE_ENDIAN 0x00040 /* H: E bit */ |
304 | #define _PAGE_GUARDED 0x00080 /* H: G bit */ | 304 | #define _PAGE_GUARDED 0x00080 /* H: G bit */ |
@@ -307,21 +307,14 @@ extern int icache_44x_need_flush; | |||
307 | #define _PAGE_WRITETHRU 0x00400 /* H: W bit */ | 307 | #define _PAGE_WRITETHRU 0x00400 /* H: W bit */ |
308 | 308 | ||
309 | #ifdef CONFIG_PTE_64BIT | 309 | #ifdef CONFIG_PTE_64BIT |
310 | #define _PAGE_DIRTY 0x08000 /* S: Page dirty */ | ||
311 | |||
312 | /* ERPN in a PTE never gets cleared, ignore it */ | 310 | /* ERPN in a PTE never gets cleared, ignore it */ |
313 | #define _PTE_NONE_MASK 0xffffffffffff0000ULL | 311 | #define _PTE_NONE_MASK 0xffffffffffff0000ULL |
314 | #else | ||
315 | #define _PAGE_DIRTY 0x00800 /* S: Page dirty */ | ||
316 | #endif | 312 | #endif |
317 | 313 | ||
318 | #define _PMD_PRESENT 0 | 314 | #define _PMD_PRESENT 0 |
319 | #define _PMD_PRESENT_MASK (PAGE_MASK) | 315 | #define _PMD_PRESENT_MASK (PAGE_MASK) |
320 | #define _PMD_BAD (~PAGE_MASK) | 316 | #define _PMD_BAD (~PAGE_MASK) |
321 | 317 | ||
322 | /* Until my rework is finished, FSL BookE still needs atomic PTE updates */ | ||
323 | #define PTE_ATOMIC_UPDATES 1 | ||
324 | |||
325 | #elif defined(CONFIG_8xx) | 318 | #elif defined(CONFIG_8xx) |
326 | /* Definitions for 8xx embedded chips. */ | 319 | /* Definitions for 8xx embedded chips. */ |
327 | #define _PAGE_PRESENT 0x0001 /* Page is valid */ | 320 | #define _PAGE_PRESENT 0x0001 /* Page is valid */ |
@@ -402,6 +395,12 @@ extern int icache_44x_need_flush; | |||
402 | #ifndef _PAGE_EXEC | 395 | #ifndef _PAGE_EXEC |
403 | #define _PAGE_EXEC 0 | 396 | #define _PAGE_EXEC 0 |
404 | #endif | 397 | #endif |
398 | #ifndef _PAGE_ENDIAN | ||
399 | #define _PAGE_ENDIAN 0 | ||
400 | #endif | ||
401 | #ifndef _PAGE_COHERENT | ||
402 | #define _PAGE_COHERENT 0 | ||
403 | #endif | ||
405 | #ifndef _PMD_PRESENT_MASK | 404 | #ifndef _PMD_PRESENT_MASK |
406 | #define _PMD_PRESENT_MASK _PMD_PRESENT | 405 | #define _PMD_PRESENT_MASK _PMD_PRESENT |
407 | #endif | 406 | #endif |
@@ -412,6 +411,12 @@ extern int icache_44x_need_flush; | |||
412 | 411 | ||
413 | #define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY) | 412 | #define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY) |
414 | 413 | ||
414 | |||
415 | #define PAGE_PROT_BITS __pgprot(_PAGE_GUARDED | _PAGE_COHERENT | _PAGE_NO_CACHE | \ | ||
416 | _PAGE_WRITETHRU | _PAGE_ENDIAN | \ | ||
417 | _PAGE_USER | _PAGE_ACCESSED | \ | ||
418 | _PAGE_RW | _PAGE_HWWRITE | _PAGE_DIRTY | \ | ||
419 | _PAGE_EXEC | _PAGE_HWEXEC) | ||
415 | /* | 420 | /* |
416 | * Note: the _PAGE_COHERENT bit automatically gets set in the hardware | 421 | * Note: the _PAGE_COHERENT bit automatically gets set in the hardware |
417 | * PTE if CONFIG_SMP is defined (hash_page does this); there is no need | 422 | * PTE if CONFIG_SMP is defined (hash_page does this); there is no need |
@@ -545,6 +550,10 @@ static inline pte_t pte_mkyoung(pte_t pte) { | |||
545 | pte_val(pte) |= _PAGE_ACCESSED; return pte; } | 550 | pte_val(pte) |= _PAGE_ACCESSED; return pte; } |
546 | static inline pte_t pte_mkspecial(pte_t pte) { | 551 | static inline pte_t pte_mkspecial(pte_t pte) { |
547 | return pte; } | 552 | return pte; } |
553 | static inline unsigned long pte_pgprot(pte_t pte) | ||
554 | { | ||
555 | return __pgprot(pte_val(pte)) & PAGE_PROT_BITS; | ||
556 | } | ||
548 | 557 | ||
549 | static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) | 558 | static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) |
550 | { | 559 | { |
diff --git a/include/asm-powerpc/pgtable-ppc64.h b/include/asm-powerpc/pgtable-ppc64.h index ab98a9c80b28..ba8000352b9a 100644 --- a/include/asm-powerpc/pgtable-ppc64.h +++ b/include/asm-powerpc/pgtable-ppc64.h | |||
@@ -117,6 +117,10 @@ | |||
117 | #define PAGE_AGP __pgprot(_PAGE_BASE | _PAGE_WRENABLE | _PAGE_NO_CACHE) | 117 | #define PAGE_AGP __pgprot(_PAGE_BASE | _PAGE_WRENABLE | _PAGE_NO_CACHE) |
118 | #define HAVE_PAGE_AGP | 118 | #define HAVE_PAGE_AGP |
119 | 119 | ||
120 | #define PAGE_PROT_BITS __pgprot(_PAGE_GUARDED | _PAGE_COHERENT | \ | ||
121 | _PAGE_NO_CACHE | _PAGE_WRITETHRU | \ | ||
122 | _PAGE_4K_PFN | _PAGE_RW | _PAGE_USER | \ | ||
123 | _PAGE_ACCESSED | _PAGE_DIRTY | _PAGE_EXEC) | ||
120 | /* PTEIDX nibble */ | 124 | /* PTEIDX nibble */ |
121 | #define _PTEIDX_SECONDARY 0x8 | 125 | #define _PTEIDX_SECONDARY 0x8 |
122 | #define _PTEIDX_GROUP_IX 0x7 | 126 | #define _PTEIDX_GROUP_IX 0x7 |
@@ -262,6 +266,10 @@ static inline pte_t pte_mkhuge(pte_t pte) { | |||
262 | return pte; } | 266 | return pte; } |
263 | static inline pte_t pte_mkspecial(pte_t pte) { | 267 | static inline pte_t pte_mkspecial(pte_t pte) { |
264 | return pte; } | 268 | return pte; } |
269 | static inline unsigned long pte_pgprot(pte_t pte) | ||
270 | { | ||
271 | return __pgprot(pte_val(pte)) & PAGE_PROT_BITS; | ||
272 | } | ||
265 | 273 | ||
266 | /* Atomic PTE updates */ | 274 | /* Atomic PTE updates */ |
267 | static inline unsigned long pte_update(struct mm_struct *mm, | 275 | static inline unsigned long pte_update(struct mm_struct *mm, |
diff --git a/include/asm-powerpc/pmi.h b/include/asm-powerpc/pmi.h index e1dc090748df..b4e91fbf5081 100644 --- a/include/asm-powerpc/pmi.h +++ b/include/asm-powerpc/pmi.h | |||
@@ -30,6 +30,7 @@ | |||
30 | #ifdef __KERNEL__ | 30 | #ifdef __KERNEL__ |
31 | 31 | ||
32 | #define PMI_TYPE_FREQ_CHANGE 0x01 | 32 | #define PMI_TYPE_FREQ_CHANGE 0x01 |
33 | #define PMI_TYPE_POWER_BUTTON 0x02 | ||
33 | #define PMI_READ_TYPE 0 | 34 | #define PMI_READ_TYPE 0 |
34 | #define PMI_READ_DATA0 1 | 35 | #define PMI_READ_DATA0 1 |
35 | #define PMI_READ_DATA1 2 | 36 | #define PMI_READ_DATA1 2 |
diff --git a/include/asm-powerpc/ps3.h b/include/asm-powerpc/ps3.h index 81ffe3b3c1ce..f9e34c493cbb 100644 --- a/include/asm-powerpc/ps3.h +++ b/include/asm-powerpc/ps3.h | |||
@@ -337,12 +337,18 @@ enum ps3_system_bus_device_type { | |||
337 | PS3_DEVICE_TYPE_LPM, | 337 | PS3_DEVICE_TYPE_LPM, |
338 | }; | 338 | }; |
339 | 339 | ||
340 | enum ps3_match_sub_id { | ||
341 | /* for PS3_MATCH_ID_GRAPHICS */ | ||
342 | PS3_MATCH_SUB_ID_FB = 1, | ||
343 | }; | ||
344 | |||
340 | /** | 345 | /** |
341 | * struct ps3_system_bus_device - a device on the system bus | 346 | * struct ps3_system_bus_device - a device on the system bus |
342 | */ | 347 | */ |
343 | 348 | ||
344 | struct ps3_system_bus_device { | 349 | struct ps3_system_bus_device { |
345 | enum ps3_match_id match_id; | 350 | enum ps3_match_id match_id; |
351 | enum ps3_match_sub_id match_sub_id; | ||
346 | enum ps3_system_bus_device_type dev_type; | 352 | enum ps3_system_bus_device_type dev_type; |
347 | 353 | ||
348 | u64 bus_id; /* SB */ | 354 | u64 bus_id; /* SB */ |
@@ -371,6 +377,7 @@ int ps3_close_hv_device(struct ps3_system_bus_device *dev); | |||
371 | 377 | ||
372 | struct ps3_system_bus_driver { | 378 | struct ps3_system_bus_driver { |
373 | enum ps3_match_id match_id; | 379 | enum ps3_match_id match_id; |
380 | enum ps3_match_sub_id match_sub_id; | ||
374 | struct device_driver core; | 381 | struct device_driver core; |
375 | int (*probe)(struct ps3_system_bus_device *); | 382 | int (*probe)(struct ps3_system_bus_device *); |
376 | int (*remove)(struct ps3_system_bus_device *); | 383 | int (*remove)(struct ps3_system_bus_device *); |
diff --git a/include/asm-powerpc/reg.h b/include/asm-powerpc/reg.h index bbccadfee0d6..c6d1ab650778 100644 --- a/include/asm-powerpc/reg.h +++ b/include/asm-powerpc/reg.h | |||
@@ -155,10 +155,12 @@ | |||
155 | #define CTRL_RUNLATCH 0x1 | 155 | #define CTRL_RUNLATCH 0x1 |
156 | #define SPRN_DABR 0x3F5 /* Data Address Breakpoint Register */ | 156 | #define SPRN_DABR 0x3F5 /* Data Address Breakpoint Register */ |
157 | #define DABR_TRANSLATION (1UL << 2) | 157 | #define DABR_TRANSLATION (1UL << 2) |
158 | #define SPRN_DABR2 0x13D /* e300 */ | ||
158 | #define SPRN_DABRX 0x3F7 /* Data Address Breakpoint Register Extension */ | 159 | #define SPRN_DABRX 0x3F7 /* Data Address Breakpoint Register Extension */ |
159 | #define DABRX_USER (1UL << 0) | 160 | #define DABRX_USER (1UL << 0) |
160 | #define DABRX_KERNEL (1UL << 1) | 161 | #define DABRX_KERNEL (1UL << 1) |
161 | #define SPRN_DAR 0x013 /* Data Address Register */ | 162 | #define SPRN_DAR 0x013 /* Data Address Register */ |
163 | #define SPRN_DBCR 0x136 /* e300 Data Breakpoint Control Reg */ | ||
162 | #define SPRN_DSISR 0x012 /* Data Storage Interrupt Status Register */ | 164 | #define SPRN_DSISR 0x012 /* Data Storage Interrupt Status Register */ |
163 | #define DSISR_NOHPTE 0x40000000 /* no translation found */ | 165 | #define DSISR_NOHPTE 0x40000000 /* no translation found */ |
164 | #define DSISR_PROTFAULT 0x08000000 /* protection fault */ | 166 | #define DSISR_PROTFAULT 0x08000000 /* protection fault */ |
@@ -264,6 +266,8 @@ | |||
264 | #define HID1_PS (1<<16) /* 750FX PLL selection */ | 266 | #define HID1_PS (1<<16) /* 750FX PLL selection */ |
265 | #define SPRN_HID2 0x3F8 /* Hardware Implementation Register 2 */ | 267 | #define SPRN_HID2 0x3F8 /* Hardware Implementation Register 2 */ |
266 | #define SPRN_IABR 0x3F2 /* Instruction Address Breakpoint Register */ | 268 | #define SPRN_IABR 0x3F2 /* Instruction Address Breakpoint Register */ |
269 | #define SPRN_IABR2 0x3FA /* 83xx */ | ||
270 | #define SPRN_IBCR 0x135 /* 83xx Insn Breakpoint Control Reg */ | ||
267 | #define SPRN_HID4 0x3F4 /* 970 HID4 */ | 271 | #define SPRN_HID4 0x3F4 /* 970 HID4 */ |
268 | #define SPRN_HID5 0x3F6 /* 970 HID5 */ | 272 | #define SPRN_HID5 0x3F6 /* 970 HID5 */ |
269 | #define SPRN_HID6 0x3F9 /* BE HID 6 */ | 273 | #define SPRN_HID6 0x3F9 /* BE HID 6 */ |
diff --git a/include/asm-powerpc/semaphore.h b/include/asm-powerpc/semaphore.h deleted file mode 100644 index d9b2034ed1d2..000000000000 --- a/include/asm-powerpc/semaphore.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <linux/semaphore.h> | ||
diff --git a/include/asm-powerpc/uaccess.h b/include/asm-powerpc/uaccess.h index 1a0736f8803f..bd0fb8495154 100644 --- a/include/asm-powerpc/uaccess.h +++ b/include/asm-powerpc/uaccess.h | |||
@@ -6,6 +6,7 @@ | |||
6 | 6 | ||
7 | #include <linux/sched.h> | 7 | #include <linux/sched.h> |
8 | #include <linux/errno.h> | 8 | #include <linux/errno.h> |
9 | #include <asm/asm-compat.h> | ||
9 | #include <asm/processor.h> | 10 | #include <asm/processor.h> |
10 | #include <asm/page.h> | 11 | #include <asm/page.h> |
11 | 12 | ||
@@ -141,12 +142,11 @@ extern long __put_user_bad(void); | |||
141 | " b 2b\n" \ | 142 | " b 2b\n" \ |
142 | ".previous\n" \ | 143 | ".previous\n" \ |
143 | ".section __ex_table,\"a\"\n" \ | 144 | ".section __ex_table,\"a\"\n" \ |
144 | " .balign %5\n" \ | 145 | PPC_LONG_ALIGN "\n" \ |
145 | PPC_LONG "1b,3b\n" \ | 146 | PPC_LONG "1b,3b\n" \ |
146 | ".previous" \ | 147 | ".previous" \ |
147 | : "=r" (err) \ | 148 | : "=r" (err) \ |
148 | : "r" (x), "b" (addr), "i" (-EFAULT), "0" (err),\ | 149 | : "r" (x), "b" (addr), "i" (-EFAULT), "0" (err)) |
149 | "i"(sizeof(unsigned long))) | ||
150 | 150 | ||
151 | #ifdef __powerpc64__ | 151 | #ifdef __powerpc64__ |
152 | #define __put_user_asm2(x, ptr, retval) \ | 152 | #define __put_user_asm2(x, ptr, retval) \ |
@@ -162,13 +162,12 @@ extern long __put_user_bad(void); | |||
162 | " b 3b\n" \ | 162 | " b 3b\n" \ |
163 | ".previous\n" \ | 163 | ".previous\n" \ |
164 | ".section __ex_table,\"a\"\n" \ | 164 | ".section __ex_table,\"a\"\n" \ |
165 | " .balign %5\n" \ | 165 | PPC_LONG_ALIGN "\n" \ |
166 | PPC_LONG "1b,4b\n" \ | 166 | PPC_LONG "1b,4b\n" \ |
167 | PPC_LONG "2b,4b\n" \ | 167 | PPC_LONG "2b,4b\n" \ |
168 | ".previous" \ | 168 | ".previous" \ |
169 | : "=r" (err) \ | 169 | : "=r" (err) \ |
170 | : "r" (x), "b" (addr), "i" (-EFAULT), "0" (err),\ | 170 | : "r" (x), "b" (addr), "i" (-EFAULT), "0" (err)) |
171 | "i"(sizeof(unsigned long))) | ||
172 | #endif /* __powerpc64__ */ | 171 | #endif /* __powerpc64__ */ |
173 | 172 | ||
174 | #define __put_user_size(x, ptr, size, retval) \ | 173 | #define __put_user_size(x, ptr, size, retval) \ |
@@ -226,12 +225,11 @@ extern long __get_user_bad(void); | |||
226 | " b 2b\n" \ | 225 | " b 2b\n" \ |
227 | ".previous\n" \ | 226 | ".previous\n" \ |
228 | ".section __ex_table,\"a\"\n" \ | 227 | ".section __ex_table,\"a\"\n" \ |
229 | " .balign %5\n" \ | 228 | PPC_LONG_ALIGN "\n" \ |
230 | PPC_LONG "1b,3b\n" \ | 229 | PPC_LONG "1b,3b\n" \ |
231 | ".previous" \ | 230 | ".previous" \ |
232 | : "=r" (err), "=r" (x) \ | 231 | : "=r" (err), "=r" (x) \ |
233 | : "b" (addr), "i" (-EFAULT), "0" (err), \ | 232 | : "b" (addr), "i" (-EFAULT), "0" (err)) |
234 | "i"(sizeof(unsigned long))) | ||
235 | 233 | ||
236 | #ifdef __powerpc64__ | 234 | #ifdef __powerpc64__ |
237 | #define __get_user_asm2(x, addr, err) \ | 235 | #define __get_user_asm2(x, addr, err) \ |
@@ -249,13 +247,12 @@ extern long __get_user_bad(void); | |||
249 | " b 3b\n" \ | 247 | " b 3b\n" \ |
250 | ".previous\n" \ | 248 | ".previous\n" \ |
251 | ".section __ex_table,\"a\"\n" \ | 249 | ".section __ex_table,\"a\"\n" \ |
252 | " .balign %5\n" \ | 250 | PPC_LONG_ALIGN "\n" \ |
253 | PPC_LONG "1b,4b\n" \ | 251 | PPC_LONG "1b,4b\n" \ |
254 | PPC_LONG "2b,4b\n" \ | 252 | PPC_LONG "2b,4b\n" \ |
255 | ".previous" \ | 253 | ".previous" \ |
256 | : "=r" (err), "=&r" (x) \ | 254 | : "=r" (err), "=&r" (x) \ |
257 | : "b" (addr), "i" (-EFAULT), "0" (err), \ | 255 | : "b" (addr), "i" (-EFAULT), "0" (err)) |
258 | "i"(sizeof(unsigned long))) | ||
259 | #endif /* __powerpc64__ */ | 256 | #endif /* __powerpc64__ */ |
260 | 257 | ||
261 | #define __get_user_size(x, ptr, size, retval) \ | 258 | #define __get_user_size(x, ptr, size, retval) \ |
diff --git a/include/asm-powerpc/ucc_fast.h b/include/asm-powerpc/ucc_fast.h index f529f70b1d82..fce16abe7ee1 100644 --- a/include/asm-powerpc/ucc_fast.h +++ b/include/asm-powerpc/ucc_fast.h | |||
@@ -156,11 +156,11 @@ struct ucc_fast_info { | |||
156 | 156 | ||
157 | struct ucc_fast_private { | 157 | struct ucc_fast_private { |
158 | struct ucc_fast_info *uf_info; | 158 | struct ucc_fast_info *uf_info; |
159 | struct ucc_fast *uf_regs; /* a pointer to memory map of UCC regs. */ | 159 | struct ucc_fast __iomem *uf_regs; /* a pointer to the UCC regs. */ |
160 | u32 *p_ucce; /* a pointer to the event register in memory. */ | 160 | u32 __iomem *p_ucce; /* a pointer to the event register in memory. */ |
161 | u32 *p_uccm; /* a pointer to the mask register in memory. */ | 161 | u32 __iomem *p_uccm; /* a pointer to the mask register in memory. */ |
162 | #ifdef CONFIG_UGETH_TX_ON_DEMAND | 162 | #ifdef CONFIG_UGETH_TX_ON_DEMAND |
163 | u16 *p_utodr; /* pointer to the transmit on demand register */ | 163 | u16 __iomem *p_utodr; /* pointer to the transmit on demand register */ |
164 | #endif | 164 | #endif |
165 | int enabled_tx; /* Whether channel is enabled for Tx (ENT) */ | 165 | int enabled_tx; /* Whether channel is enabled for Tx (ENT) */ |
166 | int enabled_rx; /* Whether channel is enabled for Rx (ENR) */ | 166 | int enabled_rx; /* Whether channel is enabled for Rx (ENR) */ |