Commit 32f7ad0f authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'drm-next-2023-04-27' of git://anongit.freedesktop.org/drm/drm

Pull drm fixes from Dave Airlie:
 "A bit out of routine fixes pull for rc1.

  There's a build breakage on some platforms due to ttm, this has that
  fix + qaic uapi removal + minor panel fixes.

  ttm:
   - Fix TTM build on archs where PMD_SHIFT is not constant

  qaic:
   - Revert uAPI from accel/qaic

  panel:
   - Improve error handling in nt35950
   - Fix double unregister in otm8009a when removing the driver"

* tag 'drm-next-2023-04-27' of git://anongit.freedesktop.org/drm/drm:
  drm/panel: novatek-nt35950: Only unregister DSI1 if it exists
  drm/panel: otm8009a: Set backlight parent to panel device
  drm/panel: novatek-nt35950: Improve error handling
  drm/ttm: revert "Reduce the number of used allocation orders for TTM pages"
  Revert "accel/qaic: Add mhi_qaic_cntl"
parents 7e775787 cf03e295
...@@ -7,7 +7,6 @@ obj-$(CONFIG_DRM_ACCEL_QAIC) := qaic.o ...@@ -7,7 +7,6 @@ obj-$(CONFIG_DRM_ACCEL_QAIC) := qaic.o
qaic-y := \ qaic-y := \
mhi_controller.o \ mhi_controller.o \
mhi_qaic_ctrl.o \
qaic_control.o \ qaic_control.o \
qaic_data.o \ qaic_data.o \
qaic_drv.o qaic_drv.o
This diff is collapsed.
/* SPDX-License-Identifier: GPL-2.0-only
*
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*/
#ifndef __MHI_QAIC_CTRL_H__
#define __MHI_QAIC_CTRL_H__
int mhi_qaic_ctrl_init(void);
void mhi_qaic_ctrl_deinit(void);
#endif /* __MHI_QAIC_CTRL_H__ */
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
#include <uapi/drm/qaic_accel.h> #include <uapi/drm/qaic_accel.h>
#include "mhi_controller.h" #include "mhi_controller.h"
#include "mhi_qaic_ctrl.h"
#include "qaic.h" #include "qaic.h"
MODULE_IMPORT_NS(DMA_BUF); MODULE_IMPORT_NS(DMA_BUF);
...@@ -601,16 +600,8 @@ static int __init qaic_init(void) ...@@ -601,16 +600,8 @@ static int __init qaic_init(void)
goto free_mhi; goto free_mhi;
} }
ret = mhi_qaic_ctrl_init();
if (ret) {
pr_debug("qaic: mhi_qaic_ctrl_init failed %d\n", ret);
goto free_pci;
}
return 0; return 0;
free_pci:
pci_unregister_driver(&qaic_pci_driver);
free_mhi: free_mhi:
mhi_driver_unregister(&qaic_mhi_driver); mhi_driver_unregister(&qaic_mhi_driver);
return ret; return ret;
...@@ -634,7 +625,6 @@ static void __exit qaic_exit(void) ...@@ -634,7 +625,6 @@ static void __exit qaic_exit(void)
* reinitializing the link_up state after the cleanup is done. * reinitializing the link_up state after the cleanup is done.
*/ */
link_up = true; link_up = true;
mhi_qaic_ctrl_deinit();
pci_unregister_driver(&qaic_pci_driver); pci_unregister_driver(&qaic_pci_driver);
mhi_driver_unregister(&qaic_mhi_driver); mhi_driver_unregister(&qaic_mhi_driver);
} }
......
...@@ -585,8 +585,12 @@ static int nt35950_probe(struct mipi_dsi_device *dsi) ...@@ -585,8 +585,12 @@ static int nt35950_probe(struct mipi_dsi_device *dsi)
DRM_MODE_CONNECTOR_DSI); DRM_MODE_CONNECTOR_DSI);
ret = drm_panel_of_backlight(&nt->panel); ret = drm_panel_of_backlight(&nt->panel);
if (ret) if (ret) {
if (num_dsis == 2)
mipi_dsi_device_unregister(nt->dsi[1]);
return dev_err_probe(dev, ret, "Failed to get backlight\n"); return dev_err_probe(dev, ret, "Failed to get backlight\n");
}
drm_panel_add(&nt->panel); drm_panel_add(&nt->panel);
...@@ -602,6 +606,10 @@ static int nt35950_probe(struct mipi_dsi_device *dsi) ...@@ -602,6 +606,10 @@ static int nt35950_probe(struct mipi_dsi_device *dsi)
ret = mipi_dsi_attach(nt->dsi[i]); ret = mipi_dsi_attach(nt->dsi[i]);
if (ret < 0) { if (ret < 0) {
/* If we fail to attach to either host, we're done */
if (num_dsis == 2)
mipi_dsi_device_unregister(nt->dsi[1]);
return dev_err_probe(dev, ret, return dev_err_probe(dev, ret,
"Cannot attach to DSI%d host.\n", i); "Cannot attach to DSI%d host.\n", i);
} }
......
...@@ -471,7 +471,7 @@ static int otm8009a_probe(struct mipi_dsi_device *dsi) ...@@ -471,7 +471,7 @@ static int otm8009a_probe(struct mipi_dsi_device *dsi)
DRM_MODE_CONNECTOR_DSI); DRM_MODE_CONNECTOR_DSI);
ctx->bl_dev = devm_backlight_device_register(dev, dev_name(dev), ctx->bl_dev = devm_backlight_device_register(dev, dev_name(dev),
dsi->host->dev, ctx, dev, ctx,
&otm8009a_backlight_ops, &otm8009a_backlight_ops,
NULL); NULL);
if (IS_ERR(ctx->bl_dev)) { if (IS_ERR(ctx->bl_dev)) {
......
...@@ -47,11 +47,6 @@ ...@@ -47,11 +47,6 @@
#include "ttm_module.h" #include "ttm_module.h"
#define TTM_MAX_ORDER (PMD_SHIFT - PAGE_SHIFT)
#define __TTM_DIM_ORDER (TTM_MAX_ORDER + 1)
/* Some architectures have a weird PMD_SHIFT */
#define TTM_DIM_ORDER (__TTM_DIM_ORDER <= MAX_ORDER ? __TTM_DIM_ORDER : MAX_ORDER)
/** /**
* struct ttm_pool_dma - Helper object for coherent DMA mappings * struct ttm_pool_dma - Helper object for coherent DMA mappings
* *
...@@ -70,11 +65,11 @@ module_param(page_pool_size, ulong, 0644); ...@@ -70,11 +65,11 @@ module_param(page_pool_size, ulong, 0644);
static atomic_long_t allocated_pages; static atomic_long_t allocated_pages;
static struct ttm_pool_type global_write_combined[TTM_DIM_ORDER]; static struct ttm_pool_type global_write_combined[MAX_ORDER];
static struct ttm_pool_type global_uncached[TTM_DIM_ORDER]; static struct ttm_pool_type global_uncached[MAX_ORDER];
static struct ttm_pool_type global_dma32_write_combined[TTM_DIM_ORDER]; static struct ttm_pool_type global_dma32_write_combined[MAX_ORDER];
static struct ttm_pool_type global_dma32_uncached[TTM_DIM_ORDER]; static struct ttm_pool_type global_dma32_uncached[MAX_ORDER];
static spinlock_t shrinker_lock; static spinlock_t shrinker_lock;
static struct list_head shrinker_list; static struct list_head shrinker_list;
...@@ -449,7 +444,7 @@ int ttm_pool_alloc(struct ttm_pool *pool, struct ttm_tt *tt, ...@@ -449,7 +444,7 @@ int ttm_pool_alloc(struct ttm_pool *pool, struct ttm_tt *tt,
else else
gfp_flags |= GFP_HIGHUSER; gfp_flags |= GFP_HIGHUSER;
for (order = min_t(unsigned int, TTM_MAX_ORDER, __fls(num_pages)); for (order = min_t(unsigned int, MAX_ORDER - 1, __fls(num_pages));
num_pages; num_pages;
order = min_t(unsigned int, order, __fls(num_pages))) { order = min_t(unsigned int, order, __fls(num_pages))) {
struct ttm_pool_type *pt; struct ttm_pool_type *pt;
...@@ -568,7 +563,7 @@ void ttm_pool_init(struct ttm_pool *pool, struct device *dev, ...@@ -568,7 +563,7 @@ void ttm_pool_init(struct ttm_pool *pool, struct device *dev,
if (use_dma_alloc) { if (use_dma_alloc) {
for (i = 0; i < TTM_NUM_CACHING_TYPES; ++i) for (i = 0; i < TTM_NUM_CACHING_TYPES; ++i)
for (j = 0; j < TTM_DIM_ORDER; ++j) for (j = 0; j < MAX_ORDER; ++j)
ttm_pool_type_init(&pool->caching[i].orders[j], ttm_pool_type_init(&pool->caching[i].orders[j],
pool, i, j); pool, i, j);
} }
...@@ -588,7 +583,7 @@ void ttm_pool_fini(struct ttm_pool *pool) ...@@ -588,7 +583,7 @@ void ttm_pool_fini(struct ttm_pool *pool)
if (pool->use_dma_alloc) { if (pool->use_dma_alloc) {
for (i = 0; i < TTM_NUM_CACHING_TYPES; ++i) for (i = 0; i < TTM_NUM_CACHING_TYPES; ++i)
for (j = 0; j < TTM_DIM_ORDER; ++j) for (j = 0; j < MAX_ORDER; ++j)
ttm_pool_type_fini(&pool->caching[i].orders[j]); ttm_pool_type_fini(&pool->caching[i].orders[j]);
} }
...@@ -642,7 +637,7 @@ static void ttm_pool_debugfs_header(struct seq_file *m) ...@@ -642,7 +637,7 @@ static void ttm_pool_debugfs_header(struct seq_file *m)
unsigned int i; unsigned int i;
seq_puts(m, "\t "); seq_puts(m, "\t ");
for (i = 0; i < TTM_DIM_ORDER; ++i) for (i = 0; i < MAX_ORDER; ++i)
seq_printf(m, " ---%2u---", i); seq_printf(m, " ---%2u---", i);
seq_puts(m, "\n"); seq_puts(m, "\n");
} }
...@@ -653,7 +648,7 @@ static void ttm_pool_debugfs_orders(struct ttm_pool_type *pt, ...@@ -653,7 +648,7 @@ static void ttm_pool_debugfs_orders(struct ttm_pool_type *pt,
{ {
unsigned int i; unsigned int i;
for (i = 0; i < TTM_DIM_ORDER; ++i) for (i = 0; i < MAX_ORDER; ++i)
seq_printf(m, " %8u", ttm_pool_type_count(&pt[i])); seq_printf(m, " %8u", ttm_pool_type_count(&pt[i]));
seq_puts(m, "\n"); seq_puts(m, "\n");
} }
...@@ -756,16 +751,13 @@ int ttm_pool_mgr_init(unsigned long num_pages) ...@@ -756,16 +751,13 @@ int ttm_pool_mgr_init(unsigned long num_pages)
{ {
unsigned int i; unsigned int i;
BUILD_BUG_ON(TTM_DIM_ORDER > MAX_ORDER);
BUILD_BUG_ON(TTM_DIM_ORDER < 1);
if (!page_pool_size) if (!page_pool_size)
page_pool_size = num_pages; page_pool_size = num_pages;
spin_lock_init(&shrinker_lock); spin_lock_init(&shrinker_lock);
INIT_LIST_HEAD(&shrinker_list); INIT_LIST_HEAD(&shrinker_list);
for (i = 0; i < TTM_DIM_ORDER; ++i) { for (i = 0; i < MAX_ORDER; ++i) {
ttm_pool_type_init(&global_write_combined[i], NULL, ttm_pool_type_init(&global_write_combined[i], NULL,
ttm_write_combined, i); ttm_write_combined, i);
ttm_pool_type_init(&global_uncached[i], NULL, ttm_uncached, i); ttm_pool_type_init(&global_uncached[i], NULL, ttm_uncached, i);
...@@ -798,7 +790,7 @@ void ttm_pool_mgr_fini(void) ...@@ -798,7 +790,7 @@ void ttm_pool_mgr_fini(void)
{ {
unsigned int i; unsigned int i;
for (i = 0; i < TTM_DIM_ORDER; ++i) { for (i = 0; i < MAX_ORDER; ++i) {
ttm_pool_type_fini(&global_write_combined[i]); ttm_pool_type_fini(&global_write_combined[i]);
ttm_pool_type_fini(&global_uncached[i]); ttm_pool_type_fini(&global_uncached[i]);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment