xref: /illumos-gate/usr/src/uts/common/io/cxgbe/shared/osdep.h (revision e9f1d7c76e4f04ef65385ffd57f5f6188f308011)
177983a89SPatrick Mooney /*
277983a89SPatrick Mooney  * This file and its contents are supplied under the terms of the
377983a89SPatrick Mooney  * Common Development and Distribution License ("CDDL"), version 1.0.
477983a89SPatrick Mooney  * You may only use this file in accordance with the terms of version
577983a89SPatrick Mooney  * 1.0 of the CDDL.
677983a89SPatrick Mooney  *
777983a89SPatrick Mooney  * A full copy of the text of the CDDL should have accompanied this
877983a89SPatrick Mooney  * source. A copy of the CDDL is also available via the Internet at
977983a89SPatrick Mooney  * http://www.illumos.org/license/CDDL.
1077983a89SPatrick Mooney  */
1177983a89SPatrick Mooney 
1277983a89SPatrick Mooney /*
1377983a89SPatrick Mooney  * This file is part of the Chelsio T4 support code.
1477983a89SPatrick Mooney  *
1577983a89SPatrick Mooney  * Copyright (C) 2010-2013 Chelsio Communications.  All rights reserved.
1677983a89SPatrick Mooney  *
1777983a89SPatrick Mooney  * This program is distributed in the hope that it will be useful, but WITHOUT
1877983a89SPatrick Mooney  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1977983a89SPatrick Mooney  * FITNESS FOR A PARTICULAR PURPOSE.  See the LICENSE file included in this
2077983a89SPatrick Mooney  * release for licensing terms and conditions.
2177983a89SPatrick Mooney  */
2277983a89SPatrick Mooney 
2377983a89SPatrick Mooney /*
2477983a89SPatrick Mooney  * Copyright 2024 Oxide Computer Company
2577983a89SPatrick Mooney  */
2677983a89SPatrick Mooney 
2777983a89SPatrick Mooney #ifndef __CXGBE_OSDEP_H
2877983a89SPatrick Mooney #define	__CXGBE_OSDEP_H
2977983a89SPatrick Mooney 
3077983a89SPatrick Mooney #include <sys/ddi.h>
3177983a89SPatrick Mooney #include <sys/sunddi.h>
3277983a89SPatrick Mooney #include <sys/byteorder.h>
3377983a89SPatrick Mooney #include <sys/cmn_err.h>
3477983a89SPatrick Mooney #include <sys/pcie.h>
3577983a89SPatrick Mooney #include <sys/sysmacros.h>
3677983a89SPatrick Mooney #include <sys/inttypes.h>
3777983a89SPatrick Mooney #include <sys/stdbool.h>
3877983a89SPatrick Mooney #include <sys/sysmacros.h>
3977983a89SPatrick Mooney #include <sys/mutex.h>
4077983a89SPatrick Mooney 
4177983a89SPatrick Mooney 
4277983a89SPatrick Mooney #define	CH_DUMP_MBOX(adap, mbox, data_reg, size)	do {} while (0)
4377983a89SPatrick Mooney 
4477983a89SPatrick Mooney #define	PCI_VENDOR_ID		0x00
4577983a89SPatrick Mooney #define	PCI_DEVICE_ID		0x02
4677983a89SPatrick Mooney 
4777983a89SPatrick Mooney #define	PCI_BASE_ADDRESS_0	0x10
4877983a89SPatrick Mooney #define	PCI_BASE_ADDRESS_1	0x14
4977983a89SPatrick Mooney #define	PCI_BASE_ADDRESS_2	0x18
5077983a89SPatrick Mooney #define	PCI_BASE_ADDRESS_MEM_MASK	(~0x0fUL)
5177983a89SPatrick Mooney 
5277983a89SPatrick Mooney #define	PCI_CAP_ID_EXP		PCI_CAP_ID_PCI_E
5377983a89SPatrick Mooney #define	PCI_EXP_DEVCTL		PCIE_DEVCTL
5477983a89SPatrick Mooney #define	PCI_EXP_DEVCTL_PAYLOAD	PCIE_DEVCTL_MAX_PAYLOAD_MASK
5577983a89SPatrick Mooney #define	PCI_EXP_DEVCTL_READRQ	PCIE_DEVCTL_MAX_READ_REQ_MASK
5677983a89SPatrick Mooney #define	PCI_EXP_LNKCTL		PCIE_LINKCTL
5777983a89SPatrick Mooney #define	PCI_EXP_LNKSTA		PCIE_LINKSTS
5877983a89SPatrick Mooney #define	PCI_EXP_LNKSTA_CLS	PCIE_LINKSTS_SPEED_MASK
5977983a89SPatrick Mooney #define	PCI_EXP_LNKSTA_NLW	PCIE_LINKSTS_NEG_WIDTH_MASK
6077983a89SPatrick Mooney #define	PCI_EXP_DEVCTL2		0x28
6177983a89SPatrick Mooney 
6277983a89SPatrick Mooney #define	PCI_VPD_ADDR	2
6377983a89SPatrick Mooney #define	PCI_VPD_ADDR_F	0x8000
6477983a89SPatrick Mooney #define	PCI_VPD_DATA	4
6577983a89SPatrick Mooney 
6677983a89SPatrick Mooney #define	__devinit
6777983a89SPatrick Mooney #define	DIV_ROUND_UP(x, y) howmany(x, y)
6877983a89SPatrick Mooney 
6977983a89SPatrick Mooney #define	udelay(x) drv_usecwait(x)
7077983a89SPatrick Mooney #define	msleep(x) delay(drv_usectohz(1000ULL * (x)))
7177983a89SPatrick Mooney #define	mdelay(x) drv_usecwait(1000UL * (x))
7277983a89SPatrick Mooney 
7377983a89SPatrick Mooney #define	le16_to_cpu(x) LE_16((uint16_t)(x))
7477983a89SPatrick Mooney #define	le32_to_cpu(x) LE_32((uint32_t)(x))
7577983a89SPatrick Mooney #define	le64_to_cpu(x) LE_64((uint64_t)(x))
7677983a89SPatrick Mooney #define	cpu_to_le16(x) LE_16((uint16_t)(x))
7777983a89SPatrick Mooney #define	cpu_to_le32(x) LE_32((uint32_t)(x))
7877983a89SPatrick Mooney #define	cpu_to_le64(x) LE_64((uint64_t)(x))
7977983a89SPatrick Mooney #define	be16_to_cpu(x) BE_16((uint16_t)(x))
8077983a89SPatrick Mooney #define	be32_to_cpu(x) BE_32((uint32_t)(x))
8177983a89SPatrick Mooney #define	be64_to_cpu(x) BE_64((uint64_t)(x))
8277983a89SPatrick Mooney #define	cpu_to_be16(x) BE_16((uint16_t)(x))
8377983a89SPatrick Mooney #define	cpu_to_be32(x) BE_32((uint32_t)(x))
8477983a89SPatrick Mooney #define	cpu_to_be64(x) BE_64((uint64_t)(x))
8577983a89SPatrick Mooney #define	swab32(x) BSWAP_32(x)
8677983a89SPatrick Mooney 
8777983a89SPatrick Mooney typedef uint8_t 	u8;
8877983a89SPatrick Mooney typedef uint16_t 	u16;
8977983a89SPatrick Mooney typedef uint32_t 	u32;
9077983a89SPatrick Mooney typedef uint64_t 	u64;
9177983a89SPatrick Mooney 
9277983a89SPatrick Mooney typedef uint8_t		__u8;
9377983a89SPatrick Mooney typedef uint16_t	__u16;
9477983a89SPatrick Mooney typedef uint32_t	__u32;
9577983a89SPatrick Mooney typedef uint64_t	__u64;
9677983a89SPatrick Mooney typedef uint8_t		__be8;
9777983a89SPatrick Mooney typedef uint16_t	__be16;
9877983a89SPatrick Mooney typedef uint32_t	__be32;
9977983a89SPatrick Mooney typedef uint64_t	__be64;
10077983a89SPatrick Mooney 
10177983a89SPatrick Mooney typedef uint32_t	__le32;
10277983a89SPatrick Mooney 
10377983a89SPatrick Mooney typedef int8_t		s8;
10477983a89SPatrick Mooney typedef int16_t		s16;
10577983a89SPatrick Mooney typedef int32_t		s32;
10677983a89SPatrick Mooney typedef int64_t		s64;
10777983a89SPatrick Mooney 
10877983a89SPatrick Mooney #if defined(__sparc)
10977983a89SPatrick Mooney #define	__BIG_ENDIAN_BITFIELD
11077983a89SPatrick Mooney #define	PAGE_SIZE 8192
11177983a89SPatrick Mooney #define	PAGE_SHIFT 13
11277983a89SPatrick Mooney #else
11377983a89SPatrick Mooney #define	__LITTLE_ENDIAN_BITFIELD
11477983a89SPatrick Mooney #define	PAGE_SIZE 4096
11577983a89SPatrick Mooney #define	PAGE_SHIFT 12
11677983a89SPatrick Mooney #endif
11777983a89SPatrick Mooney 
11877983a89SPatrick Mooney #define	ETH_ALEN		6
11977983a89SPatrick Mooney 
12077983a89SPatrick Mooney #define	isspace(x) ((x) == ' ' || (x) == '\t')
12177983a89SPatrick Mooney 
12277983a89SPatrick Mooney #ifdef _KERNEL
12377983a89SPatrick Mooney 
12477983a89SPatrick Mooney #define	t4_os_alloc(_size)	kmem_alloc(_size, KM_SLEEP)
12577983a89SPatrick Mooney #define	fls(x) ddi_fls(x)
12677983a89SPatrick Mooney 
127*e9f1d7c7SPatrick Mooney static inline int
ilog2(long x)12877983a89SPatrick Mooney ilog2(long x)
12977983a89SPatrick Mooney {
13077983a89SPatrick Mooney 	return (ddi_fls(x) - 1);
13177983a89SPatrick Mooney }
13277983a89SPatrick Mooney 
13377983a89SPatrick Mooney typedef kmutex_t t4_os_lock_t;
13477983a89SPatrick Mooney 
135*e9f1d7c7SPatrick Mooney static inline void
t4_os_lock(t4_os_lock_t * lock)136*e9f1d7c7SPatrick Mooney t4_os_lock(t4_os_lock_t *lock)
13777983a89SPatrick Mooney {
13877983a89SPatrick Mooney 	mutex_enter(lock);
13977983a89SPatrick Mooney }
14077983a89SPatrick Mooney 
141*e9f1d7c7SPatrick Mooney static inline void
t4_os_unlock(t4_os_lock_t * lock)142*e9f1d7c7SPatrick Mooney t4_os_unlock(t4_os_lock_t *lock)
14377983a89SPatrick Mooney {
14477983a89SPatrick Mooney 	mutex_exit(lock);
14577983a89SPatrick Mooney }
14677983a89SPatrick Mooney 
14777983a89SPatrick Mooney #endif /* _KERNEL */
14877983a89SPatrick Mooney 
14977983a89SPatrick Mooney #endif /* __CXGBE_OSDEP_H */
150