sync with OpenBSD -current

This commit is contained in:
purplerain 2023-12-23 13:56:21 +00:00
parent 38dbdec412
commit 933c153850
Signed by: purplerain
GPG key ID: F42C07F07E2E35B7
49 changed files with 931 additions and 4156 deletions

View file

@ -1,4 +1,4 @@
/* $OpenBSD: drm_linux.c,v 1.104 2023/10/20 03:38:58 jsg Exp $ */
/* $OpenBSD: drm_linux.c,v 1.105 2023/12/23 14:18:27 kettenis Exp $ */
/*
* Copyright (c) 2013 Jonathan Gray <jsg@openbsd.org>
* Copyright (c) 2015, 2016 Mark Kettenis <kettenis@openbsd.org>
@ -1501,6 +1501,9 @@ acpi_format_exception(acpi_status status)
#endif
SLIST_HEAD(,backlight_device) backlight_device_list =
SLIST_HEAD_INITIALIZER(backlight_device_list);
void
backlight_do_update_status(void *arg)
{
@ -1509,7 +1512,7 @@ backlight_do_update_status(void *arg)
struct backlight_device *
backlight_device_register(const char *name, void *kdev, void *data,
const struct backlight_ops *ops, struct backlight_properties *props)
const struct backlight_ops *ops, const struct backlight_properties *props)
{
struct backlight_device *bd;
@ -1520,31 +1523,26 @@ backlight_device_register(const char *name, void *kdev, void *data,
task_set(&bd->task, backlight_do_update_status, bd);
SLIST_INSERT_HEAD(&backlight_device_list, bd, next);
bd->name = name;
return bd;
}
void
backlight_device_unregister(struct backlight_device *bd)
{
SLIST_REMOVE(&backlight_device_list, bd, backlight_device, next);
free(bd, M_DRM, sizeof(*bd));
}
struct backlight_device *
devm_backlight_device_register(void *dev, const char *name, void *parent,
void *data, const struct backlight_ops *bo,
const struct backlight_properties *bp)
{
STUB();
return NULL;
}
void
backlight_schedule_update_status(struct backlight_device *bd)
{
task_add(systq, &bd->task);
}
inline int
int
backlight_enable(struct backlight_device *bd)
{
if (bd == NULL)
@ -1555,7 +1553,7 @@ backlight_enable(struct backlight_device *bd)
return bd->ops->update_status(bd);
}
inline int
int
backlight_disable(struct backlight_device *bd)
{
if (bd == NULL)
@ -1566,6 +1564,62 @@ backlight_disable(struct backlight_device *bd)
return bd->ops->update_status(bd);
}
struct backlight_device *
backlight_device_get_by_name(const char *name)
{
struct backlight_device *bd;
SLIST_FOREACH(bd, &backlight_device_list, next) {
if (strcmp(name, bd->name) == 0)
return bd;
}
return NULL;
}
struct drvdata {
struct device *dev;
void *data;
SLIST_ENTRY(drvdata) next;
};
SLIST_HEAD(,drvdata) drvdata_list = SLIST_HEAD_INITIALIZER(drvdata_list);
void
dev_set_drvdata(struct device *dev, void *data)
{
struct drvdata *drvdata;
SLIST_FOREACH(drvdata, &drvdata_list, next) {
if (drvdata->dev == dev) {
drvdata->data = data;
return;
}
}
if (data == NULL)
return;
drvdata = malloc(sizeof(*drvdata), M_DRM, M_WAITOK);
drvdata->dev = dev;
drvdata->data = data;
SLIST_INSERT_HEAD(&drvdata_list, drvdata, next);
}
void *
dev_get_drvdata(struct device *dev)
{
struct drvdata *drvdata;
SLIST_FOREACH(drvdata, &drvdata_list, next) {
if (drvdata->dev == dev)
return drvdata->data;
}
return NULL;
}
void
drm_sysfs_hotplug_event(struct drm_device *dev)
{