usb on mipsel
This commit is contained in:
parent
82b1f15b6b
commit
6592e23a4e
3 changed files with 50 additions and 11 deletions
|
@ -27,6 +27,8 @@
|
||||||
#include <grub/i386/io.h>
|
#include <grub/i386/io.h>
|
||||||
#include <grub/time.h>
|
#include <grub/time.h>
|
||||||
|
|
||||||
|
#define vtop(x) ((x) & 0x7fffffff)
|
||||||
|
|
||||||
struct grub_ohci_hcca
|
struct grub_ohci_hcca
|
||||||
{
|
{
|
||||||
/* Pointers to Interrupt Endpoint Descriptors. Not used by
|
/* Pointers to Interrupt Endpoint Descriptors. Not used by
|
||||||
|
@ -178,7 +180,7 @@ grub_ohci_pci_iter (int bus, int device, int func,
|
||||||
grub_ohci_writereg32 (o, GRUB_OHCI_REG_FRAME_INTERVAL, frame_interval);
|
grub_ohci_writereg32 (o, GRUB_OHCI_REG_FRAME_INTERVAL, frame_interval);
|
||||||
|
|
||||||
/* Setup the HCCA. */
|
/* Setup the HCCA. */
|
||||||
grub_ohci_writereg32 (o, GRUB_OHCI_REG_HCCA, (grub_uint32_t) o->hcca);
|
grub_ohci_writereg32 (o, GRUB_OHCI_REG_HCCA, vtop ((grub_uint32_t) o->hcca));
|
||||||
grub_dprintf ("ohci", "OHCI HCCA\n");
|
grub_dprintf ("ohci", "OHCI HCCA\n");
|
||||||
|
|
||||||
/* Enable the OHCI. */
|
/* Enable the OHCI. */
|
||||||
|
@ -264,10 +266,10 @@ grub_ohci_transaction (grub_ohci_td_t td,
|
||||||
buffer = (grub_uint32_t) data;
|
buffer = (grub_uint32_t) data;
|
||||||
buffer_end = buffer + size - 1;
|
buffer_end = buffer + size - 1;
|
||||||
|
|
||||||
td->token = grub_cpu_to_le32 (token);
|
td->token = grub_cpu_to_le32 (vtop (token));
|
||||||
td->buffer = grub_cpu_to_le32 (buffer);
|
td->buffer = grub_cpu_to_le32 (vtop (buffer));
|
||||||
td->next_td = 0;
|
td->next_td = 0;
|
||||||
td->buffer_end = grub_cpu_to_le32 (buffer_end);
|
td->buffer_end = grub_cpu_to_le32 (vtop (buffer_end));
|
||||||
}
|
}
|
||||||
|
|
||||||
static grub_usb_err_t
|
static grub_usb_err_t
|
||||||
|
@ -307,7 +309,7 @@ grub_ohci_transfer (grub_usb_controller_t dev,
|
||||||
grub_ohci_transaction (&td_list[i], tr->pid, tr->toggle,
|
grub_ohci_transaction (&td_list[i], tr->pid, tr->toggle,
|
||||||
tr->size, tr->data);
|
tr->size, tr->data);
|
||||||
|
|
||||||
td_list[i].next_td = grub_cpu_to_le32 (&td_list[i + 1]);
|
td_list[i].next_td = grub_cpu_to_le32 (vtop (&td_list[i + 1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Setup the Endpoint Descriptor. */
|
/* Setup the Endpoint Descriptor. */
|
||||||
|
@ -324,9 +326,9 @@ grub_ohci_transfer (grub_usb_controller_t dev,
|
||||||
/* Set the maximum packet size. */
|
/* Set the maximum packet size. */
|
||||||
target |= transfer->max << 16;
|
target |= transfer->max << 16;
|
||||||
|
|
||||||
td_head = (grub_uint32_t) td_list;
|
td_head = vtop ((grub_uint32_t) td_list);
|
||||||
|
|
||||||
td_tail = (grub_uint32_t) &td_list[transfer->transcnt];
|
td_tail = vtop ((grub_uint32_t) &td_list[transfer->transcnt]);
|
||||||
|
|
||||||
ed->target = grub_cpu_to_le32 (target);
|
ed->target = grub_cpu_to_le32 (target);
|
||||||
ed->td_head = grub_cpu_to_le32 (td_head);
|
ed->td_head = grub_cpu_to_le32 (td_head);
|
||||||
|
@ -353,7 +355,8 @@ grub_ohci_transfer (grub_usb_controller_t dev,
|
||||||
status &= ~(1 << 2);
|
status &= ~(1 << 2);
|
||||||
grub_ohci_writereg32 (o, GRUB_OHCI_REG_CMDSTATUS, status);
|
grub_ohci_writereg32 (o, GRUB_OHCI_REG_CMDSTATUS, status);
|
||||||
|
|
||||||
grub_ohci_writereg32 (o, GRUB_OHCI_REG_BULKHEAD, (grub_uint32_t) ed);
|
grub_ohci_writereg32 (o, GRUB_OHCI_REG_BULKHEAD,
|
||||||
|
vtop ((grub_uint32_t) ed));
|
||||||
|
|
||||||
/* Enable the Bulk list. */
|
/* Enable the Bulk list. */
|
||||||
control |= 1 << 5;
|
control |= 1 << 5;
|
||||||
|
@ -381,9 +384,9 @@ grub_ohci_transfer (grub_usb_controller_t dev,
|
||||||
grub_ohci_writereg32 (o, GRUB_OHCI_REG_CMDSTATUS, status);
|
grub_ohci_writereg32 (o, GRUB_OHCI_REG_CMDSTATUS, status);
|
||||||
|
|
||||||
grub_ohci_writereg32 (o, GRUB_OHCI_REG_CONTROLHEAD,
|
grub_ohci_writereg32 (o, GRUB_OHCI_REG_CONTROLHEAD,
|
||||||
(grub_uint32_t) ed);
|
vtop ((grub_uint32_t) ed));
|
||||||
grub_ohci_writereg32 (o, GRUB_OHCI_REG_CONTROLHEAD+1,
|
grub_ohci_writereg32 (o, GRUB_OHCI_REG_CONTROLHEAD+1,
|
||||||
(grub_uint32_t) ed);
|
vtop ((grub_uint32_t) ed));
|
||||||
|
|
||||||
/* Enable the Control list. */
|
/* Enable the Control list. */
|
||||||
control |= 1 << 4;
|
control |= 1 << 4;
|
||||||
|
|
|
@ -148,6 +148,43 @@ pci_mod_SOURCES = bus/pci.c
|
||||||
pci_mod_CFLAGS = $(COMMON_CFLAGS)
|
pci_mod_CFLAGS = $(COMMON_CFLAGS)
|
||||||
pci_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
pci_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
||||||
|
|
||||||
|
# For lspci.mod
|
||||||
|
pkglib_MODULES += lspci.mod
|
||||||
|
lspci_mod_SOURCES = commands/lspci.c
|
||||||
|
lspci_mod_CFLAGS = $(COMMON_CFLAGS)
|
||||||
|
lspci_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
||||||
|
|
||||||
|
# For ohci.mod
|
||||||
|
pkglib_MODULES += ohci.mod
|
||||||
|
ohci_mod_SOURCES = bus/usb/ohci.c
|
||||||
|
ohci_mod_CFLAGS = $(COMMON_CFLAGS)
|
||||||
|
ohci_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
||||||
|
|
||||||
|
# For usb.mod
|
||||||
|
pkglib_MODULES += usb.mod
|
||||||
|
usb_mod_SOURCES = bus/usb/usb.c bus/usb/usbtrans.c bus/usb/usbhub.c
|
||||||
|
usb_mod_CFLAGS = $(COMMON_CFLAGS)
|
||||||
|
usb_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
||||||
|
|
||||||
|
# For usbtest.mod
|
||||||
|
pkglib_MODULES += usbtest.mod
|
||||||
|
usbtest_mod_SOURCES = commands/usbtest.c
|
||||||
|
usbtest_mod_CFLAGS = $(COMMON_CFLAGS)
|
||||||
|
usbtest_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
||||||
|
|
||||||
|
# For usbms.mod
|
||||||
|
pkglib_MODULES += usbms.mod
|
||||||
|
usbms_mod_SOURCES = disk/usbms.c
|
||||||
|
usbms_mod_CFLAGS = $(COMMON_CFLAGS)
|
||||||
|
usbms_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
||||||
|
|
||||||
|
# For usb_keyboard.mod
|
||||||
|
pkglib_MODULES += usb_keyboard.mod
|
||||||
|
usb_keyboard_mod_SOURCES = term/usb_keyboard.c
|
||||||
|
usb_keyboard_mod_CFLAGS = $(COMMON_CFLAGS)
|
||||||
|
usb_keyboard_mod_LDFLAGS = $(COMMON_LDFLAGS)
|
||||||
|
|
||||||
|
|
||||||
# For relocator.mod.
|
# For relocator.mod.
|
||||||
pkglib_MODULES += relocator.mod
|
pkglib_MODULES += relocator.mod
|
||||||
relocator_mod_SOURCES = lib/$(target_cpu)/relocator.c lib/$(target_cpu)/relocator_asm.S
|
relocator_mod_SOURCES = lib/$(target_cpu)/relocator.c lib/$(target_cpu)/relocator_asm.S
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
|
|
||||||
#include <grub/term.h>
|
#include <grub/term.h>
|
||||||
#include <grub/machine/machine.h>
|
#include <grub/machine/machine.h>
|
||||||
#include <grub/machine/console.h>
|
|
||||||
#include <grub/time.h>
|
#include <grub/time.h>
|
||||||
#include <grub/cpu/io.h>
|
#include <grub/cpu/io.h>
|
||||||
#include <grub/misc.h>
|
#include <grub/misc.h>
|
||||||
|
|
Loading…
Reference in a new issue