diff --git a/drivers/gpu/drm/panfrost/panfrost_device.c b/drivers/gpu/drm/panfrost/panfrost_device.c
index 5ef7875727a6309a32c0dca91ec5ed5b18822e5e..1a93ebf8101f51e030c0108d2c515d27cd25a7ab 100644
--- a/drivers/gpu/drm/panfrost/panfrost_device.c
+++ b/drivers/gpu/drm/panfrost/panfrost_device.c
@@ -6,6 +6,7 @@
 
 #include "panfrost_device.h"
 #include "panfrost_gpu.h"
+#include "panfrost_job.h"
 #include "panfrost_mmu.h"
 
 struct panfrost_ip_desc {
diff --git a/drivers/gpu/drm/panfrost/panfrost_device.h b/drivers/gpu/drm/panfrost/panfrost_device.h
index 0cb05ba9ec2fe43d4f73d6c35db0768c21973c82..cbbdac7d445bc7181d56ee861696861d872a16bb 100644
--- a/drivers/gpu/drm/panfrost/panfrost_device.h
+++ b/drivers/gpu/drm/panfrost/panfrost_device.h
@@ -53,9 +53,6 @@ struct panfrost_device {
 int panfrost_device_init(struct panfrost_device *pfdev);
 void panfrost_device_fini(struct panfrost_device *pfdev);
 
-int panfrost_job_init(struct panfrost_ip *ip);
-void panfrost_job_fini(struct panfrost_ip *ip);
-
 const char *panfrost_ip_name(struct panfrost_ip *ip);
 
 #endif
diff --git a/drivers/gpu/drm/panfrost/panfrost_job.c b/drivers/gpu/drm/panfrost/panfrost_job.c
index 223273f6f90d7939b35ddca2768c451cf41a702c..a8247e2ee16b57fb03de453f35525b218709aebb 100644
--- a/drivers/gpu/drm/panfrost/panfrost_job.c
+++ b/drivers/gpu/drm/panfrost/panfrost_job.c
@@ -2,6 +2,13 @@
 /* Copyright 2018 Panfrost Team */
 
 #include "panfrost_device.h"
+#include "panfrost_job.h"
+#include "panfrost_regs.h"
+
+#define job_write(reg, data) writel(data, ip->iomem + PAN_JOB_##reg)
+#define job_read(reg) readl(ip->iomem + PAN_JOB_##reg)
+#define job_slot_write(js, reg, data) writel(data, ip->iomem + PAN_JOB_SLOT0 + ((js) << 7) + PAN_JS_##reg)
+#define job_slot_read(js, reg) readl(ip->iomem + PAN_JOB_SLOT0 + ((js) << 7) + PAN_JS_##reg)
 
 int panfrost_job_init(struct panfrost_ip *ip)
 {
diff --git a/drivers/gpu/drm/panfrost/panfrost_job.h b/drivers/gpu/drm/panfrost/panfrost_job.h
new file mode 100644
index 0000000000000000000000000000000000000000..58decd8fe6a34bf28342b8b8c380cb9de499a7b4
--- /dev/null
+++ b/drivers/gpu/drm/panfrost/panfrost_job.h
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier:	GPL-2.0
+/* Copyright 2018 Panfrost Team */
+
+#ifndef __PANFROST_JOB_H__
+#define __PANFROST_JOB_H__
+
+struct panfrost_ip;
+struct panfrost_device;
+
+int panfrost_job_init(struct panfrost_ip *ip);
+void panfrost_job_fini(struct panfrost_ip *ip);
+
+#endif
diff --git a/drivers/gpu/drm/panfrost/panfrost_regs.h b/drivers/gpu/drm/panfrost/panfrost_regs.h
index 4c69c4fb4d593dcbc4caf70435333234824a8db4..696527771007511ffb1f9b404ae409315a63fcbd 100644
--- a/drivers/gpu/drm/panfrost/panfrost_regs.h
+++ b/drivers/gpu/drm/panfrost/panfrost_regs.h
@@ -40,6 +40,32 @@
 #define   PAN_GPU_CMD_SOFT_RESET		0x01
 #define PAN_GPU_STATUS				0x34
 
+/* Job Control regs */
+#define PAN_JOB_INT_RAWSTAT			0x000
+#define PAN_JOB_INT_CLEAR			0x004
+#define PAN_JOB_INT_MASK			0x008
+#define PAN_JOB_INT_STAT			0x00c
+#define PAN_JOB_JS_STATE			0x010
+#define PAN_JOB_INT_THROTTLE			0x014
+#define PAN_JOB_SLOT0				0x800
+#define   PAN_JS_HEAD_LO			0x000
+#define   PAN_JS_HEAD_HI			0x004
+#define   PAN_JS_TAIL_LO			0x008
+#define   PAN_JS_TAIL_HI			0x00c
+#define   PAN_JS_AFFINITY_LO			0x010
+#define   PAN_JS_AFFINITY_HI			0x014
+#define   PAN_JS_CONFIG				0x018
+#define   PAN_JS_XAFFINITY			0x01c
+#define   PAN_JS_COMMAND			0x020
+#define   PAN_JS_STATUS				0x024
+#define   PAN_JS_HEAD_NEXT_LO			0x040
+#define   PAN_JS_HEAD_NEXT_HI			0x044
+#define   PAN_JS_AFFINITY_NEXT_LO		0x050
+#define   PAN_JS_AFFINITY_NEXT_HI		0x054
+#define   PAN_JS_CONFIG_NEXT			0x058
+#define   PAN_JS_COMMAND_NEXT			0x060
+#define   PAN_JS_FLUSH_ID_NEXT			0x070
+
 /* MMU regs */
 #define PAN_MMU_INT_RAWSTAT			0x00
 #define PAN_MMU_INT_CLEAR			0x04