Compare commits
61
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cb7144f282 | ||
|
|
afdc83eaf6 | ||
|
|
2239d9c848 | ||
|
|
beb4b253ab | ||
|
|
084130da80 | ||
|
|
f752be48ce | ||
|
|
dbe6e958e2 | ||
|
|
201cda4c29 | ||
|
|
e54b34aa93 | ||
|
|
fcfe7c3204 | ||
|
|
be4b482bde | ||
|
|
6f50b053b7 | ||
|
|
ece376660c | ||
|
|
98a14bc7dc | ||
|
|
989e36ffe2 | ||
|
|
ceb03a9d7e | ||
|
|
924305a1ab | ||
|
|
4ef61b0d3b | ||
|
|
2b071a58c7 | ||
|
|
1145b900e4 | ||
|
|
436cd86d8c | ||
|
|
540444dfbf | ||
|
|
2d7c51ed15 | ||
|
|
c842d9774f | ||
|
|
5963504f6b | ||
|
|
e64a59714a | ||
|
|
dd5d908e43 | ||
|
|
28846af43c | ||
|
|
b1e3953960 | ||
|
|
7e00e23801 | ||
|
|
bd12bbe862 | ||
|
|
48c203f028 | ||
|
|
d859e40e4a | ||
|
|
8c3649f691 | ||
|
|
b47194ed99 | ||
|
|
6bca42f2a5 | ||
|
|
f1211f3cca | ||
|
|
0913daebc6 | ||
|
|
d1a4b4d42f | ||
|
|
2906b8724b | ||
|
|
5e6e6c394a | ||
|
|
315050f095 | ||
|
|
f795ba24f8 | ||
|
|
738307d070 | ||
|
|
04cff2e2c3 | ||
|
|
0b5981242b | ||
|
|
f0dc598f44 | ||
|
|
d4236f455e | ||
|
|
96fcf19c14 | ||
|
|
8c51bd8690 | ||
|
|
43464bb550 | ||
|
|
6a1b87e250 | ||
|
|
9473e26b50 | ||
|
|
f19444201d | ||
|
|
f907b7e072 | ||
|
|
80d0183391 | ||
|
|
5f3de290f3 | ||
|
|
07106b9aed | ||
|
|
25df276101 | ||
|
|
dbc5105b9b | ||
|
|
a61289a318 |
No files matched your search
+14
@@ -50,3 +50,17 @@ steps:
|
||||
- |
|
||||
curl -X PUT https://gitea.spexeah.com/api/packages/Spexeah/generic/asuro-iso/latest/Asuro.iso \
|
||||
-H "Authorization: token $GITEA_TOKEN" --upload-file "Asuro-$(git rev-parse --short HEAD).iso"
|
||||
|
||||
- name: msg status
|
||||
image: appleboy/drone-discord
|
||||
failure: ignore
|
||||
depends_on:
|
||||
- compile
|
||||
when:
|
||||
status: [success, failure, changed]
|
||||
settings:
|
||||
webhook_id:
|
||||
from_secret: discord_webhook_id
|
||||
webhook_token:
|
||||
from_secret: discord_webhook_secret
|
||||
message: "**Asuro Build**\n\n{{#success build.status}}✅ Build successful!\n\n{{else}}❌ Build failed!\n\n{{/success}}Repository: `{{repo.namespace}}/{{repo.name}}`\nBranch: `{{commit.branch}}`\nCommit: `{{commit.sha}}`\nAuthor: `{{commit.author}} <{{commit.email}}>`\n\nGitea Diff: [Link](<{{commit.link}}>)\nDrone Build: [Link](<{{build.link}}>)\n\nMessage: {{commit.message}}"
|
||||
@@ -11,3 +11,7 @@
|
||||
/*.img
|
||||
src/include/asuro.pas
|
||||
localenv.json
|
||||
/lvgl/
|
||||
dockerout.txt
|
||||
AGENTS.md
|
||||
*.log
|
||||
@@ -0,0 +1,13 @@
|
||||
# Map all Aaron identities to a single preferred identity
|
||||
Aaron Hance <[email protected]> aaron <aaron@6dbc8c32-bb84-406f-8558-d1cf31a0ab0c>
|
||||
Aaron Hance <[email protected]> aaronhance <[email protected]>
|
||||
Aaron Hance <[email protected]> aaron hance <[email protected]>
|
||||
Aaron Hance <[email protected]> Aaron <[email protected]>
|
||||
|
||||
# Map all Kieron identities to a single preferred identity
|
||||
Kieron Morris <[email protected]> kieron <kieron@6dbc8c32-bb84-406f-8558-d1cf31a0ab0c>
|
||||
Kieron Morris <[email protected]> Kieron <[email protected]>
|
||||
Kieron Morris <[email protected]> t3hn3rd <[email protected]>
|
||||
|
||||
# Map goose's multiple identities
|
||||
goose <goose@6dbc8c32-bb84-406f-8558-d1cf31a0ab0c> goose <[email protected]>
|
||||
+2
-5
@@ -5,14 +5,11 @@ VOLUME ["/code"]
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
RUN dpkg --add-architecture i386
|
||||
RUN apt-get update && apt-get install -y \
|
||||
curl dos2unix wget git make nasm binutils xorriso grub-pc-bin \
|
||||
gcc-multilib g++-multilib && \
|
||||
curl dos2unix wget git make nasm binutils xorriso grub-pc-bin gcc gcc-multilib && \
|
||||
apt-get clean my room
|
||||
|
||||
RUN git clone --depth=1 --recurse-submodules https://github.com/cimgui/cimgui.git /cimgui
|
||||
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
ARG FPC_VERSION=2.6.4
|
||||
ARG FPC_VERSION=3.2.2
|
||||
RUN curl -sL https://sourceforge.net/projects/freepascal/files/Linux/$FPC_VERSION/fpc-$FPC_VERSION.i386-linux.tar/download | tar -xf - && \
|
||||
pushd fpc-$FPC_VERSION.i386-linux && ./install.sh && popd && \
|
||||
rm -rf fpc-$FPC_VERSION.i386-linux
|
||||
|
||||
+2
-2
@@ -7,7 +7,7 @@ echo "Asuro Compilation"
|
||||
echo " "
|
||||
|
||||
#Compile Stub.asm
|
||||
rm lib/*
|
||||
rm -f lib/*
|
||||
|
||||
runOrFail() {
|
||||
local binary=$1
|
||||
@@ -23,7 +23,7 @@ runOrFail() {
|
||||
declare -a run_steps=(
|
||||
"compile_stub.sh" "Failed to compile stub!"
|
||||
"compile_vergen.sh" "Versions failed to compile"
|
||||
"compile_imgui.sh" "Failed to compile ImGui!"
|
||||
"compile_lvgl.sh" "Failed to compile LVGL!"
|
||||
"compile_sources.sh" "Failed to compile FPC Sources!"
|
||||
"compile_link.sh" "Failed linking!"
|
||||
"compile_isogen.sh" "Failed to create ISO!"
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
echo " "
|
||||
echo "======================="
|
||||
echo " "
|
||||
echo "Compiling ImGui (cimgui)..."
|
||||
echo " "
|
||||
|
||||
IMGUI_DIR=/cimgui
|
||||
IMGUI_SRC=$IMGUI_DIR/imgui
|
||||
BRIDGE_SRC=src/driver/video/imgui
|
||||
|
||||
# Flags shared by all C/C++ compilation units:
|
||||
# -m32 -> i386 target
|
||||
# -ffreestanding -> no implicit stdlib inclusion
|
||||
# -fno-builtin -> don't inline memcpy/memset/etc. so our stubs are used
|
||||
# -O2 -> optimise for speed
|
||||
# -ffunction-sections -fdata-sections -> allow --gc-sections in linker
|
||||
C_FLAGS="-m32 -ffreestanding -fno-builtin -O2 -ffunction-sections -fdata-sections"
|
||||
|
||||
# Extra flags for C++ translation units (cimgui/imgui sources):
|
||||
# -fno-exceptions -> no stack-unwinding machinery
|
||||
# -fno-rtti -> no typeinfo / dynamic_cast
|
||||
# -fno-use-cxa-atexit -> don't emit __cxa_atexit calls for static dtors
|
||||
# -fno-threadsafe-statics -> no guard-variable emission for local statics
|
||||
# NOTE: *not* -ffreestanding / -fno-builtin here — imgui includes <cmath> and
|
||||
# other hosted headers that refuse to compile in freestanding mode.
|
||||
# The object files are archived into a static lib and linked freestanding;
|
||||
# any hosted-stdlib calls (malloc/free/sin/cos/…) resolve to crtshim.c.
|
||||
CPP_FLAGS="-m32 -O2 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-use-cxa-atexit -fno-threadsafe-statics -fno-stack-protector -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0 -DNDEBUG -DIMGUI_ENABLE_STB_TRUETYPE"
|
||||
|
||||
INCLUDE="-I$IMGUI_DIR -I$IMGUI_SRC"
|
||||
|
||||
echo "Compiling C runtime shim..."
|
||||
gcc $C_FLAGS $INCLUDE \
|
||||
-c $BRIDGE_SRC/crtshim.c \
|
||||
-o lib/imgui_crtshim.o || { echo "Failed: crtshim.c"; exit 1; }
|
||||
|
||||
echo "Compiling render bridge..."
|
||||
# imgbridge is compiled as C++ so it sees cimgui.h function declarations
|
||||
# (C++ mode is required; the .c extension is overridden with -x c++)
|
||||
g++ $CPP_FLAGS $INCLUDE \
|
||||
-x c++ \
|
||||
-DCIMGUI_DEFINE_ENUMS_AND_STRUCTS \
|
||||
-c $BRIDGE_SRC/imgbridge.c \
|
||||
-o lib/imgui_bridge.o || { echo "Failed: imgbridge.c"; exit 1; }
|
||||
|
||||
echo "Compiling cimgui wrapper..."
|
||||
g++ $CPP_FLAGS $INCLUDE \
|
||||
-c $IMGUI_DIR/cimgui.cpp \
|
||||
-o lib/imgui_cimgui.o || { echo "Failed: cimgui.cpp"; exit 1; }
|
||||
|
||||
echo "Compiling imgui core..."
|
||||
g++ $CPP_FLAGS $INCLUDE \
|
||||
-c $IMGUI_SRC/imgui.cpp \
|
||||
-o lib/imgui_core.o || { echo "Failed: imgui.cpp"; exit 1; }
|
||||
|
||||
echo "Compiling imgui draw..."
|
||||
g++ $CPP_FLAGS $INCLUDE \
|
||||
-c $IMGUI_SRC/imgui_draw.cpp \
|
||||
-o lib/imgui_draw.o || { echo "Failed: imgui_draw.cpp"; exit 1; }
|
||||
|
||||
echo "Compiling imgui tables..."
|
||||
g++ $CPP_FLAGS $INCLUDE \
|
||||
-c $IMGUI_SRC/imgui_tables.cpp \
|
||||
-o lib/imgui_tables.o || { echo "Failed: imgui_tables.cpp"; exit 1; }
|
||||
|
||||
echo "Compiling imgui widgets..."
|
||||
g++ $CPP_FLAGS $INCLUDE \
|
||||
-c $IMGUI_SRC/imgui_widgets.cpp \
|
||||
-o lib/imgui_widgets.o || { echo "Failed: imgui_widgets.cpp"; exit 1; }
|
||||
|
||||
echo "Compiling imgui demo..."
|
||||
g++ $CPP_FLAGS $INCLUDE \
|
||||
-c $IMGUI_SRC/imgui_demo.cpp \
|
||||
-o lib/imgui_demo.o || { echo "Failed: imgui_demo.cpp"; exit 1; }
|
||||
|
||||
echo "Archiving cimgui.a..."
|
||||
# NOTE: imgui_bridge.o and imgui_crtshim.o are NOT in the archive because
|
||||
# compile_link.sh already picks them up individually via find lib/ -name "*.o".
|
||||
# Including them here would cause duplicate symbol errors.
|
||||
ar rcs lib/cimgui.a \
|
||||
lib/imgui_cimgui.o \
|
||||
lib/imgui_core.o \
|
||||
lib/imgui_draw.o \
|
||||
lib/imgui_tables.o \
|
||||
lib/imgui_widgets.o \
|
||||
lib/imgui_demo.o || { echo "Failed: ar"; exit 1; }
|
||||
|
||||
echo "ImGui compiled successfully."
|
||||
exit 0
|
||||
+5
-2
@@ -14,6 +14,9 @@ done;
|
||||
objstring=lib/stub.o" "$objstring
|
||||
echo "Object Files: "$objstring
|
||||
echo " "
|
||||
|
||||
# Find libgcc for i386 (needed by LVGL compiled with gcc)
|
||||
LIBGCC=$(gcc -m32 -print-libgcc-file-name)
|
||||
ld -m elf_i386 -s --gc-sections -Tlinker.script -o bin/kernel.bin $objstring \
|
||||
--start-group lib/cimgui.a $LIBGCC --end-group
|
||||
echo "libgcc: ${LIBGCC}"
|
||||
|
||||
ld -m elf_i386 -s --gc-sections -Tlinker.script -o bin/kernel.bin $objstring --start-group lib/liblvgl.a ${LIBGCC} --end-group
|
||||
+118
@@ -0,0 +1,118 @@
|
||||
#!/usr/bin/env bash
|
||||
# compile_lvgl.sh — Download LVGL v9.2 source and compile into lib/liblvgl.a
|
||||
# Clone & compile in /tmp (fast container-local fs).
|
||||
# Copy source + objects to /lvgl (host mount) for debugging.
|
||||
set -e
|
||||
|
||||
LVGL_VERSION="v9.2.2"
|
||||
LVGL_REPO="https://github.com/lvgl/lvgl.git"
|
||||
LVGL_DIR="/tmp/lvgl"
|
||||
OBJ_DIR="/tmp/lvgl_obj"
|
||||
CONF_DIR="$(pwd)/lvglh"
|
||||
OUT_DIR="$(pwd)/lib"
|
||||
|
||||
CC="gcc"
|
||||
CFLAGS="-m32 -march=i686 -ffreestanding \
|
||||
-fno-builtin -fno-stack-protector -fno-pic -fno-pie \
|
||||
-O2 -Wall -Wno-unused-function -Wno-unused-variable \
|
||||
-I${CONF_DIR} \
|
||||
-I${LVGL_DIR} \
|
||||
-I${LVGL_DIR}/.. \
|
||||
-DLV_CONF_INCLUDE_SIMPLE"
|
||||
|
||||
echo " "
|
||||
echo "======================="
|
||||
echo " "
|
||||
echo "Compiling LVGL..."
|
||||
echo " "
|
||||
|
||||
# Clone LVGL into /tmp (container-local)
|
||||
rm -rf "$LVGL_DIR"
|
||||
echo "Downloading LVGL ${LVGL_VERSION}..."
|
||||
git clone --depth 1 --branch "${LVGL_VERSION}" "${LVGL_REPO}" "${LVGL_DIR}" 2>&1
|
||||
echo "Download complete."
|
||||
|
||||
# Gather all LVGL .c source files (core library only, no demos/examples)
|
||||
SOURCES=$(find "${LVGL_DIR}/src" -name '*.c' -not -path '*/test/*')
|
||||
TOTAL=$(echo "$SOURCES" | wc -l)
|
||||
echo "Found ${TOTAL} LVGL source files."
|
||||
|
||||
# Compile each .c file to .o (container-local)
|
||||
rm -rf "$OBJ_DIR"
|
||||
mkdir -p "$OBJ_DIR"
|
||||
|
||||
COUNT=0
|
||||
ERRORS=0
|
||||
for src in $SOURCES; do
|
||||
COUNT=$((COUNT + 1))
|
||||
rel="${src#${LVGL_DIR}/src/}"
|
||||
obj_path="${OBJ_DIR}/${rel%.c}.o"
|
||||
mkdir -p "$(dirname "$obj_path")"
|
||||
|
||||
if ! $CC $CFLAGS -c "$src" -o "$obj_path" 2>&1; then
|
||||
echo "FAILED: $rel"
|
||||
ERRORS=$((ERRORS + 1))
|
||||
fi
|
||||
|
||||
if [ $((COUNT % 50)) -eq 0 ]; then
|
||||
echo " Compiled ${COUNT}/${TOTAL}..."
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Compiled ${COUNT} files (${ERRORS} errors)."
|
||||
|
||||
if [ "$ERRORS" -ne 0 ]; then
|
||||
echo "LVGL compilation FAILED with ${ERRORS} errors."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Archive into static library
|
||||
OBJECTS=$(find "$OBJ_DIR" -name '*.o')
|
||||
ar rcs "${OUT_DIR}/liblvgl.a" $OBJECTS
|
||||
echo "Created ${OUT_DIR}/liblvgl.a"
|
||||
|
||||
# Compile custom LVGL extension files from lvglh/
|
||||
LVGLH_SOURCES=$(find "${CONF_DIR}" -name '*.c' 2>/dev/null || true)
|
||||
if [ -n "$LVGLH_SOURCES" ]; then
|
||||
echo " "
|
||||
echo "Compiling custom LVGL files from lvglh/..."
|
||||
LVGLH_OBJ_DIR="/tmp/lvglh_obj"
|
||||
rm -rf "$LVGLH_OBJ_DIR"
|
||||
mkdir -p "$LVGLH_OBJ_DIR"
|
||||
HCOUNT=0
|
||||
HERRORS=0
|
||||
for src in $LVGLH_SOURCES; do
|
||||
HCOUNT=$((HCOUNT + 1))
|
||||
rel="${src#${CONF_DIR}/}"
|
||||
obj_path="${LVGLH_OBJ_DIR}/${rel%.c}.o"
|
||||
mkdir -p "$(dirname "$obj_path")"
|
||||
echo " [lvglh] $rel"
|
||||
if ! $CC $CFLAGS -c "$src" -o "$obj_path" 2>&1; then
|
||||
echo " FAILED: $rel"
|
||||
HERRORS=$((HERRORS + 1))
|
||||
fi
|
||||
done
|
||||
echo "Compiled ${HCOUNT} custom files (${HERRORS} errors)."
|
||||
if [ "$HERRORS" -ne 0 ]; then
|
||||
echo "Custom LVGL compilation FAILED."
|
||||
exit 1
|
||||
fi
|
||||
# Append custom objects into the existing archive
|
||||
HOBJECTS=$(find "$LVGLH_OBJ_DIR" -name '*.o')
|
||||
ar rcs "${OUT_DIR}/liblvgl.a" $HOBJECTS
|
||||
echo "Updated ${OUT_DIR}/liblvgl.a with custom objects."
|
||||
else
|
||||
echo "No custom LVGL files in lvglh/."
|
||||
fi
|
||||
|
||||
# Copy source + objects to /lvgl host mount for debugging
|
||||
echo "Copying LVGL source and objects to host mount..."
|
||||
mkdir /code/lvgl 2>/dev/null || true
|
||||
rm -rf /code/lvgl/* /code/lvgl/.[!.]* /code/lvgl/..?* 2>/dev/null || true
|
||||
cp -a "$LVGL_DIR/src" /code/lvgl/src
|
||||
cp -a "$OBJ_DIR" /code/lvgl/obj
|
||||
echo "Done."
|
||||
|
||||
echo " "
|
||||
echo "LVGL compilation complete."
|
||||
echo " "
|
||||
+1
-1
@@ -4,4 +4,4 @@ echo "======================="
|
||||
echo " "
|
||||
echo "Compiling FPC Sources..."
|
||||
echo " "
|
||||
fpc -Aelf -gw -g -gl -n -vlewn -O3 -Op3 -Si -Sc -Sg -Xd -CX -XXs -CfSSE -CfSSE2 -Rintel -Pi386 -Tlinux -FElib/ -Fusrc/* -Fusrc/driver/* -Fusrc/driver/net/* -Fusrc/driver/video/* -Fusrc/driver/video/imgui/* src/kernel.pas
|
||||
fpc -Aelf -gw -g -gl -n -v0ew -O3 -OpPENTIUM3 -Si -Sc -Sg -Xd -CX -XXs -CfSSE -CfSSE2 -Rintel -Pi386 -Tlinux -FElib/ -Fusrc/* -Fusrc/driver/* -Fusrc/driver/net/* -Fusrc/driver/bus/* -Fusrc/driver/bus/usb/* -Fusrc/driver/hid/* src/kernel.pas
|
||||
@@ -1,20 +0,0 @@
|
||||
4023:CIMGUI_API float igGetWindowDpiScale(void);
|
||||
4081:CIMGUI_API const ImVec4_c* igGetStyleColorVec4(ImGuiCol idx);
|
||||
4082:CIMGUI_API ImVec2_c igGetCursorScreenPos(void);
|
||||
4084:CIMGUI_API ImVec2_c igGetContentRegionAvail(void);
|
||||
4085:CIMGUI_API ImVec2_c igGetCursorPos(void);
|
||||
4086:CIMGUI_API float igGetCursorPosX(void);
|
||||
4087:CIMGUI_API float igGetCursorPosY(void);
|
||||
4091:CIMGUI_API ImVec2_c igGetCursorStartPos(void);
|
||||
4350:CIMGUI_API void igBeginDisabled(bool disabled);
|
||||
4372:CIMGUI_API ImVec2_c igGetItemRectMin(void);
|
||||
4373:CIMGUI_API ImVec2_c igGetItemRectMax(void);
|
||||
4374:CIMGUI_API ImVec2_c igGetItemRectSize(void);
|
||||
4377:CIMGUI_API ImDrawList* igGetBackgroundDrawList(ImGuiViewport* viewport);
|
||||
4378:CIMGUI_API ImDrawList* igGetForegroundDrawList_ViewportPtr(ImGuiViewport* viewport);
|
||||
4387:CIMGUI_API ImVec2_c igCalcTextSize(const char* text,const char* text_end,bool hide_text_after_double_hash,float wrap_width);
|
||||
4388:CIMGUI_API ImVec4_c igColorConvertU32ToFloat4(ImU32 in);
|
||||
4405:CIMGUI_API bool igIsMouseDoubleClicked_Nil(ImGuiMouseButton button);
|
||||
5092:CIMGUI_API ImDrawList* igGetForegroundDrawList_WindowPtr(ImGuiWindow* window);
|
||||
5161:CIMGUI_API void igBeginDisabledOverrideReenable(void);
|
||||
5244:CIMGUI_API bool igIsMouseDoubleClicked_ID(ImGuiMouseButton button,ImGuiID owner_id);
|
||||
+12886
File diff suppressed because it is too large.
Load diff
+374
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
-2755
File diff suppressed because it is too large.
Load diff
+80
-70
File diff suppressed because it is too large.
Load diff
@@ -1,96 +0,0 @@
|
||||
// Copyright 2021 Kieron Morris
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
{
|
||||
Driver->Bus->OHCI - Open Host Controller Interface Driver.
|
||||
|
||||
@author(Kieron Morris <[email protected]>)
|
||||
}
|
||||
unit OHCI;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
tracer,
|
||||
Console,
|
||||
PCI,
|
||||
drivertypes,
|
||||
pmemorymanager,
|
||||
vmemorymanager,
|
||||
util,
|
||||
drivermanagement;
|
||||
|
||||
type
|
||||
POHCI_MMR = ^TOHCI_MMR;
|
||||
TOHCI_MMR = packed record
|
||||
HcRevision : uint32;
|
||||
HcControl : uint32;
|
||||
HcCommandStatus : uint32;
|
||||
HcIntStatus : uint32;
|
||||
HcIntEnable : uint32;
|
||||
HcIntDisable : uint32;
|
||||
HcHCCA : uint32;
|
||||
HcPeriodCurrentED : uint32;
|
||||
HcControlHeadED : uint32;
|
||||
HcControlCurrentED : uint32;
|
||||
HcBulkHeadED : uint32;
|
||||
HcBulkCurrentED : uint32;
|
||||
HcDoneHead : uint32;
|
||||
HcFmRemaining : uint32;
|
||||
HcFmNumber : uint32;
|
||||
HcPeriodicStart : uint32;
|
||||
HcLSThreshold : uint32;
|
||||
HcRhDescriptorA : uint32;
|
||||
HcRhDescriptorB : uint32;
|
||||
HcRhStatus : uint32;
|
||||
end;
|
||||
|
||||
function load : boolean;
|
||||
|
||||
implementation
|
||||
|
||||
function load : boolean;
|
||||
var
|
||||
devices : TDeviceArray;
|
||||
count : uint32;
|
||||
i : uint32;
|
||||
block : uint32;
|
||||
MMR : POHCI_MMR;
|
||||
|
||||
begin
|
||||
tracer.push_trace('OHCI.load');
|
||||
devices:= PCI.getDeviceInfo($0C, $03, $10, count);
|
||||
console.output('USB-OHCI Driver', 'Found ');
|
||||
console.writeint(count);
|
||||
console.writestringln(' USB Controller(s).');
|
||||
if count > 0 then begin
|
||||
for i:=0 to count-1 do begin
|
||||
console.output('USB-OHCI Driver', 'Controller[');
|
||||
console.writeint(i);
|
||||
console.writestring(']: ');
|
||||
console.writehex(devices[i].device_id);
|
||||
console.writestring(' ');
|
||||
console.writehex(devices[i].vendor_id);
|
||||
console.writestring(' ');
|
||||
console.writehexln(devices[i].prog_if);
|
||||
block:= devices[i].address0 SHR 22;
|
||||
force_alloc_block(block, 0);
|
||||
map_page(block, block);
|
||||
MMR:= POHCI_MMR(devices[i].address0);
|
||||
end;
|
||||
end;
|
||||
load:= true;
|
||||
end;
|
||||
|
||||
end.
|
||||
+16
-16
@@ -25,7 +25,7 @@ interface
|
||||
uses
|
||||
tracer,
|
||||
util,
|
||||
console,
|
||||
syslog,
|
||||
drivertypes,
|
||||
lmemorymanager,
|
||||
vmemorymanager,
|
||||
@@ -100,14 +100,14 @@ var
|
||||
|
||||
begin
|
||||
push_trace('PCI.load');
|
||||
console.outputln('PCI', 'Scanning Bus: 0');
|
||||
syslog.logln('PCI', 'Scanning Bus: 0');
|
||||
scanBus(0);
|
||||
//while unscanned busses scan busses
|
||||
current_bus := 1;
|
||||
while true do begin
|
||||
if current_bus < bus_count then begin
|
||||
console.output('PCI', 'Scanning Bus: ');
|
||||
console.writeintln(bus_count);
|
||||
syslog.log('PCI', 'Scanning Bus: ');
|
||||
syslog.writeintln(bus_count);
|
||||
scanBus(current_bus);
|
||||
current_bus := current_bus + 1;
|
||||
end else break;
|
||||
@@ -122,7 +122,7 @@ var
|
||||
|
||||
begin
|
||||
push_trace('PCI.init');
|
||||
console.outputln('PCI','INIT BEGIN.');
|
||||
syslog.logln('PCI','INIT BEGIN.');
|
||||
DevID.Bus:= biUnknown;
|
||||
DevID.id0:= 0;
|
||||
DevID.id1:= 0;
|
||||
@@ -130,7 +130,7 @@ begin
|
||||
DevID.id3:= 0;
|
||||
DevID.ex:= nil;
|
||||
drivermanagement.register_driver_ex('PCI Driver', @DevID, @load, true);
|
||||
console.outputln('PCI', 'INIT END.');
|
||||
syslog.logln('PCI', 'INIT END.');
|
||||
pop_trace;
|
||||
end;
|
||||
|
||||
@@ -388,16 +388,16 @@ begin
|
||||
DevID^.id4:= device.vendor_id;
|
||||
DevID^.ex:= nil;
|
||||
|
||||
console.output('PCI', 'Found Device: ');
|
||||
console.writehex(device.header_type);
|
||||
console.writestring(' ');
|
||||
console.writehex(device.device_id);
|
||||
console.writestring(' ');
|
||||
console.writehex(device.class_code);
|
||||
console.writestring(' ');
|
||||
console.writehex(device.subclass_class);
|
||||
console.writestring(' ');
|
||||
console.writehexln(device.prog_if);
|
||||
syslog.log('PCI', 'Found Device: ');
|
||||
syslog.writehex(device.header_type);
|
||||
syslog.writestring(' ');
|
||||
syslog.writehex(device.device_id);
|
||||
syslog.writestring(' ');
|
||||
syslog.writehex(device.class_code);
|
||||
syslog.writestring(' ');
|
||||
syslog.writehex(device.subclass_class);
|
||||
syslog.writestring(' ');
|
||||
syslog.writehexln(device.prog_if);
|
||||
|
||||
devices[device_count] := device;
|
||||
device_count := device_count + 1;
|
||||
|
||||
@@ -1,65 +0,0 @@
|
||||
// Copyright 2021 Kieron Morris
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
{
|
||||
Driver->Bus->UHCI - Universal Host Controller Interface Driver.
|
||||
|
||||
@author(Kieron Morris <[email protected]>)
|
||||
}
|
||||
unit UHCI;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
tracer,
|
||||
Console,
|
||||
PCI,
|
||||
drivertypes,
|
||||
pmemorymanager,
|
||||
vmemorymanager,
|
||||
util,
|
||||
drivermanagement;
|
||||
|
||||
function load : boolean;
|
||||
|
||||
implementation
|
||||
|
||||
function load : boolean;
|
||||
var
|
||||
devices : TDeviceArray;
|
||||
count : uint32;
|
||||
i : uint32;
|
||||
|
||||
begin
|
||||
tracer.push_trace('UHCI.load');
|
||||
devices:= PCI.getDeviceInfo($0C, $03, $00, count);
|
||||
console.output('USB-UHCI Driver','Found ');
|
||||
console.writeint(count);
|
||||
console.writestringln(' USB Controller(s).');
|
||||
if count > 0 then begin
|
||||
for i:=0 to count-1 do begin
|
||||
console.output('USB-UHCI Driver','Controller[');
|
||||
console.writeint(i);
|
||||
console.writestring(']: ');
|
||||
console.writehex(devices[i].device_id);
|
||||
console.writestring(' ');
|
||||
console.writehex(devices[i].vendor_id);
|
||||
console.writestring(' ');
|
||||
console.writehexln(devices[i].prog_if);
|
||||
end;
|
||||
end;
|
||||
load:= true;
|
||||
end;
|
||||
|
||||
end.
|
||||
@@ -23,13 +23,14 @@ interface
|
||||
|
||||
uses
|
||||
tracer,
|
||||
Console,
|
||||
syslog,
|
||||
PCI,
|
||||
drivertypes,
|
||||
pmemorymanager,
|
||||
vmemorymanager,
|
||||
util,
|
||||
drivermanagement;
|
||||
drivermanagement,
|
||||
usbtypes;
|
||||
|
||||
function load : boolean;
|
||||
|
||||
@@ -44,19 +45,19 @@ var
|
||||
begin
|
||||
tracer.push_trace('EHCI.load');
|
||||
devices:= PCI.getDeviceInfo($0C, $03, $20, count);
|
||||
console.output('USB-EHCI Driver', 'Found ');
|
||||
console.writeint(count);
|
||||
console.writestringln(' USB Controller(s).');
|
||||
syslog.log('USB-EHCI Driver', 'Found ');
|
||||
syslog.writeint(count);
|
||||
syslog.writestringln(' USB Controller(s).');
|
||||
if count > 0 then begin
|
||||
for i:=0 to count-1 do begin
|
||||
console.output('USB-EHCI Driver', 'Controller[');
|
||||
console.writeint(i);
|
||||
console.writestring(']: ');
|
||||
console.writehex(devices[i].device_id);
|
||||
console.writestring(' ');
|
||||
console.writehex(devices[i].vendor_id);
|
||||
console.writestring(' ');
|
||||
console.writehexln(devices[i].prog_if);
|
||||
syslog.log('USB-EHCI Driver', 'Controller[');
|
||||
syslog.writeint(i);
|
||||
syslog.writestring(']: ');
|
||||
syslog.writehex(devices[i].device_id);
|
||||
syslog.writestring(' ');
|
||||
syslog.writehex(devices[i].vendor_id);
|
||||
syslog.writestring(' ');
|
||||
syslog.writehexln(devices[i].prog_if);
|
||||
end;
|
||||
end;
|
||||
load:= true;
|
||||
File diff suppressed because it is too large.
Load diff
Loaded 20 of 126 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user