Merge pull request #439 from MastaG/panfrost_xu4

XU4: Enable Panfrost
This commit is contained in:
Mauro Ribeiro
2024-09-10 20:14:56 -03:00
committed by GitHub
5 changed files with 19 additions and 22 deletions

View File

@@ -825,16 +825,13 @@
interrupts = <GIC_SPI 219 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "JOB", "MMU", "GPU";
interrupt-names = "job", "mmu", "gpu";
clocks = <&clock CLK_G3D>;
clock-names = "core";
power-domains = <&g3d_pd>;
operating-points-v2 = <&gpu_opp_table>;
//system-coherency = <0>;
//power_policy = "always_on";
status = "disabled";
#cooling-cells = <2>;

View File

@@ -1045,7 +1045,7 @@
};
&gpu {
//mali-supply = <&buck4_reg>;
mali-supply = <&buck4_reg>;
status = "okay";
};

View File

@@ -4634,7 +4634,7 @@ CONFIG_DRM_SIMPLEDRM=m
# CONFIG_DRM_PL111 is not set
# CONFIG_DRM_TVE200 is not set
# CONFIG_DRM_LIMA is not set
# CONFIG_DRM_PANFROST is not set
CONFIG_DRM_PANFROST=m
# CONFIG_DRM_MCDE is not set
# CONFIG_DRM_TIDSS is not set
CONFIG_DRM_GUD=m

View File

@@ -899,19 +899,19 @@ static int assign_irqs(struct platform_device *pdev)
return -ENODEV;
/* 3 IRQ resources */
for (i = 0; i < ARRAY_SIZE(irq_names_caps); i++) {
for (i = 0; i < ARRAY_SIZE(irq_names); i++) {
/* We recommend using Upper case for the irq names in dts, but if
* there are devices in the world using Lower case then we should
* avoid breaking support for them. So try using names in Upper case
* first then try using Lower case names. If both attempts fail then
/* We recommend using Lower case for the irq names in dts, but if
* there are devices in the world using Upper case then we should
* avoid breaking support for them. So try using names in Lower case
* first then try using Upper case names. If both attempts fail then
* we assume there is no IRQ resource specified for the GPU.
*/
irq = platform_get_irq_byname(pdev, irq_names_caps[i]);
irq = platform_get_irq_byname(pdev, irq_names[i]);
if (irq < 0) {
irq = platform_get_irq_byname(pdev, irq_names[i]);
irq = platform_get_irq_byname(pdev, irq_names_caps[i]);
if(irq < 0) {
dev_err(kbdev->dev, "No IRQ resource '%s'\n", irq_names_caps[i]);
dev_err(kbdev->dev, "No IRQ resource '%s'\n", irq_names[i]);
return irq;
}
}

View File

@@ -531,31 +531,31 @@ static struct kbase_device *to_kbase_device(struct device *dev)
* @kbdev: Kbase device.
* @pdev: Platform device of the kbase device
*
* Read interrupt number and flag for 'JOB', 'MMU' and 'GPU' interrupts
* Read interrupt number and flag for 'job', 'mmu' and 'gpu' interrupts
* from the device tree and fill them into the struct of the kbase device.
*
* Return: 0 on successful reading of all the entries JOB, MMU and GPU interrupts.
* Return: 0 on successful reading of all the entries job, mmu and gpu interrupts.
* -EINVAL on failure for all other cases.
*
*/
static int get_irqs(struct kbase_device *kbdev, struct platform_device *pdev)
{
int i;
static const char *const irq_names_caps[] = { "JOB", "MMU", "GPU" };
static const char *const irq_names_caps[] = { "job", "mmu", "gpu" };
for (i = 0; i < ARRAY_SIZE(irq_names_caps); i++) {
struct irq_data *irqdata;
int irq;
/* We recommend using Upper case for the irq names in dts, but if
* there are devices in the world using Lower case then we should
* avoid breaking support for them. So try using names in Upper case
* first then try using Lower case names. If both attempts fail then
/* We recommend using Lower case for the irq names in dts, but if
* there are devices in the world using Upper case then we should
* avoid breaking support for them. So try using names in Lower case
* first then try using Upper case names. If both attempts fail then
* we assume there is no IRQ resource specified for the GPU.
*/
irq = platform_get_irq_byname(pdev, irq_names_caps[i]);
if (irq < 0) {
static const char *const irq_names[] = { "job", "mmu", "gpu" };
static const char *const irq_names[] = { "JOB", "MMU", "GPU" };
irq = platform_get_irq_byname(pdev, irq_names[i]);
}