All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] mgag200: Various cleanups
@ 2021-07-01 12:43 Thomas Zimmermann
  2021-07-01 12:43 ` [PATCH 1/4] drm/mgag200: Don't pass flags to drm_dev_register() Thomas Zimmermann
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Thomas Zimmermann @ 2021-07-01 12:43 UTC (permalink / raw)
  To: daniel, airlied; +Cc: Thomas Zimmermann, dri-devel

Cleanup several nits in the driver's init code. Also move constant
data into the RO data segment. No functional changes.

Tested on mgag200 HW.

Thomas Zimmermann (4):
  drm/mgag200: Don't pass flags to drm_dev_register()
  drm/mgag200: Inline mgag200_device_init()
  drm/mgag200: Extract device type and flags in mgag200_pci_probe()
  drm/mgag200: Constify LUT for programming bpp

 drivers/gpu/drm/mgag200/mgag200_drv.c  | 62 +++++++++++++-------------
 drivers/gpu/drm/mgag200/mgag200_drv.h  | 14 ------
 drivers/gpu/drm/mgag200/mgag200_mode.c | 16 +++----
 3 files changed, 36 insertions(+), 56 deletions(-)


base-commit: 67f5a18128770817e4218a9e496d2bf5047c51e8
--
2.32.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/4] drm/mgag200: Don't pass flags to drm_dev_register()
  2021-07-01 12:43 [PATCH 0/4] mgag200: Various cleanups Thomas Zimmermann
@ 2021-07-01 12:43 ` Thomas Zimmermann
  2021-07-01 12:43 ` [PATCH 2/4] drm/mgag200: Inline mgag200_device_init() Thomas Zimmermann
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Thomas Zimmermann @ 2021-07-01 12:43 UTC (permalink / raw)
  To: daniel, airlied; +Cc: Thomas Zimmermann, dri-devel

The flags argument is only relevant for UMS drivers. Pass 0.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/mgag200/mgag200_drv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
index 36d1bfb3213f..b616fbbd4493 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.c
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
@@ -355,7 +355,7 @@ mgag200_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 		return PTR_ERR(mdev);
 	dev = &mdev->base;
 
-	ret = drm_dev_register(dev, ent->driver_data);
+	ret = drm_dev_register(dev, 0);
 	if (ret)
 		return ret;
 
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/4] drm/mgag200: Inline mgag200_device_init()
  2021-07-01 12:43 [PATCH 0/4] mgag200: Various cleanups Thomas Zimmermann
  2021-07-01 12:43 ` [PATCH 1/4] drm/mgag200: Don't pass flags to drm_dev_register() Thomas Zimmermann
@ 2021-07-01 12:43 ` Thomas Zimmermann
  2021-07-01 12:43 ` [PATCH 3/4] drm/mgag200: Extract device type and flags in mgag200_pci_probe() Thomas Zimmermann
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Thomas Zimmermann @ 2021-07-01 12:43 UTC (permalink / raw)
  To: daniel, airlied; +Cc: Thomas Zimmermann, dri-devel

Inline mgag200_device_init() into mgag200_device_create(), which is the
only caller.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/mgag200/mgag200_drv.c | 41 +++++++++------------------
 1 file changed, 13 insertions(+), 28 deletions(-)

diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
index b616fbbd4493..2bbbf7d537a9 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.c
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
@@ -262,17 +262,26 @@ static void mgag200_g200se_init_unique_id(struct mga_device *mdev)
 		mdev->model.g200se.unique_rev_id);
 }
 
-static int mgag200_device_init(struct mga_device *mdev, unsigned long flags)
+static struct mga_device *
+mgag200_device_create(struct pci_dev *pdev, unsigned long flags)
 {
-	struct drm_device *dev = &mdev->base;
+	struct mga_device *mdev;
+	struct drm_device *dev;
 	int ret;
 
+	mdev = devm_drm_dev_alloc(&pdev->dev, &mgag200_driver, struct mga_device, base);
+	if (IS_ERR(mdev))
+		return mdev;
+	dev = &mdev->base;
+
+	pci_set_drvdata(pdev, dev);
+
 	mdev->flags = mgag200_flags_from_driver_data(flags);
 	mdev->type = mgag200_type_from_driver_data(flags);
 
 	ret = mgag200_regs_init(mdev);
 	if (ret)
-		return ret;
+		return ERR_PTR(ret);
 
 	if (mdev->type == G200_PCI || mdev->type == G200_AGP)
 		mgag200_g200_init_refclk(mdev);
@@ -281,33 +290,9 @@ static int mgag200_device_init(struct mga_device *mdev, unsigned long flags)
 
 	ret = mgag200_mm_init(mdev);
 	if (ret)
-		return ret;
+		return ERR_PTR(ret);
 
 	ret = mgag200_modeset_init(mdev);
-	if (ret) {
-		drm_err(dev, "Fatal error during modeset init: %d\n", ret);
-		return ret;
-	}
-
-	return 0;
-}
-
-static struct mga_device *
-mgag200_device_create(struct pci_dev *pdev, unsigned long flags)
-{
-	struct drm_device *dev;
-	struct mga_device *mdev;
-	int ret;
-
-	mdev = devm_drm_dev_alloc(&pdev->dev, &mgag200_driver,
-				  struct mga_device, base);
-	if (IS_ERR(mdev))
-		return mdev;
-	dev = &mdev->base;
-
-	pci_set_drvdata(pdev, dev);
-
-	ret = mgag200_device_init(mdev, flags);
 	if (ret)
 		return ERR_PTR(ret);
 
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/4] drm/mgag200: Extract device type and flags in mgag200_pci_probe()
  2021-07-01 12:43 [PATCH 0/4] mgag200: Various cleanups Thomas Zimmermann
  2021-07-01 12:43 ` [PATCH 1/4] drm/mgag200: Don't pass flags to drm_dev_register() Thomas Zimmermann
  2021-07-01 12:43 ` [PATCH 2/4] drm/mgag200: Inline mgag200_device_init() Thomas Zimmermann
@ 2021-07-01 12:43 ` Thomas Zimmermann
  2021-07-01 12:43 ` [PATCH 4/4] drm/mgag200: Constify LUT for programming bpp Thomas Zimmermann
  2021-07-01 17:58 ` [PATCH 0/4] mgag200: Various cleanups Sam Ravnborg
  4 siblings, 0 replies; 7+ messages in thread
From: Thomas Zimmermann @ 2021-07-01 12:43 UTC (permalink / raw)
  To: daniel, airlied; +Cc: Thomas Zimmermann, dri-devel

The type and flags values are stored in the PCI ID list. Extract them
in the probe function. Makes the device initialization more readable.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/mgag200/mgag200_drv.c | 21 +++++++++++++++++----
 drivers/gpu/drm/mgag200/mgag200_drv.h | 12 ------------
 2 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
index 2bbbf7d537a9..6b9243713b3c 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.c
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
@@ -263,7 +263,7 @@ static void mgag200_g200se_init_unique_id(struct mga_device *mdev)
 }
 
 static struct mga_device *
-mgag200_device_create(struct pci_dev *pdev, unsigned long flags)
+mgag200_device_create(struct pci_dev *pdev, enum mga_type type, unsigned long flags)
 {
 	struct mga_device *mdev;
 	struct drm_device *dev;
@@ -276,8 +276,8 @@ mgag200_device_create(struct pci_dev *pdev, unsigned long flags)
 
 	pci_set_drvdata(pdev, dev);
 
-	mdev->flags = mgag200_flags_from_driver_data(flags);
-	mdev->type = mgag200_type_from_driver_data(flags);
+	mdev->flags = flags;
+	mdev->type = type;
 
 	ret = mgag200_regs_init(mdev);
 	if (ret)
@@ -320,9 +320,22 @@ static const struct pci_device_id mgag200_pciidlist[] = {
 
 MODULE_DEVICE_TABLE(pci, mgag200_pciidlist);
 
+static enum mga_type mgag200_type_from_driver_data(kernel_ulong_t driver_data)
+{
+	return (enum mga_type)(driver_data & MGAG200_TYPE_MASK);
+}
+
+static unsigned long mgag200_flags_from_driver_data(kernel_ulong_t driver_data)
+{
+	return driver_data & MGAG200_FLAG_MASK;
+}
+
 static int
 mgag200_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 {
+	kernel_ulong_t driver_data = ent->driver_data;
+	enum mga_type type = mgag200_type_from_driver_data(driver_data);
+	unsigned long flags = mgag200_flags_from_driver_data(driver_data);
 	struct mga_device *mdev;
 	struct drm_device *dev;
 	int ret;
@@ -335,7 +348,7 @@ mgag200_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	if (ret)
 		return ret;
 
-	mdev = mgag200_device_create(pdev, ent->driver_data);
+	mdev = mgag200_device_create(pdev, type, flags);
 	if (IS_ERR(mdev))
 		return PTR_ERR(mdev);
 	dev = &mdev->base;
diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.h b/drivers/gpu/drm/mgag200/mgag200_drv.h
index 749a075fe9e4..75ae1809fb5a 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.h
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.h
@@ -192,18 +192,6 @@ static inline struct mga_device *to_mga_device(struct drm_device *dev)
 	return container_of(dev, struct mga_device, base);
 }
 
-static inline enum mga_type
-mgag200_type_from_driver_data(kernel_ulong_t driver_data)
-{
-	return (enum mga_type)(driver_data & MGAG200_TYPE_MASK);
-}
-
-static inline unsigned long
-mgag200_flags_from_driver_data(kernel_ulong_t driver_data)
-{
-	return driver_data & MGAG200_FLAG_MASK;
-}
-
 				/* mgag200_mode.c */
 int mgag200_modeset_init(struct mga_device *mdev);
 
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 4/4] drm/mgag200: Constify LUT for programming bpp
  2021-07-01 12:43 [PATCH 0/4] mgag200: Various cleanups Thomas Zimmermann
                   ` (2 preceding siblings ...)
  2021-07-01 12:43 ` [PATCH 3/4] drm/mgag200: Extract device type and flags in mgag200_pci_probe() Thomas Zimmermann
@ 2021-07-01 12:43 ` Thomas Zimmermann
  2021-07-01 17:58 ` [PATCH 0/4] mgag200: Various cleanups Sam Ravnborg
  4 siblings, 0 replies; 7+ messages in thread
From: Thomas Zimmermann @ 2021-07-01 12:43 UTC (permalink / raw)
  To: daniel, airlied; +Cc: Thomas Zimmermann, dri-devel

Declare constant LUT for bpp programming as static const. Removes mutable
data from device structure.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/mgag200/mgag200_drv.h  |  2 --
 drivers/gpu/drm/mgag200/mgag200_mode.c | 16 ++++++----------
 2 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.h b/drivers/gpu/drm/mgag200/mgag200_drv.h
index 75ae1809fb5a..f7a0537c0d0a 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.h
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.h
@@ -166,8 +166,6 @@ struct mga_device {
 
 	enum mga_type			type;
 
-	int bpp_shifts[4];
-
 	int fb_mtrr;
 
 	union {
diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c
index 9d576240faed..3b3059f471c2 100644
--- a/drivers/gpu/drm/mgag200/mgag200_mode.c
+++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
@@ -1137,10 +1137,11 @@ static void mgag200_set_mode_regs(struct mga_device *mdev,
 	WREG8(MGA_MISC_OUT, misc);
 }
 
-static u8 mgag200_get_bpp_shift(struct mga_device *mdev,
-				const struct drm_format_info *format)
+static u8 mgag200_get_bpp_shift(const struct drm_format_info *format)
 {
-	return mdev->bpp_shifts[format->cpp[0] - 1];
+	static const u8 bpp_shift[] = {0, 1, 0, 2};
+
+	return bpp_shift[format->cpp[0] - 1];
 }
 
 /*
@@ -1152,7 +1153,7 @@ static u32 mgag200_calculate_offset(struct mga_device *mdev,
 				    const struct drm_framebuffer *fb)
 {
 	u32 offset = fb->pitches[0] / fb->format->cpp[0];
-	u8 bppshift = mgag200_get_bpp_shift(mdev, fb->format);
+	u8 bppshift = mgag200_get_bpp_shift(fb->format);
 
 	if (fb->format->cpp[0] * 8 == 24)
 		offset = (offset * 3) >> (4 - bppshift);
@@ -1189,7 +1190,7 @@ static void mgag200_set_format_regs(struct mga_device *mdev,
 
 	bpp = format->cpp[0] * 8;
 
-	bppshift = mgag200_get_bpp_shift(mdev, format);
+	bppshift = mgag200_get_bpp_shift(format);
 	switch (bpp) {
 	case 24:
 		scale = ((1 << bppshift) * 3) - 1;
@@ -1699,11 +1700,6 @@ int mgag200_modeset_init(struct mga_device *mdev)
 	size_t format_count = ARRAY_SIZE(mgag200_simple_display_pipe_formats);
 	int ret;
 
-	mdev->bpp_shifts[0] = 0;
-	mdev->bpp_shifts[1] = 1;
-	mdev->bpp_shifts[2] = 0;
-	mdev->bpp_shifts[3] = 2;
-
 	mgag200_init_regs(mdev);
 
 	ret = drmm_mode_config_init(dev);
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 0/4] mgag200: Various cleanups
  2021-07-01 12:43 [PATCH 0/4] mgag200: Various cleanups Thomas Zimmermann
                   ` (3 preceding siblings ...)
  2021-07-01 12:43 ` [PATCH 4/4] drm/mgag200: Constify LUT for programming bpp Thomas Zimmermann
@ 2021-07-01 17:58 ` Sam Ravnborg
  2021-07-02  4:59   ` Thomas Zimmermann
  4 siblings, 1 reply; 7+ messages in thread
From: Sam Ravnborg @ 2021-07-01 17:58 UTC (permalink / raw)
  To: Thomas Zimmermann; +Cc: airlied, dri-devel

Hi Thomas,

On Thu, Jul 01, 2021 at 02:43:12PM +0200, Thomas Zimmermann wrote:
> Cleanup several nits in the driver's init code. Also move constant
> data into the RO data segment. No functional changes.
> 
> Tested on mgag200 HW.
> 
> Thomas Zimmermann (4):
>   drm/mgag200: Don't pass flags to drm_dev_register()
>   drm/mgag200: Inline mgag200_device_init()
This patch drop a redundant error message too - it had helped me if the
changelog had said so but whatever.

>   drm/mgag200: Extract device type and flags in mgag200_pci_probe()
>   drm/mgag200: Constify LUT for programming bpp

Full serie is:
Acked-by: Sam Ravnborg <sam@ravnborg.org>

	Sam

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 0/4] mgag200: Various cleanups
  2021-07-01 17:58 ` [PATCH 0/4] mgag200: Various cleanups Sam Ravnborg
@ 2021-07-02  4:59   ` Thomas Zimmermann
  0 siblings, 0 replies; 7+ messages in thread
From: Thomas Zimmermann @ 2021-07-02  4:59 UTC (permalink / raw)
  To: Sam Ravnborg; +Cc: airlied, dri-devel


[-- Attachment #1.1: Type: text/plain, Size: 1054 bytes --]

Hi Sam

Am 01.07.21 um 19:58 schrieb Sam Ravnborg:
> Hi Thomas,
> 
> On Thu, Jul 01, 2021 at 02:43:12PM +0200, Thomas Zimmermann wrote:
>> Cleanup several nits in the driver's init code. Also move constant
>> data into the RO data segment. No functional changes.
>>
>> Tested on mgag200 HW.
>>
>> Thomas Zimmermann (4):
>>    drm/mgag200: Don't pass flags to drm_dev_register()
>>    drm/mgag200: Inline mgag200_device_init()
> This patch drop a redundant error message too - it had helped me if the
> changelog had said so but whatever.

Sure, I'll add it to the log.

> 
>>    drm/mgag200: Extract device type and flags in mgag200_pci_probe()
>>    drm/mgag200: Constify LUT for programming bpp
> 
> Full serie is:
> Acked-by: Sam Ravnborg <sam@ravnborg.org>

Thanks for the review.

Best regards
Thomas

> 
> 	Sam
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-07-02  4:59 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-01 12:43 [PATCH 0/4] mgag200: Various cleanups Thomas Zimmermann
2021-07-01 12:43 ` [PATCH 1/4] drm/mgag200: Don't pass flags to drm_dev_register() Thomas Zimmermann
2021-07-01 12:43 ` [PATCH 2/4] drm/mgag200: Inline mgag200_device_init() Thomas Zimmermann
2021-07-01 12:43 ` [PATCH 3/4] drm/mgag200: Extract device type and flags in mgag200_pci_probe() Thomas Zimmermann
2021-07-01 12:43 ` [PATCH 4/4] drm/mgag200: Constify LUT for programming bpp Thomas Zimmermann
2021-07-01 17:58 ` [PATCH 0/4] mgag200: Various cleanups Sam Ravnborg
2021-07-02  4:59   ` Thomas Zimmermann

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.