move to 1.6-beta

This commit is contained in:
purplerain 2024-08-08 20:49:23 +00:00
parent 45c7370e13
commit 509ad7f110
Signed by: purplerain
GPG key ID: F42C07F07E2E35B7
81 changed files with 886 additions and 439 deletions

View file

@ -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);

View file

@ -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

View file

@ -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)

View file

@ -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
*/

View file

@ -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 *);

View file

@ -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);
}

View file

@ -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
}

View file

@ -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",

View file

@ -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

View file

@ -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

View file

@ -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 */

View file

@ -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",

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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 */

View file

@ -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",
},
{

View file

@ -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)
{