/
usr
/
src
/
linux-headers-5.15.0-181
/
arch
/
sparc
/
include
/
asm
/
/usr/src/linux-headers-5.15.0-181/arch/sparc/include/asm
mkdir
upload
Name
Size
Mode
Actions
adi.h
138
0644
edit
dl
rm
adi_64.h
812
0644
edit
dl
rm
agp.h
434
0644
edit
dl
rm
apb.h
1082
0644
edit
dl
rm
asm-offsets.h
35
0644
edit
dl
rm
asm-prototypes.h
729
0644
edit
dl
rm
asm.h
1101
0644
edit
dl
rm
asmmacro.h
1183
0644
edit
dl
rm
atomic.h
219
0644
edit
dl
rm
atomic_32.h
1760
0644
edit
dl
rm
atomic_64.h
1849
0644
edit
dl
rm
auxio.h
310
0644
edit
dl
rm
auxio_32.h
2615
0644
edit
dl
rm
auxio_64.h
3253
0644
edit
dl
rm
backoff.h
2756
0644
edit
dl
rm
barrier.h
223
0644
edit
dl
rm
barrier_32.h
160
0644
edit
dl
rm
barrier_64.h
2004
0644
edit
dl
rm
bbc.h
9996
0644
edit
dl
rm
bitext.h
631
0644
edit
dl
rm
bitops.h
219
0644
edit
dl
rm
bitops_32.h
2853
0644
edit
dl
rm
bitops_64.h
1675
0644
edit
dl
rm
btext.h
145
0644
edit
dl
rm
bug.h
588
0644
edit
dl
rm
cache.h
630
0644
edit
dl
rm
cacheflush.h
373
0644
edit
dl
rm
cacheflush_32.h
1951
0644
edit
dl
rm
cacheflush_64.h
2557
0644
edit
dl
rm
cachetlb_32.h
882
0644
edit
dl
rm
chafsr.h
9710
0644
edit
dl
rm
checksum.h
331
0644
edit
dl
rm
checksum_32.h
5791
0644
edit
dl
rm
checksum_64.h
3855
0644
edit
dl
rm
chmctrl.h
8096
0644
edit
dl
rm
clock.h
231
0644
edit
dl
rm
clocksource.h
407
0644
edit
dl
rm
cmpxchg.h
223
0644
edit
dl
rm
cmpxchg_32.h
2483
0644
edit
dl
rm
cmpxchg_64.h
5288
0644
edit
dl
rm
compat.h
3890
0644
edit
dl
rm
compat_signal.h
565
0644
edit
dl
rm
contregs.h
1941
0644
edit
dl
rm
cpudata.h
378
0644
edit
dl
rm
cpudata_32.h
729
0644
edit
dl
rm
cpudata_64.h
1153
0644
edit
dl
rm
cpu_type.h
579
0644
edit
dl
rm
current.h
991
0644
edit
dl
rm
dcr.h
728
0644
edit
dl
rm
dcu.h
1520
0644
edit
dl
rm
delay.h
215
0644
edit
dl
rm
delay_32.h
907
0644
edit
dl
rm
delay_64.h
403
0644
edit
dl
rm
device.h
565
0644
edit
dl
rm
dma-mapping.h
336
0644
edit
dl
rm
dma.h
4989
0644
edit
dl
rm
ebus_dma.h
1098
0644
edit
dl
rm
ecc.h
4448
0644
edit
dl
rm
eeprom.h
254
0644
edit
dl
rm
elf.h
207
0644
edit
dl
rm
elf_32.h
3267
0644
edit
dl
rm
elf_64.h
6848
0644
edit
dl
rm
estate.h
2287
0644
edit
dl
rm
extable.h
723
0644
edit
dl
rm
fb.h
680
0644
edit
dl
rm
fbio.h
2315
0644
edit
dl
rm
fhc.h
4533
0644
edit
dl
rm
floppy.h
219
0644
edit
dl
rm
floppy_32.h
9796
0644
edit
dl
rm
floppy_64.h
19392
0644
edit
dl
rm
fpumacro.h
710
0644
edit
dl
rm
ftrace.h
801
0644
edit
dl
rm
futex.h
215
0644
edit
dl
rm
futex_32.h
82
0644
edit
dl
rm
futex_64.h
2160
0644
edit
dl
rm
hardirq.h
223
0644
edit
dl
rm
hardirq_32.h
334
0644
edit
dl
rm
hardirq_64.h
412
0644
edit
dl
rm
head.h
211
0644
edit
dl
rm
head_32.h
2617
0644
edit
dl
rm
head_64.h
2184
0644
edit
dl
rm
hibernate.h
421
0644
edit
dl
rm
highmem.h
1966
0644
edit
dl
rm
hugetlb.h
1592
0644
edit
dl
rm
hvtramp.h
782
0644
edit
dl
rm
hw_irq.h
88
0644
edit
dl
rm
hypervisor.h
117649
0644
edit
dl
rm
ide.h
2222
0644
edit
dl
rm
idprom.h
656
0644
edit
dl
rm
intr_queue.h
794
0644
edit
dl
rm
io-unit.h
2469
0644
edit
dl
rm
io.h
620
0644
edit
dl
rm
ioctls.h
358
0644
edit
dl
rm
iommu-common.h
1445
0644
edit
dl
rm
iommu.h
215
0644
edit
dl
rm
iommu_32.h
5865
0644
edit
dl
rm
iommu_64.h
2489
0644
edit
dl
rm
io_32.h
3430
0644
edit
dl
rm
io_64.h
11076
0644
edit
dl
rm
irq.h
207
0644
edit
dl
rm
irqflags.h
227
0644
edit
dl
rm
irqflags_32.h
1058
0644
edit
dl
rm
irqflags_64.h
1952
0644
edit
dl
rm
irq_32.h
526
0644
edit
dl
rm
irq_64.h
3105
0644
edit
dl
rm
jump_label.h
1036
0644
edit
dl
rm
Kbuild
177
0644
edit
dl
rm
kdebug.h
219
0644
edit
dl
rm
kdebug_32.h
2041
0644
edit
dl
rm
kdebug_64.h
393
0644
edit
dl
rm
kgdb.h
1014
0644
edit
dl
rm
kprobes.h
1410
0644
edit
dl
rm
ldc.h
4475
0644
edit
dl
rm
leon.h
7844
0644
edit
dl
rm
leon_amba.h
8280
0644
edit
dl
rm
leon_pci.h
512
0644
edit
dl
rm
lsu.h
1062
0644
edit
dl
rm
machines.h
1540
0644
edit
dl
rm
mbus.h
2996
0644
edit
dl
rm
mc146818rtc.h
298
0644
edit
dl
rm
mc146818rtc_32.h
699
0644
edit
dl
rm
mc146818rtc_64.h
689
0644
edit
dl
rm
mdesc.h
3066
0644
edit
dl
rm
memctrl.h
311
0644
edit
dl
rm
mman.h
2633
0644
edit
dl
rm
mmu.h
207
0644
edit
dl
rm
mmu_32.h
209
0644
edit
dl
rm
mmu_64.h
3967
0644
edit
dl
rm
mmu_context.h
239
0644
edit
dl
rm
mmu_context_32.h
1082
0644
edit
dl
rm
mmu_context_64.h
5481
0644
edit
dl
rm
mmzone.h
363
0644
edit
dl
rm
mxcc.h
4429
0644
edit
dl
rm
nmi.h
354
0644
edit
dl
rm
ns87303.h
3299
0644
edit
dl
rm
obio.h
6410
0644
edit
dl
rm
openprom.h
7475
0644
edit
dl
rm
oplib.h
215
0644
edit
dl
rm
oplib_32.h
6062
0644
edit
dl
rm
oplib_64.h
8357
0644
edit
dl
rm
page.h
274
0644
edit
dl
rm
page_32.h
3826
0644
edit
dl
rm
page_64.h
4753
0644
edit
dl
rm
parport.h
5819
0644
edit
dl
rm
pbm.h
1505
0644
edit
dl
rm
pci.h
1367
0644
edit
dl
rm
pcic.h
5904
0644
edit
dl
rm
pcr.h
1893
0644
edit
dl
rm
percpu.h
219
0644
edit
dl
rm
percpu_32.h
168
0644
edit
dl
rm
percpu_64.h
541
0644
edit
dl
rm
perf_event.h
802
0644
edit
dl
rm
pgalloc.h
223
0644
edit
dl
rm
pgalloc_32.h
1823
0644
edit
dl
rm
pgalloc_64.h
2764
0644
edit
dl
rm
pgtable.h
223
0644
edit
dl
rm
pgtable_32.h
11021
0644
edit
dl
rm
pgtable_64.h
32369
0644
edit
dl
rm
pgtsrmmu.h
4879
0644
edit
dl
rm
pil.h
1109
0644
edit
dl
rm
processor.h
231
0644
edit
dl
rm
processor_32.h
2836
0644
edit
dl
rm
processor_64.h
7577
0644
edit
dl
rm
prom.h
1776
0644
edit
dl
rm
psr.h
1414
0644
edit
dl
rm
ptrace.h
4294
0644
edit
dl
rm
qrwlock.h
205
0644
edit
dl
rm
qspinlock.h
215
0644
edit
dl
rm
ross.h
5655
0644
edit
dl
rm
sbi.h
3425
0644
edit
dl
rm
scratchpad.h
547
0644
edit
dl
rm
seccomp.h
225
0644
edit
dl
rm
sections.h
289
0644
edit
dl
rm
setup.h
1552
0644
edit
dl
rm
sfafsr.h
3216
0644
edit
dl
rm
sfp-machine.h
239
0644
edit
dl
rm
sfp-machine_32.h
6954
0644
edit
dl
rm
sfp-machine_64.h
3178
0644
edit
dl
rm
shmparam.h
227
0644
edit
dl
rm
shmparam_32.h
253
0644
edit
dl
rm
shmparam_64.h
306
0644
edit
dl
rm
sigcontext.h
2616
0644
edit
dl
rm
signal.h
351
0644
edit
dl
rm
smp.h
207
0644
edit
dl
rm
smp_32.h
3368
0644
edit
dl
rm
smp_64.h
1791
0644
edit
dl
rm
sparsemem.h
295
0644
edit
dl
rm
spinlock.h
227
0644
edit
dl
rm
spinlock_32.h
4324
0644
edit
dl
rm
spinlock_64.h
409
0644
edit
dl
rm
spinlock_types.h
549
0644
edit
dl
rm
spitfire.h
9967
0644
edit
dl
rm
stacktrace.h
166
0644
edit
dl
rm
starfire.h
418
0644
edit
dl
rm
string.h
1254
0644
edit
dl
rm
string_32.h
405
0644
edit
dl
rm
string_64.h
409
0644
edit
dl
rm
sunbpp.h
3346
0644
edit
dl
rm
swift.h
3147
0644
edit
dl
rm
switch_to.h
231
0644
edit
dl
rm
switch_to_32.h
3616
0644
edit
dl
rm
switch_to_64.h
2640
0644
edit
dl
rm
syscall.h
3464
0644
edit
dl
rm
syscalls.h
299
0644
edit
dl
rm
termbits.h
198
0644
edit
dl
rm
termios.h
5063
0644
edit
dl
rm
thread_info.h
239
0644
edit
dl
rm
thread_info_32.h
3773
0644
edit
dl
rm
thread_info_64.h
8195
0644
edit
dl
rm
timer.h
215
0644
edit
dl
rm
timer_32.h
1211
0644
edit
dl
rm
timer_64.h
2448
0644
edit
dl
rm
timex.h
215
0644
edit
dl
rm
timex_32.h
266
0644
edit
dl
rm
timex_64.h
423
0644
edit
dl
rm
tlb.h
207
0644
edit
dl
rm
tlbflush.h
227
0644
edit
dl
rm
tlbflush_32.h
621
0644
edit
dl
rm
tlbflush_64.h
1776
0644
edit
dl
rm
tlb_32.h
138
0644
edit
dl
rm
tlb_64.h
1056
0644
edit
dl
rm
topology.h
227
0644
edit
dl
rm
topology_32.h
170
0644
edit
dl
rm
topology_64.h
1546
0644
edit
dl
rm
traps.h
577
0644
edit
dl
rm
trap_block.h
6786
0644
edit
dl
rm
tsb.h
12457
0644
edit
dl
rm
tsunami.h
1890
0644
edit
dl
rm
ttable.h
20827
0644
edit
dl
rm
turbosparc.h
3866
0644
edit
dl
rm
uaccess.h
390
0644
edit
dl
rm
uaccess_32.h
7032
0644
edit
dl
rm
uaccess_64.h
6142
0644
edit
dl
rm
unistd.h
1797
0644
edit
dl
rm
upa.h
3808
0644
edit
dl
rm
uprobes.h
1304
0644
edit
dl
rm
user.h
102
0644
edit
dl
rm
vaddrs.h
2066
0644
edit
dl
rm
vdso.h
491
0644
edit
dl
rm
vga.h
964
0644
edit
dl
rm
viking.h
8341
0644
edit
dl
rm
vio.h
12097
0644
edit
dl
rm
visasm.h
1544
0644
edit
dl
rm
vmalloc.h
93
0644
edit
dl
rm
vvar.h
1577
0644
edit
dl
rm
winmacro.h
4767
0644
edit
dl
rm
xor.h
207
0644
edit
dl
rm
xor_32.h
7086
0644
edit
dl
rm
xor_64.h
2156
0644
edit
dl
rm
Edit:
/usr/src/linux-headers-5.15.0-181/arch/sparc/include/asm/vio.h
(12097B)
/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _SPARC64_VIO_H #define _SPARC64_VIO_H #include <linux/kernel.h> #include <linux/device.h> #include <linux/mod_devicetable.h> #include <linux/timer.h> #include <linux/spinlock.h> #include <linux/completion.h> #include <linux/list.h> #include <linux/log2.h> #include <asm/ldc.h> #include <asm/mdesc.h> struct vio_msg_tag { u8 type; #define VIO_TYPE_CTRL 0x01 #define VIO_TYPE_DATA 0x02 #define VIO_TYPE_ERR 0x04 u8 stype; #define VIO_SUBTYPE_INFO 0x01 #define VIO_SUBTYPE_ACK 0x02 #define VIO_SUBTYPE_NACK 0x04 u16 stype_env; #define VIO_VER_INFO 0x0001 #define VIO_ATTR_INFO 0x0002 #define VIO_DRING_REG 0x0003 #define VIO_DRING_UNREG 0x0004 #define VIO_RDX 0x0005 #define VIO_PKT_DATA 0x0040 #define VIO_DESC_DATA 0x0041 #define VIO_DRING_DATA 0x0042 #define VNET_MCAST_INFO 0x0101 u32 sid; }; struct vio_rdx { struct vio_msg_tag tag; u64 resv[6]; }; struct vio_ver_info { struct vio_msg_tag tag; u16 major; u16 minor; u8 dev_class; #define VDEV_NETWORK 0x01 #define VDEV_NETWORK_SWITCH 0x02 #define VDEV_DISK 0x03 #define VDEV_DISK_SERVER 0x04 #define VDEV_CONSOLE_CON 0x05 u8 resv1[3]; u64 resv2[5]; }; struct vio_dring_register { struct vio_msg_tag tag; u64 dring_ident; u32 num_descr; u32 descr_size; u16 options; #define VIO_TX_DRING 0x0001 #define VIO_RX_DRING 0x0002 #define VIO_RX_DRING_DATA 0x0004 u16 resv; u32 num_cookies; struct ldc_trans_cookie cookies[0]; }; struct vio_dring_unregister { struct vio_msg_tag tag; u64 dring_ident; u64 resv[5]; }; /* Data transfer modes */ #define VIO_PKT_MODE 0x01 /* Packet based transfer */ #define VIO_DESC_MODE 0x02 /* In-band descriptors */ #define VIO_DRING_MODE 0x03 /* Descriptor rings */ /* in vers >= 1.2, VIO_DRING_MODE is 0x04 and transfer mode is a bitmask */ #define VIO_NEW_DRING_MODE 0x04 struct vio_dring_data { struct vio_msg_tag tag; u64 seq; u64 dring_ident; u32 start_idx; u32 end_idx; u8 state; #define VIO_DRING_ACTIVE 0x01 #define VIO_DRING_STOPPED 0x02 u8 __pad1; u16 __pad2; u32 __pad3; u64 __par4[2]; }; struct vio_dring_hdr { u8 state; #define VIO_DESC_FREE 0x01 #define VIO_DESC_READY 0x02 #define VIO_DESC_ACCEPTED 0x03 #define VIO_DESC_DONE 0x04 u8 ack; #define VIO_ACK_ENABLE 0x01 #define VIO_ACK_DISABLE 0x00 u16 __pad1; u32 __pad2; }; /* VIO disk specific structures and defines */ struct vio_disk_attr_info { struct vio_msg_tag tag; u8 xfer_mode; u8 vdisk_type; #define VD_DISK_TYPE_SLICE 0x01 /* Slice in block device */ #define VD_DISK_TYPE_DISK 0x02 /* Entire block device */ u8 vdisk_mtype; /* v1.1 */ #define VD_MEDIA_TYPE_FIXED 0x01 /* Fixed device */ #define VD_MEDIA_TYPE_CD 0x02 /* CD Device */ #define VD_MEDIA_TYPE_DVD 0x03 /* DVD Device */ u8 resv1; u32 vdisk_block_size; u64 operations; u64 vdisk_size; /* v1.1 */ u64 max_xfer_size; u32 phys_block_size; /* v1.2 */ u32 resv2; u64 resv3[1]; }; struct vio_disk_desc { struct vio_dring_hdr hdr; u64 req_id; u8 operation; #define VD_OP_BREAD 0x01 /* Block read */ #define VD_OP_BWRITE 0x02 /* Block write */ #define VD_OP_FLUSH 0x03 /* Flush disk contents */ #define VD_OP_GET_WCE 0x04 /* Get write-cache status */ #define VD_OP_SET_WCE 0x05 /* Enable/disable write-cache */ #define VD_OP_GET_VTOC 0x06 /* Get VTOC */ #define VD_OP_SET_VTOC 0x07 /* Set VTOC */ #define VD_OP_GET_DISKGEOM 0x08 /* Get disk geometry */ #define VD_OP_SET_DISKGEOM 0x09 /* Set disk geometry */ #define VD_OP_SCSICMD 0x0a /* SCSI control command */ #define VD_OP_GET_DEVID 0x0b /* Get device ID */ #define VD_OP_GET_EFI 0x0c /* Get EFI */ #define VD_OP_SET_EFI 0x0d /* Set EFI */ u8 slice; u16 resv1; u32 status; u64 offset; u64 size; u32 ncookies; u32 resv2; struct ldc_trans_cookie cookies[0]; }; #define VIO_DISK_VNAME_LEN 8 #define VIO_DISK_ALABEL_LEN 128 #define VIO_DISK_NUM_PART 8 struct vio_disk_vtoc { u8 volume_name[VIO_DISK_VNAME_LEN]; u16 sector_size; u16 num_partitions; u8 ascii_label[VIO_DISK_ALABEL_LEN]; struct { u16 id; u16 perm_flags; u32 resv; u64 start_block; u64 num_blocks; } partitions[VIO_DISK_NUM_PART]; }; struct vio_disk_geom { u16 num_cyl; /* Num data cylinders */ u16 alt_cyl; /* Num alternate cylinders */ u16 beg_cyl; /* Cyl off of fixed head area */ u16 num_hd; /* Num heads */ u16 num_sec; /* Num sectors */ u16 ifact; /* Interleave factor */ u16 apc; /* Alts per cylinder (SCSI) */ u16 rpm; /* Revolutions per minute */ u16 phy_cyl; /* Num physical cylinders */ u16 wr_skip; /* Num sects to skip, writes */ u16 rd_skip; /* Num sects to skip, writes */ }; struct vio_disk_devid { u16 resv; u16 type; u32 len; char id[0]; }; struct vio_disk_efi { u64 lba; u64 len; char data[0]; }; /* VIO net specific structures and defines */ struct vio_net_attr_info { struct vio_msg_tag tag; u8 xfer_mode; u8 addr_type; #define VNET_ADDR_ETHERMAC 0x01 u16 ack_freq; u8 plnk_updt; #define PHYSLINK_UPDATE_NONE 0x00 #define PHYSLINK_UPDATE_STATE 0x01 #define PHYSLINK_UPDATE_STATE_ACK 0x02 #define PHYSLINK_UPDATE_STATE_NACK 0x03 u8 options; u16 resv1; u64 addr; u64 mtu; u16 cflags; #define VNET_LSO_IPV4_CAPAB 0x0001 u16 ipv4_lso_maxlen; u32 resv2; u64 resv3[2]; }; #define VNET_NUM_MCAST 7 struct vio_net_mcast_info { struct vio_msg_tag tag; u8 set; u8 count; u8 mcast_addr[VNET_NUM_MCAST * 6]; u32 resv; }; struct vio_net_desc { struct vio_dring_hdr hdr; u32 size; u32 ncookies; struct ldc_trans_cookie cookies[0]; }; struct vio_net_dext { u8 flags; #define VNET_PKT_HASH 0x01 #define VNET_PKT_HCK_IPV4_HDRCKSUM 0x02 #define VNET_PKT_HCK_FULLCKSUM 0x04 #define VNET_PKT_IPV4_LSO 0x08 #define VNET_PKT_HCK_IPV4_HDRCKSUM_OK 0x10 #define VNET_PKT_HCK_FULLCKSUM_OK 0x20 u8 vnet_hashval; u16 ipv4_lso_mss; u32 resv3; }; static inline struct vio_net_dext *vio_net_ext(struct vio_net_desc *desc) { return (struct vio_net_dext *)&desc->cookies[2]; } #define VIO_MAX_RING_COOKIES 24 struct vio_dring_state { u64 ident; void *base; u64 snd_nxt; u64 rcv_nxt; u32 entry_size; u32 num_entries; u32 prod; u32 cons; u32 pending; int ncookies; struct ldc_trans_cookie cookies[VIO_MAX_RING_COOKIES]; }; #define VIO_TAG_SIZE ((int)sizeof(struct vio_msg_tag)) #define VIO_VCC_MTU_SIZE (LDC_PACKET_SIZE - VIO_TAG_SIZE) struct vio_vcc { struct vio_msg_tag tag; char data[VIO_VCC_MTU_SIZE]; }; static inline void *vio_dring_cur(struct vio_dring_state *dr) { return dr->base + (dr->entry_size * dr->prod); } static inline void *vio_dring_entry(struct vio_dring_state *dr, unsigned int index) { return dr->base + (dr->entry_size * index); } static inline u32 vio_dring_avail(struct vio_dring_state *dr, unsigned int ring_size) { return (dr->pending - ((dr->prod - dr->cons) & (ring_size - 1)) - 1); } static inline u32 vio_dring_next(struct vio_dring_state *dr, u32 index) { if (++index == dr->num_entries) index = 0; return index; } static inline u32 vio_dring_prev(struct vio_dring_state *dr, u32 index) { if (index == 0) return dr->num_entries - 1; else return index - 1; } #define VIO_MAX_TYPE_LEN 32 #define VIO_MAX_NAME_LEN 32 #define VIO_MAX_COMPAT_LEN 64 struct vio_dev { u64 mp; struct device_node *dp; char node_name[VIO_MAX_NAME_LEN]; char type[VIO_MAX_TYPE_LEN]; char compat[VIO_MAX_COMPAT_LEN]; int compat_len; u64 dev_no; unsigned long port_id; unsigned long channel_id; unsigned int tx_irq; unsigned int rx_irq; u64 rx_ino; u64 tx_ino; /* Handle to the root of "channel-devices" sub-tree in MDESC */ u64 cdev_handle; /* MD specific data used to identify the vdev in MD */ union md_node_info md_node_info; struct device dev; }; struct vio_driver { const char *name; struct list_head node; const struct vio_device_id *id_table; int (*probe)(struct vio_dev *dev, const struct vio_device_id *id); void (*remove)(struct vio_dev *dev); void (*shutdown)(struct vio_dev *dev); unsigned long driver_data; struct device_driver driver; bool no_irq; }; struct vio_version { u16 major; u16 minor; }; struct vio_driver_state; struct vio_driver_ops { int (*send_attr)(struct vio_driver_state *vio); int (*handle_attr)(struct vio_driver_state *vio, void *pkt); void (*handshake_complete)(struct vio_driver_state *vio); }; struct vio_completion { struct completion com; int err; int waiting_for; }; struct vio_driver_state { /* Protects VIO handshake and, optionally, driver private state. */ spinlock_t lock; struct ldc_channel *lp; u32 _peer_sid; u32 _local_sid; struct vio_dring_state drings[2]; #define VIO_DRIVER_TX_RING 0 #define VIO_DRIVER_RX_RING 1 u8 hs_state; #define VIO_HS_INVALID 0x00 #define VIO_HS_GOTVERS 0x01 #define VIO_HS_GOT_ATTR 0x04 #define VIO_HS_SENT_DREG 0x08 #define VIO_HS_SENT_RDX 0x10 #define VIO_HS_GOT_RDX_ACK 0x20 #define VIO_HS_GOT_RDX 0x40 #define VIO_HS_SENT_RDX_ACK 0x80 #define VIO_HS_COMPLETE (VIO_HS_GOT_RDX_ACK | VIO_HS_SENT_RDX_ACK) u8 dev_class; u8 dr_state; #define VIO_DR_STATE_TXREG 0x01 #define VIO_DR_STATE_RXREG 0x02 #define VIO_DR_STATE_TXREQ 0x10 #define VIO_DR_STATE_RXREQ 0x20 u8 debug; #define VIO_DEBUG_HS 0x01 #define VIO_DEBUG_DATA 0x02 void *desc_buf; unsigned int desc_buf_len; struct vio_completion *cmp; struct vio_dev *vdev; struct timer_list timer; struct vio_version ver; struct vio_version *ver_table; int ver_table_entries; char *name; struct vio_driver_ops *ops; }; static inline bool vio_version_before(struct vio_driver_state *vio, u16 major, u16 minor) { u32 have = (u32)vio->ver.major << 16 | vio->ver.minor; u32 want = (u32)major << 16 | minor; return have < want; } static inline bool vio_version_after(struct vio_driver_state *vio, u16 major, u16 minor) { u32 have = (u32)vio->ver.major << 16 | vio->ver.minor; u32 want = (u32)major << 16 | minor; return have > want; } static inline bool vio_version_after_eq(struct vio_driver_state *vio, u16 major, u16 minor) { u32 have = (u32)vio->ver.major << 16 | vio->ver.minor; u32 want = (u32)major << 16 | minor; return have >= want; } #define viodbg(TYPE, f, a...) \ do { if (vio->debug & VIO_DEBUG_##TYPE) \ printk(KERN_INFO "vio: ID[%lu] " f, \ vio->vdev->channel_id, ## a); \ } while (0) int __vio_register_driver(struct vio_driver *drv, struct module *owner, const char *mod_name); /* * vio_register_driver must be a macro so that KBUILD_MODNAME can be expanded */ #define vio_register_driver(driver) \ __vio_register_driver(driver, THIS_MODULE, KBUILD_MODNAME) void vio_unregister_driver(struct vio_driver *drv); static inline struct vio_driver *to_vio_driver(struct device_driver *drv) { return container_of(drv, struct vio_driver, driver); } static inline struct vio_dev *to_vio_dev(struct device *dev) { return container_of(dev, struct vio_dev, dev); } int vio_ldc_send(struct vio_driver_state *vio, void *data, int len); void vio_link_state_change(struct vio_driver_state *vio, int event); void vio_conn_reset(struct vio_driver_state *vio); int vio_control_pkt_engine(struct vio_driver_state *vio, void *pkt); int vio_validate_sid(struct vio_driver_state *vio, struct vio_msg_tag *tp); u32 vio_send_sid(struct vio_driver_state *vio); int vio_ldc_alloc(struct vio_driver_state *vio, struct ldc_channel_config *base_cfg, void *event_arg); void vio_ldc_free(struct vio_driver_state *vio); int vio_driver_init(struct vio_driver_state *vio, struct vio_dev *vdev, u8 dev_class, struct vio_version *ver_table, int ver_table_size, struct vio_driver_ops *ops, char *name); void vio_port_up(struct vio_driver_state *vio); int vio_set_intr(unsigned long dev_ino, int state); u64 vio_vdev_node(struct mdesc_handle *hp, struct vio_dev *vdev); #endif /* _SPARC64_VIO_H */
Save
cmd:
run