1/*- 2 * Copyright (c) 2011 Hans Petter Selasky. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23 * SUCH DAMAGE. 24 */ 25 26#ifndef _BSD_KERNEL_H_ 27#define _BSD_KERNEL_H_ 28 29#include <los_typedef.h> 30#include <stdint.h> 31 32#define _KERNEL 33#include "sys/module.h" 34#include "sys/bus.h" 35 36#define __FreeBSD_version 1000000 37 38#define rebooting 0 39#define M_USB 0 40#define M_USBDEV 0 41#define USB_PROC_MAX 3 42#define M_DEVBUF 1 43 44 45#define SYSCTL_DECL(...) 46#define SYSCTL_INT(...) 47#define TUNABLE_INT(...) 48#define EVENTHANDLER_DECLARE(...) 49#define EVENTHANDLER_INVOKE(...) 50#define SCHEDULER_STOPPED(x) (0) 51#define PI_SWI(...) (0) 52#define UNIQ_NAME(x) x 53#define UNIQ_NAME_STR(x) #x 54 55#define hz LOSCFG_BASE_CORE_TICK_PER_SECOND 56#ifndef PAGE_SIZE 57#define PAGE_SIZE 4096 58#endif 59 60typedef unsigned long bus_addr_t; 61typedef unsigned long bus_size_t; 62 63typedef void *bus_dmamap_t; 64typedef void *bus_dma_tag_t; 65 66typedef unsigned long bus_space_handle_t; 67 68typedef struct bus_dma_segment { 69 bus_addr_t ds_addr; /* DMA address */ 70 bus_size_t ds_len; /* length of transfer */ 71} bus_dma_segment_t; 72 73typedef enum { 74 BUS_DMA_LOCK = 0x01, 75 BUS_DMA_UNLOCK = 0x02, 76} bus_dma_lock_op_t; 77 78extern struct mtx Giant; 79 80#define CUR_TICKS (LOS_TickCountGet() & 0xFFFFFFFF) 81 82#ifdef LOSCFG_USB_DEBUG 83#define DEBUG_MODULE(name, func) \ 84/* static */struct debug_module_data debug_##name##_mod = { \ 85 func, #name, { 0, 0 } }; 86 87struct debug_module_data { 88 void (*callback) (int arg); 89 const char *mod_name; 90 TAILQ_ENTRY(debug_module_data) entry; 91}; 92 93void debug_module_register(void *data); 94void debug_module_unregister(void *data); 95struct debug_module_data *get_debug_module(const char *modname); 96void debug_module_dump(void); 97 98#define usb_debug(fmt, ...) \ 99 dprintf("[USB_DEBUG]: In %s %d, " fmt, __FUNCTION__, __LINE__, ##__VA_ARGS__); 100#else 101#define usb_debug(fmt, ...) 102#endif 103 104#define usb_err(fmt, ...) \ 105 dprintf("[USB_ERR]: In %s %d, " fmt, __FUNCTION__, __LINE__, ##__VA_ARGS__); 106 107#define device_printf(dev, fmt,...) \ 108 dprintf("%s (%s): " fmt, __FUNCTION__, device_get_nameunit(dev), ##__VA_ARGS__) 109 110#define bus_get_dma_tag(...) (NULL) 111 112/* BUS SPACE API */ 113 114void module_register(void *); 115void module_unregister(void *); 116/* USB */ 117 118typedef int usb_handle_request_t (device_t dev, const void *req, void **pptr, uint16_t *plen, 119 uint16_t offset, uint8_t *pstate); 120typedef int usb_take_controller_t (device_t dev); 121 122/* set some defaults */ 123 124#ifndef USB_POOL_SIZE 125#define USB_POOL_SIZE (1024*1024) /* 1 MByte */ 126#endif 127 128#ifndef __DECONST 129#define __DECONST(type, var) ((type)(__uintptr_t)(const void *)(var)) 130#endif 131 132/* BUS SPACE API */ 133void bus_space_write_1(bus_space_tag_t t, bus_space_handle_t h, bus_size_t offset, uint8_t data); 134void bus_space_write_2(bus_space_tag_t t, bus_space_handle_t h, bus_size_t offset, uint16_t data); 135void bus_space_write_4(bus_space_tag_t t, bus_space_handle_t h, bus_size_t offset, uint32_t data); 136 137uint8_t bus_space_read_1(bus_space_tag_t t, bus_space_handle_t h, bus_size_t offset); 138uint16_t bus_space_read_2(bus_space_tag_t t, bus_space_handle_t h, bus_size_t offset); 139uint32_t bus_space_read_4(bus_space_tag_t t, bus_space_handle_t h, bus_size_t offset); 140 141void bus_space_read_multi_1(bus_space_tag_t t, bus_space_handle_t h, bus_size_t offset, 142 uint8_t *datap, bus_size_t count); 143void bus_space_read_multi_2(bus_space_tag_t t, bus_space_handle_t h, bus_size_t offset, 144 uint16_t *datap, bus_size_t count); 145void bus_space_read_multi_4(bus_space_tag_t t, bus_space_handle_t h, bus_size_t offset, 146 uint32_t *datap, bus_size_t count); 147 148void bus_space_write_multi_1(bus_space_tag_t t, bus_space_handle_t h, bus_size_t offset, 149 uint8_t *datap, bus_size_t count); 150void bus_space_write_multi_2(bus_space_tag_t t, bus_space_handle_t h, bus_size_t offset, 151 uint16_t *datap, bus_size_t count); 152void bus_space_write_multi_4(bus_space_tag_t t, bus_space_handle_t h, bus_size_t offset, 153 uint32_t *datap, bus_size_t count); 154 155void bus_space_read_region_1(bus_space_tag_t space, bus_space_handle_t handle, bus_size_t offset, 156 uint8_t *datap, bus_size_t count); 157void bus_space_write_region_1(bus_space_tag_t space, bus_space_handle_t handle, bus_size_t offset, 158 uint8_t *datap, bus_size_t count); 159void bus_space_read_region_4(bus_space_tag_t space, bus_space_handle_t handle, bus_size_t offset, 160 uint32_t *datap, bus_size_t count); 161void bus_space_write_region_4(bus_space_tag_t space, bus_space_handle_t handle, bus_size_t offset, 162 uint32_t *datap, bus_size_t count); 163 164extern void devclass_module_dump(void); 165 166#endif /* _BSD_KERNEL_H_ */ 167