Merge tag 'drm/tegra/for-5.3-rc1' of git://anongit.freedesktop.org/tegra/linux into drm-next
drm/tegra: Changes for v5.3-rc1 This contains a couple of small improvements and cleanups for the Tegra DRM driver. Signed-off-by: Dave Airlie <airlied@redhat.com> From: Thierry Reding <thierry.reding@gmail.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190621150753.19550-1-thierry.reding@gmail.com
Bu işleme şunda yer alıyor:
@@ -305,6 +305,36 @@ static int host1x_device_match(struct device *dev, struct device_driver *drv)
|
||||
return strcmp(dev_name(dev), drv->name) == 0;
|
||||
}
|
||||
|
||||
static int host1x_device_uevent(struct device *dev,
|
||||
struct kobj_uevent_env *env)
|
||||
{
|
||||
struct device_node *np = dev->parent->of_node;
|
||||
unsigned int count = 0;
|
||||
struct property *p;
|
||||
const char *compat;
|
||||
|
||||
/*
|
||||
* This duplicates most of of_device_uevent(), but the latter cannot
|
||||
* be called from modules and operates on dev->of_node, which is not
|
||||
* available in this case.
|
||||
*
|
||||
* Note that this is really only needed for backwards compatibility
|
||||
* with libdrm, which parses this information from sysfs and will
|
||||
* fail if it can't find the OF_FULLNAME, specifically.
|
||||
*/
|
||||
add_uevent_var(env, "OF_NAME=%pOFn", np);
|
||||
add_uevent_var(env, "OF_FULLNAME=%pOF", np);
|
||||
|
||||
of_property_for_each_string(np, "compatible", p, compat) {
|
||||
add_uevent_var(env, "OF_COMPATIBLE_%u=%s", count, compat);
|
||||
count++;
|
||||
}
|
||||
|
||||
add_uevent_var(env, "OF_COMPATIBLE_N=%u", count);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int host1x_dma_configure(struct device *dev)
|
||||
{
|
||||
return of_dma_configure(dev, dev->of_node, true);
|
||||
@@ -322,6 +352,7 @@ static const struct dev_pm_ops host1x_device_pm_ops = {
|
||||
struct bus_type host1x_bus_type = {
|
||||
.name = "host1x",
|
||||
.match = host1x_device_match,
|
||||
.uevent = host1x_device_uevent,
|
||||
.dma_configure = host1x_dma_configure,
|
||||
.pm = &host1x_device_pm_ops,
|
||||
};
|
||||
@@ -408,12 +439,14 @@ static int host1x_device_add(struct host1x *host1x,
|
||||
device->dev.dma_mask = &device->dev.coherent_dma_mask;
|
||||
dev_set_name(&device->dev, "%s", driver->driver.name);
|
||||
device->dev.release = host1x_device_release;
|
||||
device->dev.of_node = host1x->dev->of_node;
|
||||
device->dev.bus = &host1x_bus_type;
|
||||
device->dev.parent = host1x->dev;
|
||||
|
||||
of_dma_configure(&device->dev, host1x->dev->of_node, true);
|
||||
|
||||
device->dev.dma_parms = &device->dma_parms;
|
||||
dma_set_max_seg_size(&device->dev, SZ_4M);
|
||||
|
||||
err = host1x_device_parse_dt(device, driver);
|
||||
if (err < 0) {
|
||||
kfree(device);
|
||||
|
Yeni konuda referans
Bir kullanıcı engelle