Skip to content

Commit 5e0242f

Browse files
committed
drm/vc4: Convert from firmware calls to using a generic power domain.
This lets the firmware interaction get taken care of by a firmware-specific driver. Other V3D implementations wouldn't depend on raspberry pi firmware. Signed-off-by: Eric Anholt <[email protected]>
1 parent eb55be2 commit 5e0242f

File tree

3 files changed

+4
-23
lines changed

3 files changed

+4
-23
lines changed

drivers/gpu/drm/vc4/vc4_drv.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#include <linux/module.h>
1515
#include <linux/of_platform.h>
1616
#include <linux/platform_device.h>
17-
#include <soc/bcm2835/raspberrypi-firmware.h>
1817
#include "drm_fb_cma_helper.h"
1918

2019
#include "uapi/drm/vc4_drm.h"
@@ -170,7 +169,6 @@ static int vc4_drm_bind(struct device *dev)
170169
struct drm_device *drm;
171170
struct drm_connector *connector;
172171
struct vc4_dev *vc4;
173-
struct device_node *firmware_node;
174172
int ret = 0;
175173

176174
dev->coherent_dma_mask = DMA_BIT_MASK(32);
@@ -179,14 +177,6 @@ static int vc4_drm_bind(struct device *dev)
179177
if (!vc4)
180178
return -ENOMEM;
181179

182-
firmware_node = of_parse_phandle(dev->of_node, "firmware", 0);
183-
vc4->firmware = rpi_firmware_get(firmware_node);
184-
if (!vc4->firmware) {
185-
DRM_DEBUG("Failed to get Raspberry Pi firmware reference.\n");
186-
return -EPROBE_DEFER;
187-
}
188-
of_node_put(firmware_node);
189-
190180
drm = drm_dev_alloc(&vc4_drm_driver, dev);
191181
if (!drm)
192182
return -ENOMEM;

drivers/gpu/drm/vc4/vc4_drv.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ struct vc4_dev {
1818
struct vc4_v3d *v3d;
1919

2020
struct drm_fbdev_cma *fbdev;
21-
struct rpi_firmware *firmware;
2221

2322
struct vc4_hang_state *hang_state;
2423

drivers/gpu/drm/vc4/vc4_v3d.c

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
*/
1818

1919
#include "linux/component.h"
20-
#include "soc/bcm2835/raspberrypi-firmware.h"
2120
#include "vc4_drv.h"
2221
#include "vc4_regs.h"
2322

@@ -152,11 +151,10 @@ int vc4_v3d_debugfs_ident(struct seq_file *m, void *unused)
152151
int
153152
vc4_v3d_set_power(struct vc4_dev *vc4, bool on)
154153
{
155-
u32 packet = on;
156-
157-
return rpi_firmware_property(vc4->firmware,
158-
RPI_FIRMWARE_SET_ENABLE_QPU,
159-
&packet, sizeof(packet));
154+
if (on)
155+
return pm_generic_poweroff(&vc4->v3d->pdev->dev);
156+
else
157+
return pm_generic_resume(&vc4->v3d->pdev->dev);
160158
}
161159

162160
static void vc4_v3d_init_hw(struct drm_device *dev)
@@ -190,10 +188,6 @@ static int vc4_v3d_bind(struct device *dev, struct device *master, void *data)
190188

191189
vc4->v3d = v3d;
192190

193-
ret = vc4_v3d_set_power(vc4, true);
194-
if (ret)
195-
return ret;
196-
197191
if (V3D_READ(V3D_IDENT0) != V3D_EXPECTED_IDENT0) {
198192
DRM_ERROR("V3D_IDENT0 read 0x%08x instead of 0x%08x\n",
199193
V3D_READ(V3D_IDENT0), V3D_EXPECTED_IDENT0);
@@ -232,8 +226,6 @@ static void vc4_v3d_unbind(struct device *dev, struct device *master,
232226
V3D_WRITE(V3D_BPOA, 0);
233227
V3D_WRITE(V3D_BPOS, 0);
234228

235-
vc4_v3d_set_power(vc4, false);
236-
237229
vc4->v3d = NULL;
238230
}
239231

0 commit comments

Comments
 (0)