11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *  m32r_sio.h
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *  Driver for M32R serial ports
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *  Based on drivers/char/serial.c, by Linus Torvalds, Theodore Ts'o.
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *  Based on drivers/serial/8250.h.
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *  Copyright (C) 2001  Russell King.
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *  Copyright (C) 2004  Hirokazu Takata <takata at linux-m32r.org>
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * This program is free software; you can redistribute it and/or modify
131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * it under the terms of the GNU General Public License as published by
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * the Free Software Foundation; either version 2 of the License, or
151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * (at your option) any later version.
161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
188bc87dc999d57d7d2ab92ab203ff7e94e860d8faJiri Slaby#include <linux/pci.h>
191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct m32r_sio_probe {
211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct module	*owner;
221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int		(*pci_init_one)(struct pci_dev *dev);
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void		(*pci_remove_one)(struct pci_dev *dev);
241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void		(*pnp_init)(void);
251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint m32r_sio_register_probe(struct m32r_sio_probe *probe);
281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid m32r_sio_unregister_probe(struct m32r_sio_probe *probe);
291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid m32r_sio_get_irq_map(unsigned int *map);
301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid m32r_sio_suspend_port(int line);
311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid m32r_sio_resume_port(int line);
321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct old_serial_port {
341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int uart;
351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int baud_base;
361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int port;
371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int irq;
381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int flags;
391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char io_type;
406881761e63ac95fda3073443781ea928682fa600Al Viro	unsigned char __iomem *iomem_base;
411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned short iomem_reg_shift;
421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _INLINE_ inline
451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PROBE_RSA	(1 << 0)
471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PROBE_ANY	(~0)
481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HIGH_BITS_OFFSET ((sizeof(long)-sizeof(int))*8)
50