^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * linux/include/asm-parisc/ide.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Copyright (C) 1994-1996 Linus Torvalds & authors
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) * This file contains the PARISC architecture specific IDE code.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #ifndef __ASM_PARISC_IDE_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #define __ASM_PARISC_IDE_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #ifdef __KERNEL__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) /* Generic I/O and MEMIO string operations. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #define __ide_insw insw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #define __ide_insl insl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #define __ide_outsw outsw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #define __ide_outsl outsl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) static __inline__ void __ide_mm_insw(void __iomem *port, void *addr, u32 count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) while (count--) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) *(u16 *)addr = __raw_readw(port);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) addr += 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) static __inline__ void __ide_mm_insl(void __iomem *port, void *addr, u32 count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) while (count--) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) *(u32 *)addr = __raw_readl(port);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) addr += 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) static __inline__ void __ide_mm_outsw(void __iomem *port, void *addr, u32 count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) while (count--) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) __raw_writew(*(u16 *)addr, port);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) addr += 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) static __inline__ void __ide_mm_outsl(void __iomem *port, void *addr, u32 count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) while (count--) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) __raw_writel(*(u32 *)addr, port);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) addr += 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) #endif /* __KERNEL__ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) #endif /* __ASM_PARISC_IDE_H */