MAJOR=4
MINOR=48
DEVNAME=tty48
     GˆÏÎƒB×Í¾Ð Z    G/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Common syscall restarting data
 */
#ifndef __LINUX_RESTART_BLOCK_H
#define __LINUX_RESTART_BLOCK_H

#include <linux/compiler.h>
#include <linux/types.h>
#include <linux/time64.h>

struct timespec;
struct old_timespec32;
struct pollfd;

enum timespec_type {
	TT_NONE		= 0,
	TT_NATIVE	= 1,
	TT_COMPAT	= 2,
};

/*
 * System call restart block.
 */
struct restart_block {
	unsigned long arch_data;
	long (*fn)(struct restart_block *);
	union {
		/* For futex_wait() */
		struct {
			u32 __user *uaddr;
			u32 val;
			u32 flags;
			u32 bitset;
			u64 time;
			u32 __user *uaddr2;
		} futex;
		/* For nanosleep */
		struct {
			clockid_t clockid;
			enum timespec_type type;
			union {
				struct __kernel_timespec __user *rmtp;
				struct old_timespec32 __user *compat_rmtp;
			};
			u64 expires;
		} nanosleep;
		/* For poll */
		struct {
			struct pollfd __user *ufds;
			int nfds;
			int has_timeout;
			unsigned long tv_sec;
			unsigned long tv_nsec;
		} poll;
	};
};

extern long do_no_restart_syscall(struct restart_block *parm);

#endif /* __LINUX_RESTART_BLOCK_H */
  "   Iˆl–ßi~”Šh¥8 [¸'n	Õ1hßÏ891¿Ñ {    ITZif2                              3      †ÓîLÜ�éÈ€ÚüðÌM€¼0p¬/€œpŒ€{ôp kó€![Öp"KÕ€#;¸p$+·€%šp&™€'¶ð'ô¶ (ä˜ð)Ô˜ *Äzð+´z ,¤\ð-”\ .„>ð/t> 0d ð1]Z€2M=p3=<€4-p5€6p:é³ ;´¬�<¤« =”Ž�>„� ?tp�@do ATR�BDQ C44�D$3 EQUš VapVõ| WåCpÿÿÿ  d4    bp   ~�  p€ LMT +07 +09 +08 TZif2                              3      ÿÿÿÿ†ÓîL    Ü�    éÈ€    Úüð    ÌM€    ¼0p    ¬/€    œp    Œ€    {ôp     kó€    ![Öp    "KÕ€    #;¸p    $+·€    %šp    &™€    '¶ð    'ô¶     (ä˜ð    )Ô˜     *Äzð    +´z     ,¤\ð    -”\     .„>ð    /t>     0d ð    1]Z€    2M=p    3=<€    4-p    5€    6p    :é³     ;´¬�    <¤«     =”Ž�    >„�     ?tp�    @do     ATR�    BDQ     C44�    D$3     EQ    Uš     Vap    Võ|     WåCp    ÿÿÿ  d4    bp   ~�  p€ LMT +07 +09 +08 
<+08>-8
     KˆÐÏƒm§ÁÎ¿Ñ r    K/* SPDX-License-Identifier: GPL-2.0-only */
/*
 *  cb710/cb710.h
 *
 *  Copyright by MichaÅ‚ MirosÅ‚aw, 2008-2009
 */
#ifndef LINUX_CB710_DRIVER_H
#define LINUX_CB710_DRIVER_H

#include <linux/io.h>
#include <linux/interrupt.h>
#include <linux/spinlock.h>
#include <linux/pci.h>
#include <linux/platform_device.h>
#include <linux/mmc/host.h>

struct cb710_slot;

typedef int (*cb710_irq_handler_t)(struct cb710_slot *);

/* per-virtual-slot structure */
struct cb710_slot {
	struct platform_device	pdev;
	void __iomem		*iobase;
	cb710_irq_handler_t	irq_handler;
};

/* per-device structure */
struct cb710_chip {
	struct pci_dev		*pdev;
	void __iomem		*iobase;
	unsigned		platform_id;
#ifdef CONFIG_CB710_DEBUG_ASSUMPTIONS
	atomic_t		slot_refs_count;
#endif
	unsigned		slot_mask;
	unsigned		slots;
	spinlock_t		irq_lock;
	struct cb710_slot	slot[];
};

/* NOTE: cb710_chip.slots is modified only during device init/exit and
 * they are all serialized wrt themselves */

/* cb710_chip.slot_mask values */
#define CB710_SLOT_MMC		1
#define CB710_SLOT_MS		2
#define CB710_SLOT_SM		4

/* slot port accessors - so the logic is more clear in the code */
#define CB710_PORT_ACCESSORS(t) \
static inline void cb710_write_port_##t(struct cb710_slot *slot,	\
	unsigned port, u##t value)					\
{									\
	iowrite##t(value, slot->iobase + port);				\
}									\
									\
static inline u##t cb710_read_port_##t(struct cb710_slot *slot,		\
	unsigned port)							\
{									\
	return ioread##t(slot->iobase + port);				\
}									\
									\
static inline void cb710_modify_port_##t(struct cb710_slot *slot,	\
	unsigned port, u##t set, u##t clear)				\
{									\
	iowrite##t(							\
		(ioread##t(slot->iobase + port) & ~clear)|set,		\
		slot->iobase + port);					\
}

CB710_PORT_ACCESSORS(8)
CB710_PORT_ACCESSORS(16)
CB710_PORT_ACCESSORS(32)

void cb710_pci_update_config_reg(struct pci_dev *pdev,
	int reg, uint32_t and, uint32_t xor);
void cb710_set_i