move to 1.6-beta
This commit is contained in:
parent
45c7370e13
commit
509ad7f110
81 changed files with 886 additions and 439 deletions
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: acpi_x86.c,v 1.23 2024/08/04 11:05:18 kettenis Exp $ */
|
||||
/* $OpenBSD: acpi_x86.c,v 1.25 2024/08/08 07:02:38 kettenis Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2005 Thorsten Lockert <tholo@sigmasoft.com>
|
||||
* Copyright (c) 2005 Jordan Hargrave <jordan@openbsd.org>
|
||||
|
@ -87,6 +87,7 @@ sleep_setstate(void *v)
|
|||
int
|
||||
gosleep(void *v)
|
||||
{
|
||||
extern int cpu_wakeups;
|
||||
struct acpi_softc *sc = v;
|
||||
int ret;
|
||||
|
||||
|
@ -107,8 +108,20 @@ gosleep(void *v)
|
|||
if (sc->sc_pmc_suspend)
|
||||
sc->sc_pmc_suspend(sc->sc_pmc_cookie);
|
||||
|
||||
ret = acpi_sleep_cpu(sc, sc->sc_state);
|
||||
acpi_resume_cpu(sc, sc->sc_state);
|
||||
cpu_wakeups = 0;
|
||||
sc->sc_wakeup = 0;
|
||||
sc->sc_wakeups = 0;
|
||||
while (!sc->sc_wakeup) {
|
||||
ret = acpi_sleep_cpu(sc, sc->sc_state);
|
||||
acpi_resume_cpu(sc, sc->sc_state);
|
||||
sc->sc_wakeups++;
|
||||
|
||||
if (sc->sc_ec && sc->sc_wakegpe == sc->sc_ec->sc_gpe) {
|
||||
sc->sc_wakeup = 0;
|
||||
acpiec_gpehandler(sc, sc->sc_wakegpe, sc->sc_ec);
|
||||
} else
|
||||
sc->sc_wakeup = 1;
|
||||
}
|
||||
|
||||
if (sc->sc_pmc_resume)
|
||||
sc->sc_pmc_resume(sc->sc_pmc_cookie);
|
||||
|
@ -151,10 +164,15 @@ checklids(struct acpi_softc *sc)
|
|||
int
|
||||
suspend_finish(void *v)
|
||||
{
|
||||
extern int cpu_wakeups;
|
||||
struct acpi_softc *sc = v;
|
||||
|
||||
printf("wakeups: %d %d\n", cpu_wakeups, sc->sc_wakeups);
|
||||
printf("wakeup event: ");
|
||||
switch (sc->sc_wakegpe) {
|
||||
case 0:
|
||||
printf("unknown\n");
|
||||
break;
|
||||
case -1:
|
||||
printf("PWRBTN\n");
|
||||
break;
|
||||
|
@ -165,6 +183,7 @@ suspend_finish(void *v)
|
|||
printf("GPE 0x%x\n", sc->sc_wakegpe);
|
||||
break;
|
||||
}
|
||||
sc->sc_wakegpe = 0;
|
||||
|
||||
acpi_record_event(sc, APM_NORMAL_RESUME);
|
||||
acpi_indicator(sc, ACPI_SST_WORKING);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: acpibtn.c,v 1.52 2024/05/13 19:56:37 kettenis Exp $ */
|
||||
/* $OpenBSD: acpibtn.c,v 1.53 2024/08/06 17:38:56 kettenis Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2005 Marco Peereboom <marco@openbsd.org>
|
||||
*
|
||||
|
@ -213,7 +213,7 @@ acpibtn_attach(struct device *parent, struct device *self, void *aux)
|
|||
|
||||
printf("\n");
|
||||
aml_register_notify(sc->sc_devnode, aa->aaa_dev, acpibtn_notify,
|
||||
sc, ACPIDEV_NOPOLL);
|
||||
sc, ACPIDEV_NOPOLL | ACPIDEV_WAKEUP);
|
||||
}
|
||||
|
||||
int
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: acpidev.h,v 1.44 2018/06/29 17:39:18 kettenis Exp $ */
|
||||
/* $OpenBSD: acpidev.h,v 1.45 2024/08/06 17:38:56 kettenis Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2005 Marco Peereboom <marco@openbsd.org>
|
||||
* Copyright (c) 2005 Thorsten Lockert <tholo@sigmasoft.com>
|
||||
|
@ -26,8 +26,9 @@
|
|||
|
||||
#define DEVNAME(s) ((s)->sc_dev.dv_xname)
|
||||
|
||||
#define ACPIDEV_NOPOLL 0
|
||||
#define ACPIDEV_POLL 1
|
||||
#define ACPIDEV_NOPOLL 0x0000
|
||||
#define ACPIDEV_POLL 0x0001
|
||||
#define ACPIDEV_WAKEUP 0x0002
|
||||
|
||||
/*
|
||||
* _BIF (Battery InFormation)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: acpireg.h,v 1.60 2023/09/12 08:32:58 jmatthew Exp $ */
|
||||
/* $OpenBSD: acpireg.h,v 1.61 2024/08/08 07:01:22 kettenis Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2005 Thorsten Lockert <tholo@sigmasoft.com>
|
||||
* Copyright (c) 2005 Marco Peereboom <marco@openbsd.org>
|
||||
|
@ -476,6 +476,30 @@ struct acpi_tpm2 {
|
|||
uint32_t start_method;
|
||||
} __packed;
|
||||
|
||||
/*
|
||||
* Intel ACPI Low Power S0 Idle
|
||||
*/
|
||||
struct acpi_lpit {
|
||||
struct acpi_table_header hdr;
|
||||
#define LPIT_SIG "LPIT"
|
||||
/* struct acpi_lpit_entry[]; */
|
||||
} __packed;
|
||||
|
||||
struct acpi_lpit_entry {
|
||||
uint32_t type;
|
||||
uint32_t length;
|
||||
uint16_t uid;
|
||||
uint16_t reserved;
|
||||
uint32_t flags;
|
||||
#define LPIT_DISABLED (1L << 0)
|
||||
#define LPIT_COUNTER_NOT_AVAILABLE (1L << 1)
|
||||
struct acpi_gas entry_trigger;
|
||||
uint32_t residency;
|
||||
uint32_t latency;
|
||||
struct acpi_gas residency_counter;
|
||||
uint64_t residency_frequency;
|
||||
};
|
||||
|
||||
/*
|
||||
* Intel ACPI DMA Remapping Entries
|
||||
*/
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: acpivar.h,v 1.132 2024/08/04 11:05:18 kettenis Exp $ */
|
||||
/* $OpenBSD: acpivar.h,v 1.134 2024/08/08 07:02:38 kettenis Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2005 Thorsten Lockert <tholo@sigmasoft.com>
|
||||
*
|
||||
|
@ -264,6 +264,8 @@ struct acpi_softc {
|
|||
struct aml_node *sc_sst;
|
||||
struct aml_node *sc_wak;
|
||||
int sc_state;
|
||||
int sc_wakeup;
|
||||
int sc_wakeups;
|
||||
time_t sc_resume_time;
|
||||
struct acpiec_softc *sc_ec; /* XXX assume single EC */
|
||||
|
||||
|
@ -341,6 +343,7 @@ int acpi_set_gpehandler(struct acpi_softc *, int,
|
|||
|
||||
void acpiec_read(struct acpiec_softc *, uint8_t, int, uint8_t *);
|
||||
void acpiec_write(struct acpiec_softc *, uint8_t, int, uint8_t *);
|
||||
int acpiec_gpehandler(struct acpi_softc *, int, void *);
|
||||
|
||||
#if NACPIPWRRES > 0
|
||||
int acpipwrres_ref_incr(struct acpipwrres_softc *, struct aml_node *);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: dsdt.c,v 1.269 2024/06/26 01:40:49 jsg Exp $ */
|
||||
/* $OpenBSD: dsdt.c,v 1.270 2024/08/06 17:38:56 kettenis Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2005 Jordan Hargrave <jordan@openbsd.org>
|
||||
*
|
||||
|
@ -28,6 +28,7 @@
|
|||
#include <machine/db_machdep.h>
|
||||
#endif
|
||||
|
||||
#include <dev/acpi/acpidev.h>
|
||||
#include <dev/acpi/acpireg.h>
|
||||
#include <dev/acpi/acpivar.h>
|
||||
#include <dev/acpi/amltypes.h>
|
||||
|
@ -364,7 +365,7 @@ struct aml_notify_data {
|
|||
char pnpid[20];
|
||||
void *cbarg;
|
||||
int (*cbproc)(struct aml_node *, int, void *);
|
||||
int poll;
|
||||
int flags;
|
||||
|
||||
SLIST_ENTRY(aml_notify_data) link;
|
||||
};
|
||||
|
@ -536,7 +537,7 @@ aml_notify_task(void *node, int notify_value)
|
|||
|
||||
void
|
||||
aml_register_notify(struct aml_node *node, const char *pnpid,
|
||||
int (*proc)(struct aml_node *, int, void *), void *arg, int poll)
|
||||
int (*proc)(struct aml_node *, int, void *), void *arg, int flags)
|
||||
{
|
||||
struct aml_notify_data *pdata;
|
||||
extern int acpi_poll_enabled;
|
||||
|
@ -548,23 +549,30 @@ aml_register_notify(struct aml_node *node, const char *pnpid,
|
|||
pdata->node = node;
|
||||
pdata->cbarg = arg;
|
||||
pdata->cbproc = proc;
|
||||
pdata->poll = poll;
|
||||
pdata->flags = flags;
|
||||
|
||||
if (pnpid)
|
||||
strlcpy(pdata->pnpid, pnpid, sizeof(pdata->pnpid));
|
||||
|
||||
SLIST_INSERT_HEAD(&aml_notify_list, pdata, link);
|
||||
|
||||
if (poll && !acpi_poll_enabled)
|
||||
if ((flags & ACPIDEV_POLL) && !acpi_poll_enabled)
|
||||
timeout_add_sec(&acpi_softc->sc_dev_timeout, 10);
|
||||
}
|
||||
|
||||
void
|
||||
aml_notify(struct aml_node *node, int notify_value)
|
||||
{
|
||||
struct aml_notify_data *pdata;
|
||||
|
||||
if (node == NULL)
|
||||
return;
|
||||
|
||||
SLIST_FOREACH(pdata, &aml_notify_list, link) {
|
||||
if (pdata->node == node && (pdata->flags & ACPIDEV_WAKEUP))
|
||||
acpi_softc->sc_wakeup = 1;
|
||||
}
|
||||
|
||||
dnprintf(10,"queue notify: %s %x\n", aml_nodename(node), notify_value);
|
||||
acpi_addtask(acpi_softc, aml_notify_task, node, notify_value);
|
||||
}
|
||||
|
@ -588,7 +596,7 @@ acpi_poll_notify_task(void *arg0, int arg1)
|
|||
struct aml_notify_data *pdata = NULL;
|
||||
|
||||
SLIST_FOREACH(pdata, &aml_notify_list, link)
|
||||
if (pdata->cbproc && pdata->poll)
|
||||
if (pdata->cbproc && (pdata->flags & ACPIDEV_POLL))
|
||||
pdata->cbproc(pdata->node, 0, pdata->cbarg);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: intelpmc.c,v 1.1 2024/08/04 11:05:18 kettenis Exp $ */
|
||||
/* $OpenBSD: intelpmc.c,v 1.2 2024/08/08 07:01:22 kettenis Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2024 Mark Kettenis <kettenis@openbsd.org>
|
||||
*
|
||||
|
@ -46,6 +46,9 @@ struct intelpmc_softc {
|
|||
struct acpi_softc *sc_acpi;
|
||||
struct aml_node *sc_node;
|
||||
|
||||
struct acpi_gas sc_counter[4];
|
||||
int sc_num_counters;
|
||||
|
||||
#ifdef INTELPMC_DEBUG
|
||||
uint64_t sc_c3[2];
|
||||
uint64_t sc_c6[2];
|
||||
|
@ -57,6 +60,7 @@ struct intelpmc_softc {
|
|||
uint64_t sc_pc8[2];
|
||||
uint64_t sc_pc9[2];
|
||||
uint64_t sc_pc10[2];
|
||||
uint64_t sc_lpit[4][2];
|
||||
#endif
|
||||
};
|
||||
|
||||
|
@ -78,6 +82,7 @@ const char *intelpmc_hids[] = {
|
|||
NULL
|
||||
};
|
||||
|
||||
void intelpmc_parse_lpit(struct intelpmc_softc *, struct acpi_lpit *);
|
||||
void intelpmc_suspend(void *);
|
||||
void intelpmc_resume(void *);
|
||||
|
||||
|
@ -95,12 +100,25 @@ intelpmc_attach(struct device *parent, struct device *self, void *aux)
|
|||
{
|
||||
struct intelpmc_softc *sc = (struct intelpmc_softc *)self;
|
||||
struct acpi_attach_args *aaa = aux;
|
||||
struct acpi_q *entry;
|
||||
struct acpi_lpit *lpit = NULL;
|
||||
|
||||
sc->sc_acpi = (struct acpi_softc *)parent;
|
||||
sc->sc_node = aaa->aaa_node;
|
||||
|
||||
printf(": %s\n", aaa->aaa_node->name);
|
||||
|
||||
SIMPLEQ_FOREACH(entry, &sc->sc_acpi->sc_tables, q_next) {
|
||||
if (memcmp(entry->q_table, LPIT_SIG,
|
||||
sizeof(LPIT_SIG) - 1) == 0) {
|
||||
lpit = entry->q_table;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (lpit)
|
||||
intelpmc_parse_lpit(sc, lpit);
|
||||
|
||||
sc->sc_acpi->sc_pmc_suspend = intelpmc_suspend;
|
||||
sc->sc_acpi->sc_pmc_resume = intelpmc_resume;
|
||||
sc->sc_acpi->sc_pmc_cookie = sc;
|
||||
|
@ -111,6 +129,7 @@ intelpmc_activate(struct device *self, int act)
|
|||
{
|
||||
#ifdef INTELPMC_DEBUG
|
||||
struct intelpmc_softc *sc = (struct intelpmc_softc *)self;
|
||||
int i;
|
||||
|
||||
switch (act) {
|
||||
case DVACT_RESUME:
|
||||
|
@ -124,6 +143,10 @@ intelpmc_activate(struct device *self, int act)
|
|||
printf("PC8: %lld -> %lld\n", sc->sc_pc8[0], sc->sc_pc8[1]);
|
||||
printf("PC9: %lld -> %lld\n", sc->sc_pc9[0], sc->sc_pc9[1]);
|
||||
printf("PC10: %lld -> %lld\n", sc->sc_pc10[0], sc->sc_pc10[1]);
|
||||
for (i = 0; i < sc->sc_num_counters; i++) {
|
||||
printf("LPIT%d: %lld -> %lld\n", i,
|
||||
sc->sc_lpit[i][0], sc->sc_lpit[i][1]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
@ -131,6 +154,63 @@ intelpmc_activate(struct device *self, int act)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
intelpmc_parse_lpit(struct intelpmc_softc *sc, struct acpi_lpit *lpit)
|
||||
{
|
||||
caddr_t addr = (caddr_t)(lpit + 1);
|
||||
|
||||
while (addr < (caddr_t)lpit + lpit->hdr.length) {
|
||||
struct acpi_lpit_entry *entry = (struct acpi_lpit_entry *)addr;
|
||||
uint32_t length = entry->length;
|
||||
|
||||
if (length < 8)
|
||||
return;
|
||||
|
||||
if (addr + length > (caddr_t)lpit + lpit->hdr.length)
|
||||
return;
|
||||
|
||||
switch (entry->type) {
|
||||
case 0:
|
||||
if (length != sizeof(struct acpi_lpit_entry))
|
||||
return;
|
||||
|
||||
if (entry->flags & LPIT_DISABLED)
|
||||
break;
|
||||
|
||||
#ifdef INTELPMC_DEBUG
|
||||
printf("state %d: 0x%02x:%d:%d:0x%02x:0x%016llx\n",
|
||||
entry->uid, entry->entry_trigger.address_space_id,
|
||||
entry->entry_trigger.register_bit_width,
|
||||
entry->entry_trigger.register_bit_offset,
|
||||
entry->entry_trigger.access_size,
|
||||
entry->entry_trigger.address);
|
||||
#endif
|
||||
|
||||
if (entry->flags & LPIT_COUNTER_NOT_AVAILABLE)
|
||||
break;
|
||||
|
||||
#ifdef INTELPMC_DEBUG
|
||||
printf("counter: 0x%02x:%d:%d:0x%02x:0x%016llx\n",
|
||||
entry->residency_counter.address_space_id,
|
||||
entry->residency_counter.register_bit_width,
|
||||
entry->residency_counter.register_bit_offset,
|
||||
entry->residency_counter.access_size,
|
||||
entry->residency_counter.address);
|
||||
printf("frequency: %lld\n",
|
||||
entry->residency_frequency);
|
||||
#endif
|
||||
|
||||
if (sc->sc_num_counters >= nitems(sc->sc_counter))
|
||||
break;
|
||||
memcpy(&sc->sc_counter[sc->sc_num_counters++],
|
||||
&entry->residency_counter, sizeof(struct acpi_gas));
|
||||
break;
|
||||
}
|
||||
|
||||
addr += length;
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
intelpmc_dsm(struct acpi_softc *sc, struct aml_node *node, int func)
|
||||
{
|
||||
|
@ -173,6 +253,9 @@ void
|
|||
intelpmc_suspend(void *cookie)
|
||||
{
|
||||
struct intelpmc_softc *sc = cookie;
|
||||
#ifdef INTELPMC_DEBUG
|
||||
int i;
|
||||
#endif
|
||||
|
||||
if (sc->sc_acpi->sc_state != ACPI_STATE_S0)
|
||||
return;
|
||||
|
@ -188,6 +271,18 @@ intelpmc_suspend(void *cookie)
|
|||
rdmsr_safe(MSR_PKG_C8_RESIDENCY, &sc->sc_pc8[0]);
|
||||
rdmsr_safe(MSR_PKG_C9_RESIDENCY, &sc->sc_pc9[0]);
|
||||
rdmsr_safe(MSR_PKG_C10_RESIDENCY, &sc->sc_pc10[0]);
|
||||
for (i = 0; i < sc->sc_num_counters; i++) {
|
||||
if (sc->sc_counter[i].address_space_id == GAS_FUNCTIONAL_FIXED)
|
||||
rdmsr_safe(sc->sc_counter[i].address, &sc->sc_lpit[i][0]);
|
||||
else {
|
||||
acpi_gasio(sc->sc_acpi, ACPI_IOREAD,
|
||||
sc->sc_counter[i].address_space_id,
|
||||
sc->sc_counter[i].address,
|
||||
(1 << sc->sc_counter[i].access_size),
|
||||
sc->sc_counter[i].register_bit_width / 8,
|
||||
&sc->sc_lpit[i][0]);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
intelpmc_dsm(sc->sc_acpi, sc->sc_node, ACPI_LPS0_SCREEN_OFF);
|
||||
|
@ -198,6 +293,9 @@ void
|
|||
intelpmc_resume(void *cookie)
|
||||
{
|
||||
struct intelpmc_softc *sc = cookie;
|
||||
#ifdef INTELPMC_DEBUG
|
||||
int i;
|
||||
#endif
|
||||
|
||||
if (sc->sc_acpi->sc_state != ACPI_STATE_S0)
|
||||
return;
|
||||
|
@ -216,5 +314,17 @@ intelpmc_resume(void *cookie)
|
|||
rdmsr_safe(MSR_PKG_C8_RESIDENCY, &sc->sc_pc8[1]);
|
||||
rdmsr_safe(MSR_PKG_C9_RESIDENCY, &sc->sc_pc9[1]);
|
||||
rdmsr_safe(MSR_PKG_C10_RESIDENCY, &sc->sc_pc10[1]);
|
||||
for (i = 0; i < sc->sc_num_counters; i++) {
|
||||
if (sc->sc_counter[i].address_space_id == GAS_FUNCTIONAL_FIXED)
|
||||
rdmsr_safe(sc->sc_counter[i].address, &sc->sc_lpit[i][1]);
|
||||
else {
|
||||
acpi_gasio(sc->sc_acpi, ACPI_IOREAD,
|
||||
sc->sc_counter[i].address_space_id,
|
||||
sc->sc_counter[i].address,
|
||||
(1 << sc->sc_counter[i].access_size),
|
||||
sc->sc_counter[i].register_bit_width / 8,
|
||||
&sc->sc_lpit[i][1]);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: if_igc.c,v 1.25 2024/05/24 06:02:53 jsg Exp $ */
|
||||
/* $OpenBSD: if_igc.c,v 1.26 2024/08/08 14:58:49 jan Exp $ */
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*
|
||||
|
@ -881,7 +881,7 @@ igc_init(void *arg)
|
|||
}
|
||||
igc_initialize_transmit_unit(sc);
|
||||
|
||||
sc->rx_mbuf_sz = MCLBYTES + ETHER_ALIGN;
|
||||
sc->rx_mbuf_sz = MCLBYTES;
|
||||
/* Prepare receive descriptors and buffers. */
|
||||
if (igc_setup_receive_structures(sc)) {
|
||||
printf("%s: Could not setup receive structures\n",
|
||||
|
@ -2159,7 +2159,7 @@ igc_allocate_receive_buffers(struct igc_rxring *rxr)
|
|||
rxbuf = rxr->rx_buffers;
|
||||
for (i = 0; i < sc->num_rx_desc; i++, rxbuf++) {
|
||||
error = bus_dmamap_create(rxr->rxdma.dma_tag,
|
||||
MAX_JUMBO_FRAME_SIZE, 1, MAX_JUMBO_FRAME_SIZE, 0,
|
||||
MAX_JUMBO_FRAME_SIZE, IGC_MAX_SCATTER, MCLBYTES, 0,
|
||||
BUS_DMA_NOWAIT, &rxbuf->map);
|
||||
if (error) {
|
||||
printf("%s: Unable to create RX DMA map\n",
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ksmn.c,v 1.9 2023/09/05 13:06:01 stsp Exp $ */
|
||||
/* $OpenBSD: ksmn.c,v 1.10 2024/08/07 17:39:00 brynet Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2019 Bryan Steele <brynet@openbsd.org>
|
||||
|
@ -107,6 +107,7 @@ static const struct pci_matchid ksmn_devices[] = {
|
|||
{ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_17_6X_RC },
|
||||
{ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_4X_RC },
|
||||
{ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_6X_RC },
|
||||
{ PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_7X_RC },
|
||||
};
|
||||
|
||||
int
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
$OpenBSD: pcidevs,v 1.2080 2024/07/29 01:17:53 jsg Exp $
|
||||
$OpenBSD: pcidevs,v 1.2081 2024/08/07 06:48:55 jsg Exp $
|
||||
/* $NetBSD: pcidevs,v 1.30 1997/06/24 06:20:24 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -707,6 +707,14 @@ product AMD 10_ADDR 0x1201 10h Address Map
|
|||
product AMD 10_DRAM 0x1202 10h DRAM Cfg
|
||||
product AMD 10_MISC 0x1203 10h Misc Cfg
|
||||
product AMD 10_LINK 0x1204 10h Link Cfg
|
||||
product AMD 19_78_DF_1 0x12f8 19h/7xh Data Fabric
|
||||
product AMD 19_78_DF_2 0x12f9 19h/7xh Data Fabric
|
||||
product AMD 19_78_DF_3 0x12fa 19h/7xh Data Fabric
|
||||
product AMD 19_78_DF_4 0x12fb 19h/7xh Data Fabric
|
||||
product AMD 19_78_DF_5 0x12fc 19h/7xh Data Fabric
|
||||
product AMD 19_78_DF_6 0x12fd 19h/7xh Data Fabric
|
||||
product AMD 19_78_DF_7 0x12fe 19h/7xh Data Fabric
|
||||
product AMD 19_78_DF_8 0x12ff 19h/7xh Data Fabric
|
||||
product AMD 11_HT 0x1300 11h HyperTransport
|
||||
product AMD 11_ADDR 0x1301 11h Address Map
|
||||
product AMD 11_DRAM 0x1302 11h DRAM Cfg
|
||||
|
@ -876,8 +884,12 @@ product AMD 19_6X_XHCI_2 0x15b7 19h/6xh xHCI
|
|||
product AMD 19_6X_XHCI_3 0x15b8 19h/6xh xHCI
|
||||
product AMD 19_7X_XHCI_1 0x15b9 19h/7xh xHCI
|
||||
product AMD 19_7X_XHCI_2 0x15ba 19h/7xh xHCI
|
||||
product AMD 19_78_XHCI_1 0x15bb 19h/7xh xHCI
|
||||
product AMD 19_78_XHCI_2 0x15bd 19h/7xh xHCI
|
||||
product AMD 19_7X_XHCI_3 0x15c0 19h/7xh xHCI
|
||||
product AMD 19_7X_XHCI_4 0x15c1 19h/7xh xHCI
|
||||
product AMD 19_78_XHCI_3 0x15c2 19h/7xh xHCI
|
||||
product AMD 19_78_XHCI_4 0x15c3 19h/7xh xHCI
|
||||
product AMD 19_7X_PSP 0x15c7 19h/7xh PSP
|
||||
product AMD 17_1X_RC 0x15d0 17h/1xh Root Complex
|
||||
product AMD 17_1X_IOMMU 0x15d1 17h/1xh IOMMU
|
||||
|
@ -8792,6 +8804,7 @@ product REALTEK REALMANAGE_SERIAL_1 0x816a RealManage Serial
|
|||
product REALTEK REALMANAGE_SERIAL_2 0x816b RealManage Serial
|
||||
product REALTEK REALMANAGE_IPMI 0x816c RealManage IPMI
|
||||
product REALTEK REALMANAGE_EHCI 0x816d RealManage USB
|
||||
product REALTEK REALMANAGE_BMC 0x816e RealManage BMC
|
||||
product REALTEK RTL8192SE 0x8172 8192SE
|
||||
product REALTEK RTL8188CE 0x8176 8188CE
|
||||
product REALTEK RTL8192CE 0x8178 RTL8192CE
|
||||
|
@ -9146,6 +9159,7 @@ product SIS 966_HDA 0x7502 966 HD Audio
|
|||
|
||||
/* SK hynix products */
|
||||
product SKHYNIX SSD 0x1327 BC501 NVMe
|
||||
product SKHYNIX BC901 0x1d59 BC901
|
||||
|
||||
/* SMC products */
|
||||
product SMC 83C170 0x0005 83C170
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.
|
||||
*
|
||||
* generated from:
|
||||
* OpenBSD: pcidevs,v 1.2080 2024/07/29 01:17:53 jsg Exp
|
||||
* OpenBSD: pcidevs,v 1.2081 2024/08/07 06:48:55 jsg Exp
|
||||
*/
|
||||
/* $NetBSD: pcidevs,v 1.30 1997/06/24 06:20:24 thorpej Exp $ */
|
||||
|
||||
|
@ -712,6 +712,14 @@
|
|||
#define PCI_PRODUCT_AMD_10_DRAM 0x1202 /* 10h DRAM Cfg */
|
||||
#define PCI_PRODUCT_AMD_10_MISC 0x1203 /* 10h Misc Cfg */
|
||||
#define PCI_PRODUCT_AMD_10_LINK 0x1204 /* 10h Link Cfg */
|
||||
#define PCI_PRODUCT_AMD_19_78_DF_1 0x12f8 /* 19h/7xh Data Fabric */
|
||||
#define PCI_PRODUCT_AMD_19_78_DF_2 0x12f9 /* 19h/7xh Data Fabric */
|
||||
#define PCI_PRODUCT_AMD_19_78_DF_3 0x12fa /* 19h/7xh Data Fabric */
|
||||
#define PCI_PRODUCT_AMD_19_78_DF_4 0x12fb /* 19h/7xh Data Fabric */
|
||||
#define PCI_PRODUCT_AMD_19_78_DF_5 0x12fc /* 19h/7xh Data Fabric */
|
||||
#define PCI_PRODUCT_AMD_19_78_DF_6 0x12fd /* 19h/7xh Data Fabric */
|
||||
#define PCI_PRODUCT_AMD_19_78_DF_7 0x12fe /* 19h/7xh Data Fabric */
|
||||
#define PCI_PRODUCT_AMD_19_78_DF_8 0x12ff /* 19h/7xh Data Fabric */
|
||||
#define PCI_PRODUCT_AMD_11_HT 0x1300 /* 11h HyperTransport */
|
||||
#define PCI_PRODUCT_AMD_11_ADDR 0x1301 /* 11h Address Map */
|
||||
#define PCI_PRODUCT_AMD_11_DRAM 0x1302 /* 11h DRAM Cfg */
|
||||
|
@ -881,8 +889,12 @@
|
|||
#define PCI_PRODUCT_AMD_19_6X_XHCI_3 0x15b8 /* 19h/6xh xHCI */
|
||||
#define PCI_PRODUCT_AMD_19_7X_XHCI_1 0x15b9 /* 19h/7xh xHCI */
|
||||
#define PCI_PRODUCT_AMD_19_7X_XHCI_2 0x15ba /* 19h/7xh xHCI */
|
||||
#define PCI_PRODUCT_AMD_19_78_XHCI_1 0x15bb /* 19h/7xh xHCI */
|
||||
#define PCI_PRODUCT_AMD_19_78_XHCI_2 0x15bd /* 19h/7xh xHCI */
|
||||
#define PCI_PRODUCT_AMD_19_7X_XHCI_3 0x15c0 /* 19h/7xh xHCI */
|
||||
#define PCI_PRODUCT_AMD_19_7X_XHCI_4 0x15c1 /* 19h/7xh xHCI */
|
||||
#define PCI_PRODUCT_AMD_19_78_XHCI_3 0x15c2 /* 19h/7xh xHCI */
|
||||
#define PCI_PRODUCT_AMD_19_78_XHCI_4 0x15c3 /* 19h/7xh xHCI */
|
||||
#define PCI_PRODUCT_AMD_19_7X_PSP 0x15c7 /* 19h/7xh PSP */
|
||||
#define PCI_PRODUCT_AMD_17_1X_RC 0x15d0 /* 17h/1xh Root Complex */
|
||||
#define PCI_PRODUCT_AMD_17_1X_IOMMU 0x15d1 /* 17h/1xh IOMMU */
|
||||
|
@ -8797,6 +8809,7 @@
|
|||
#define PCI_PRODUCT_REALTEK_REALMANAGE_SERIAL_2 0x816b /* RealManage Serial */
|
||||
#define PCI_PRODUCT_REALTEK_REALMANAGE_IPMI 0x816c /* RealManage IPMI */
|
||||
#define PCI_PRODUCT_REALTEK_REALMANAGE_EHCI 0x816d /* RealManage USB */
|
||||
#define PCI_PRODUCT_REALTEK_REALMANAGE_BMC 0x816e /* RealManage BMC */
|
||||
#define PCI_PRODUCT_REALTEK_RTL8192SE 0x8172 /* 8192SE */
|
||||
#define PCI_PRODUCT_REALTEK_RTL8188CE 0x8176 /* 8188CE */
|
||||
#define PCI_PRODUCT_REALTEK_RTL8192CE 0x8178 /* RTL8192CE */
|
||||
|
@ -9151,6 +9164,7 @@
|
|||
|
||||
/* SK hynix products */
|
||||
#define PCI_PRODUCT_SKHYNIX_SSD 0x1327 /* BC501 NVMe */
|
||||
#define PCI_PRODUCT_SKHYNIX_BC901 0x1d59 /* BC901 */
|
||||
|
||||
/* SMC products */
|
||||
#define PCI_PRODUCT_SMC_83C170 0x0005 /* 83C170 */
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.
|
||||
*
|
||||
* generated from:
|
||||
* OpenBSD: pcidevs,v 1.2080 2024/07/29 01:17:53 jsg Exp
|
||||
* OpenBSD: pcidevs,v 1.2081 2024/08/07 06:48:55 jsg Exp
|
||||
*/
|
||||
|
||||
/* $NetBSD: pcidevs,v 1.30 1997/06/24 06:20:24 thorpej Exp $ */
|
||||
|
@ -1079,6 +1079,38 @@ static const struct pci_known_product pci_known_products[] = {
|
|||
PCI_VENDOR_AMD, PCI_PRODUCT_AMD_10_LINK,
|
||||
"10h Link Cfg",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_78_DF_1,
|
||||
"19h/7xh Data Fabric",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_78_DF_2,
|
||||
"19h/7xh Data Fabric",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_78_DF_3,
|
||||
"19h/7xh Data Fabric",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_78_DF_4,
|
||||
"19h/7xh Data Fabric",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_78_DF_5,
|
||||
"19h/7xh Data Fabric",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_78_DF_6,
|
||||
"19h/7xh Data Fabric",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_78_DF_7,
|
||||
"19h/7xh Data Fabric",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_78_DF_8,
|
||||
"19h/7xh Data Fabric",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_AMD, PCI_PRODUCT_AMD_11_HT,
|
||||
"11h HyperTransport",
|
||||
|
@ -1755,6 +1787,14 @@ static const struct pci_known_product pci_known_products[] = {
|
|||
PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_7X_XHCI_2,
|
||||
"19h/7xh xHCI",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_78_XHCI_1,
|
||||
"19h/7xh xHCI",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_78_XHCI_2,
|
||||
"19h/7xh xHCI",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_7X_XHCI_3,
|
||||
"19h/7xh xHCI",
|
||||
|
@ -1763,6 +1803,14 @@ static const struct pci_known_product pci_known_products[] = {
|
|||
PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_7X_XHCI_4,
|
||||
"19h/7xh xHCI",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_78_XHCI_3,
|
||||
"19h/7xh xHCI",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_78_XHCI_4,
|
||||
"19h/7xh xHCI",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_AMD, PCI_PRODUCT_AMD_19_7X_PSP,
|
||||
"19h/7xh PSP",
|
||||
|
@ -31731,6 +31779,10 @@ static const struct pci_known_product pci_known_products[] = {
|
|||
PCI_VENDOR_REALTEK, PCI_PRODUCT_REALTEK_REALMANAGE_EHCI,
|
||||
"RealManage USB",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_REALTEK, PCI_PRODUCT_REALTEK_REALMANAGE_BMC,
|
||||
"RealManage BMC",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_REALTEK, PCI_PRODUCT_REALTEK_RTL8192SE,
|
||||
"8192SE",
|
||||
|
@ -32971,6 +33023,10 @@ static const struct pci_known_product pci_known_products[] = {
|
|||
PCI_VENDOR_SKHYNIX, PCI_PRODUCT_SKHYNIX_SSD,
|
||||
"BC501 NVMe",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_SKHYNIX, PCI_PRODUCT_SKHYNIX_BC901,
|
||||
"BC901",
|
||||
},
|
||||
{
|
||||
PCI_VENDOR_SMC, PCI_PRODUCT_SMC_83C170,
|
||||
"83C170",
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: sdhc.c,v 1.76 2023/10/01 08:56:24 kettenis Exp $ */
|
||||
/* $OpenBSD: sdhc.c,v 1.77 2024/08/06 15:03:36 patrick Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2006 Uwe Stuehler <uwe@openbsd.org>
|
||||
|
@ -1057,6 +1057,9 @@ sdhc_start_command(struct sdhc_host *hp, struct sdmmc_command *cmd)
|
|||
DPRINTF(1,("%s: cmd=%#x mode=%#x blksize=%d blkcount=%d\n",
|
||||
DEVNAME(hp->sc), command, mode, blksize, blkcount));
|
||||
|
||||
/* We're starting a new command, reset state. */
|
||||
hp->intr_status = 0;
|
||||
|
||||
/*
|
||||
* Start a CPU data transfer. Writing to the high order byte
|
||||
* of the SDHC_COMMAND register triggers the SD command. (1.5)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: if_umb.c,v 1.58 2024/05/23 03:21:09 jsg Exp $ */
|
||||
/* $OpenBSD: if_umb.c,v 1.59 2024/08/08 05:10:00 deraadt Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2016 genua mbH
|
||||
|
@ -241,7 +241,13 @@ struct umb_quirk {
|
|||
int umb_match;
|
||||
};
|
||||
const struct umb_quirk umb_quirks[] = {
|
||||
{ { USB_VENDOR_DELL, USB_PRODUCT_DELL_DW5821E },
|
||||
{ { USB_VENDOR_DELL, USB_PRODUCT_DELL_DW5821E_1 },
|
||||
0,
|
||||
2,
|
||||
UMATCH_VENDOR_PRODUCT
|
||||
},
|
||||
|
||||
{ { USB_VENDOR_DELL, USB_PRODUCT_DELL_DW5821E_2 },
|
||||
0,
|
||||
2,
|
||||
UMATCH_VENDOR_PRODUCT
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
$OpenBSD: usbdevs,v 1.766 2024/05/29 06:48:43 jsg Exp $
|
||||
$OpenBSD: usbdevs,v 1.767 2024/08/08 05:09:09 deraadt Exp $
|
||||
/* $NetBSD: usbdevs,v 1.322 2003/05/10 17:47:14 hamajima Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -1537,7 +1537,8 @@ product DELL PRISM_GT_2 0x8104 PrismGT USB 2.0 WLAN
|
|||
product DELL W5500 0x8115 W5500 HSDPA
|
||||
product DELL U740 0x8135 U740 CDMA
|
||||
product DELL EU870D 0x8138 EU870D HSDPA
|
||||
product DELL DW5821E 0x81d7 DW5821e LTE
|
||||
product DELL DW5821E_1 0x81d7 DW5821e LTE
|
||||
product DELL DW5821E_2 0x81e0 DW5821e LTE
|
||||
product DELL DW700 0x9500 DW700 GPS
|
||||
product DELL2 UPS 0xffff UPS
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
/* $OpenBSD: usbdevs.h,v 1.778 2024/05/29 06:49:38 jsg Exp $ */
|
||||
/* $OpenBSD: usbdevs.h,v 1.779 2024/08/08 05:09:33 deraadt Exp $ */
|
||||
|
||||
/*
|
||||
* THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
|
||||
*
|
||||
* generated from:
|
||||
* OpenBSD: usbdevs,v 1.766 2024/05/29 06:48:43 jsg Exp
|
||||
* OpenBSD: usbdevs,v 1.767 2024/08/08 05:09:09 deraadt Exp
|
||||
*/
|
||||
/* $NetBSD: usbdevs,v 1.322 2003/05/10 17:47:14 hamajima Exp $ */
|
||||
|
||||
|
@ -1544,7 +1544,8 @@
|
|||
#define USB_PRODUCT_DELL_W5500 0x8115 /* W5500 HSDPA */
|
||||
#define USB_PRODUCT_DELL_U740 0x8135 /* U740 CDMA */
|
||||
#define USB_PRODUCT_DELL_EU870D 0x8138 /* EU870D HSDPA */
|
||||
#define USB_PRODUCT_DELL_DW5821E 0x81d7 /* DW5821e LTE */
|
||||
#define USB_PRODUCT_DELL_DW5821E_1 0x81d7 /* DW5821e LTE */
|
||||
#define USB_PRODUCT_DELL_DW5821E_2 0x81e0 /* DW5821e LTE */
|
||||
#define USB_PRODUCT_DELL_DW700 0x9500 /* DW700 GPS */
|
||||
#define USB_PRODUCT_DELL2_UPS 0xffff /* UPS */
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
/* $OpenBSD: usbdevs_data.h,v 1.772 2024/05/29 06:49:38 jsg Exp $ */
|
||||
/* $OpenBSD: usbdevs_data.h,v 1.773 2024/08/08 05:09:33 deraadt Exp $ */
|
||||
|
||||
/*
|
||||
* THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
|
||||
*
|
||||
* generated from:
|
||||
* OpenBSD: usbdevs,v 1.766 2024/05/29 06:48:43 jsg Exp
|
||||
* OpenBSD: usbdevs,v 1.767 2024/08/08 05:09:09 deraadt Exp
|
||||
*/
|
||||
/* $NetBSD: usbdevs,v 1.322 2003/05/10 17:47:14 hamajima Exp $ */
|
||||
|
||||
|
@ -2494,7 +2494,11 @@ const struct usb_known_product usb_known_products[] = {
|
|||
"EU870D HSDPA",
|
||||
},
|
||||
{
|
||||
USB_VENDOR_DELL, USB_PRODUCT_DELL_DW5821E,
|
||||
USB_VENDOR_DELL, USB_PRODUCT_DELL_DW5821E_1,
|
||||
"DW5821e LTE",
|
||||
},
|
||||
{
|
||||
USB_VENDOR_DELL, USB_PRODUCT_DELL_DW5821E_2,
|
||||
"DW5821e LTE",
|
||||
},
|
||||
{
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: xhci.c,v 1.131 2024/05/23 03:21:09 jsg Exp $ */
|
||||
/* $OpenBSD: xhci.c,v 1.132 2024/08/06 17:30:04 kettenis Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2014-2015 Martin Pieuchot
|
||||
|
@ -79,6 +79,7 @@ struct xhci_pipe {
|
|||
};
|
||||
|
||||
int xhci_reset(struct xhci_softc *);
|
||||
void xhci_suspend(struct xhci_softc *);
|
||||
int xhci_intr1(struct xhci_softc *);
|
||||
void xhci_event_dequeue(struct xhci_softc *);
|
||||
void xhci_event_xfer(struct xhci_softc *, uint64_t, uint32_t, uint32_t);
|
||||
|
@ -533,7 +534,7 @@ xhci_activate(struct device *self, int act)
|
|||
break;
|
||||
case DVACT_POWERDOWN:
|
||||
rv = config_activate_children(self, act);
|
||||
xhci_reset(sc);
|
||||
xhci_suspend(sc);
|
||||
break;
|
||||
default:
|
||||
rv = config_activate_children(self, act);
|
||||
|
@ -577,6 +578,73 @@ xhci_reset(struct xhci_softc *sc)
|
|||
return (0);
|
||||
}
|
||||
|
||||
void
|
||||
xhci_suspend(struct xhci_softc *sc)
|
||||
{
|
||||
uint32_t hcr;
|
||||
int i;
|
||||
|
||||
XOWRITE4(sc, XHCI_USBCMD, 0); /* Halt controller */
|
||||
for (i = 0; i < 100; i++) {
|
||||
usb_delay_ms(&sc->sc_bus, 1);
|
||||
hcr = XOREAD4(sc, XHCI_USBSTS) & XHCI_STS_HCH;
|
||||
if (hcr)
|
||||
break;
|
||||
}
|
||||
|
||||
if (!hcr) {
|
||||
printf("%s: halt timeout\n", DEVNAME(sc));
|
||||
xhci_reset(sc);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Some Intel controllers will not power down completely
|
||||
* unless they have seen a save state command. This in turn
|
||||
* will prevent the SoC from reaching its lowest idle state.
|
||||
* So save the state here.
|
||||
*
|
||||
* Note that we don't restore this saved state anywhere.
|
||||
* Instead we reset the controller and reinitialize it from
|
||||
* scratch when we resume.
|
||||
*/
|
||||
|
||||
XOWRITE4(sc, XHCI_USBCMD, XHCI_CMD_CSS); /* Save state */
|
||||
hcr = XOREAD4(sc, XHCI_USBSTS);
|
||||
for (i = 0; i < 100; i++) {
|
||||
usb_delay_ms(&sc->sc_bus, 1);
|
||||
hcr = XOREAD4(sc, XHCI_USBSTS) & XHCI_STS_SSS;
|
||||
if (!hcr)
|
||||
break;
|
||||
}
|
||||
|
||||
if (hcr) {
|
||||
printf("%s: save state timeout\n", DEVNAME(sc));
|
||||
xhci_reset(sc);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Disable interrupts. */
|
||||
XRWRITE4(sc, XHCI_IMOD(0), 0);
|
||||
XRWRITE4(sc, XHCI_IMAN(0), 0);
|
||||
|
||||
/* Clear the event ring address. */
|
||||
XRWRITE4(sc, XHCI_ERDP_LO(0), 0);
|
||||
XRWRITE4(sc, XHCI_ERDP_HI(0), 0);
|
||||
|
||||
XRWRITE4(sc, XHCI_ERSTBA_LO(0), 0);
|
||||
XRWRITE4(sc, XHCI_ERSTBA_HI(0), 0);
|
||||
|
||||
XRWRITE4(sc, XHCI_ERSTSZ(0), 0);
|
||||
|
||||
/* Clear the command ring address. */
|
||||
XOWRITE4(sc, XHCI_CRCR_LO, 0);
|
||||
XOWRITE4(sc, XHCI_CRCR_HI, 0);
|
||||
|
||||
XOWRITE4(sc, XHCI_DCBAAP_LO, 0);
|
||||
XOWRITE4(sc, XHCI_DCBAAP_HI, 0);
|
||||
}
|
||||
|
||||
void
|
||||
xhci_reinit(struct xhci_softc *sc)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue