Re: [PATCH 1/3] drm/ast: Remove unused code paths for AST 1180
Hi Emil Am 16.06.20 um 01:21 schrieb Emil Velikov: > Hi Thomas, > > On Thu, 11 Jun 2020 at 09:28, Thomas Zimmermann wrote: > >> --- a/drivers/gpu/drm/ast/ast_drv.c >> +++ b/drivers/gpu/drm/ast/ast_drv.c >> @@ -59,7 +59,6 @@ static struct drm_driver driver; >> static const struct pci_device_id pciidlist[] = { >> AST_VGA_DEVICE(PCI_CHIP_AST2000, NULL), >> AST_VGA_DEVICE(PCI_CHIP_AST2100, NULL), >> - /* AST_VGA_DEVICE(PCI_CHIP_AST1180, NULL), - don't bind to 1180 >> for now */ > > Since we don't bind to this pciid, the (removed) code is never > used/dead. For the series: > Reviewed-by: Emil Velikov > > Small idea below: feel free to ignore or if you agree - follow-up at a > random point in the future. > > >> + if (dev->pdev->revision >= 0x40) { >> + ast->chip = AST2500; >> + DRM_INFO("AST 2500 detected\n"); >> + } else if (dev->pdev->revision >= 0x30) { >> + ast->chip = AST2400; >> + DRM_INFO("AST 2400 detected\n"); >> + } else if (dev->pdev->revision >= 0x30) { >> + ast->chip = AST2400; >> + DRM_INFO("AST 2400 detected\n"); >> + } else if (dev->pdev->revision >= 0x20) { >> + ast->chip = AST2300; >> + DRM_INFO("AST 2300 detected\n"); >> + } else if (dev->pdev->revision >= 0x10) { >> + switch (scu_rev & 0x0300) { >> + case 0x0200: >> + ast->chip = AST1100; >> + DRM_INFO("AST 1100 detected\n"); >> + break; >> + case 0x0100: >> + ast->chip = AST2200; >> + DRM_INFO("AST 2200 detected\n"); >> + break; >> + case 0x: >> + ast->chip = AST2150; >> + DRM_INFO("AST 2150 detected\n"); >> + break; >> + default: >> + ast->chip = AST2100; >> + DRM_INFO("AST 2100 detected\n"); >> + break; >> } >> + ast->vga2_clone = false; >> + } else { >> + ast->chip = AST2000; >> + DRM_INFO("AST 2000 detected\n"); >> } >> > Instead of the above if/else spaghetti, one can use something alike > > static const struct foo { > u8 rev_maj; // revision & 0xf0 >> 4 > u8 rev_scu; // scu_rev & 0x0300 >> 8, ignored if table has 0xf > enum ast_chip; > const char *name; > } bar { >{ 0x3, 0xf, AST2400, "2400" }, >{ 0x2, 0xf, AST2300, "2300" }, >{ 0x1, 0x3, AST2100, "2100" }, >{ 0x1, 0x2, AST1100, "1100" }, >{ 0x1, 0x1, AST2200, "2200" }, >{ 0x1, 0x0, AST2150, "2150" }, >{ 0x0, 0xf, AST2000, "2000" }, > }; > > + trivial loop. I do like the idea, but there's plenty of similar code throughout the driver. I think a separate patchset could introduce an info structure with per-chip constants and flags, and fix the entire driver. Best regards Thomas > > -Emil > ___ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel > -- 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 signature.asc Description: OpenPGP digital signature ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [PATCH 1/3] drm/ast: Remove unused code paths for AST 1180
Hi Thomas, On Thu, 11 Jun 2020 at 09:28, Thomas Zimmermann wrote: > --- a/drivers/gpu/drm/ast/ast_drv.c > +++ b/drivers/gpu/drm/ast/ast_drv.c > @@ -59,7 +59,6 @@ static struct drm_driver driver; > static const struct pci_device_id pciidlist[] = { > AST_VGA_DEVICE(PCI_CHIP_AST2000, NULL), > AST_VGA_DEVICE(PCI_CHIP_AST2100, NULL), > - /* AST_VGA_DEVICE(PCI_CHIP_AST1180, NULL), - don't bind to 1180 > for now */ Since we don't bind to this pciid, the (removed) code is never used/dead. For the series: Reviewed-by: Emil Velikov Small idea below: feel free to ignore or if you agree - follow-up at a random point in the future. > + if (dev->pdev->revision >= 0x40) { > + ast->chip = AST2500; > + DRM_INFO("AST 2500 detected\n"); > + } else if (dev->pdev->revision >= 0x30) { > + ast->chip = AST2400; > + DRM_INFO("AST 2400 detected\n"); > + } else if (dev->pdev->revision >= 0x30) { > + ast->chip = AST2400; > + DRM_INFO("AST 2400 detected\n"); > + } else if (dev->pdev->revision >= 0x20) { > + ast->chip = AST2300; > + DRM_INFO("AST 2300 detected\n"); > + } else if (dev->pdev->revision >= 0x10) { > + switch (scu_rev & 0x0300) { > + case 0x0200: > + ast->chip = AST1100; > + DRM_INFO("AST 1100 detected\n"); > + break; > + case 0x0100: > + ast->chip = AST2200; > + DRM_INFO("AST 2200 detected\n"); > + break; > + case 0x: > + ast->chip = AST2150; > + DRM_INFO("AST 2150 detected\n"); > + break; > + default: > + ast->chip = AST2100; > + DRM_INFO("AST 2100 detected\n"); > + break; > } > + ast->vga2_clone = false; > + } else { > + ast->chip = AST2000; > + DRM_INFO("AST 2000 detected\n"); > } > Instead of the above if/else spaghetti, one can use something alike static const struct foo { u8 rev_maj; // revision & 0xf0 >> 4 u8 rev_scu; // scu_rev & 0x0300 >> 8, ignored if table has 0xf enum ast_chip; const char *name; } bar { { 0x3, 0xf, AST2400, "2400" }, { 0x2, 0xf, AST2300, "2300" }, { 0x1, 0x3, AST2100, "2100" }, { 0x1, 0x2, AST1100, "1100" }, { 0x1, 0x1, AST2200, "2200" }, { 0x1, 0x0, AST2150, "2150" }, { 0x0, 0xf, AST2000, "2000" }, }; + trivial loop. -Emil ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [PATCH 1/3] drm/ast: Remove unused code paths for AST 1180
On Thu, Jun 11, 2020 at 10:28:07AM +0200, Thomas Zimmermann wrote: > The ast driver contains code paths for AST 1180 chips. The chip is not > supported and the rsp code has never been tested. Simplify the driver by > removing the AST 1180 code. > > Signed-off-by: Thomas Zimmermann Reviewed-by: Daniel Vetter > --- > drivers/gpu/drm/ast/ast_drv.c | 1 - > drivers/gpu/drm/ast/ast_drv.h | 2 - > drivers/gpu/drm/ast/ast_main.c | 89 +++--- > drivers/gpu/drm/ast/ast_mode.c | 10 +--- > drivers/gpu/drm/ast/ast_post.c | 10 ++-- > 5 files changed, 43 insertions(+), 69 deletions(-) > > diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c > index b7ba22dddcad9..83509106f3ba9 100644 > --- a/drivers/gpu/drm/ast/ast_drv.c > +++ b/drivers/gpu/drm/ast/ast_drv.c > @@ -59,7 +59,6 @@ static struct drm_driver driver; > static const struct pci_device_id pciidlist[] = { > AST_VGA_DEVICE(PCI_CHIP_AST2000, NULL), > AST_VGA_DEVICE(PCI_CHIP_AST2100, NULL), > - /* AST_VGA_DEVICE(PCI_CHIP_AST1180, NULL), - don't bind to 1180 > for now */ > {0, 0, 0}, > }; > > diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h > index 656d591b154b3..09f2659e29118 100644 > --- a/drivers/gpu/drm/ast/ast_drv.h > +++ b/drivers/gpu/drm/ast/ast_drv.h > @@ -52,7 +52,6 @@ > > #define PCI_CHIP_AST2000 0x2000 > #define PCI_CHIP_AST2100 0x2010 > -#define PCI_CHIP_AST1180 0x1180 > > > enum ast_chip { > @@ -64,7 +63,6 @@ enum ast_chip { > AST2300, > AST2400, > AST2500, > - AST1180, > }; > > enum ast_tx_chip { > diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c > index e5398e3dabe70..f48a9f62368c0 100644 > --- a/drivers/gpu/drm/ast/ast_main.c > +++ b/drivers/gpu/drm/ast/ast_main.c > @@ -142,50 +142,42 @@ static int ast_detect_chip(struct drm_device *dev, bool > *need_post) > ast_detect_config_mode(dev, &scu_rev); > > /* Identify chipset */ > - if (dev->pdev->device == PCI_CHIP_AST1180) { > - ast->chip = AST1100; > - DRM_INFO("AST 1180 detected\n"); > - } else { > - if (dev->pdev->revision >= 0x40) { > - ast->chip = AST2500; > - DRM_INFO("AST 2500 detected\n"); > - } else if (dev->pdev->revision >= 0x30) { > - ast->chip = AST2400; > - DRM_INFO("AST 2400 detected\n"); > - } else if (dev->pdev->revision >= 0x20) { > - ast->chip = AST2300; > - DRM_INFO("AST 2300 detected\n"); > - } else if (dev->pdev->revision >= 0x10) { > - switch (scu_rev & 0x0300) { > - case 0x0200: > - ast->chip = AST1100; > - DRM_INFO("AST 1100 detected\n"); > - break; > - case 0x0100: > - ast->chip = AST2200; > - DRM_INFO("AST 2200 detected\n"); > - break; > - case 0x: > - ast->chip = AST2150; > - DRM_INFO("AST 2150 detected\n"); > - break; > - default: > - ast->chip = AST2100; > - DRM_INFO("AST 2100 detected\n"); > - break; > - } > - ast->vga2_clone = false; > - } else { > - ast->chip = AST2000; > - DRM_INFO("AST 2000 detected\n"); > + if (dev->pdev->revision >= 0x40) { > + ast->chip = AST2500; > + DRM_INFO("AST 2500 detected\n"); > + } else if (dev->pdev->revision >= 0x30) { > + ast->chip = AST2400; > + DRM_INFO("AST 2400 detected\n"); > + } else if (dev->pdev->revision >= 0x20) { > + ast->chip = AST2300; > + DRM_INFO("AST 2300 detected\n"); > + } else if (dev->pdev->revision >= 0x10) { > + switch (scu_rev & 0x0300) { > + case 0x0200: > + ast->chip = AST1100; > + DRM_INFO("AST 1100 detected\n"); > + break; > + case 0x0100: > + ast->chip = AST2200; > + DRM_INFO("AST 2200 detected\n"); > + break; > + case 0x: > + ast->chip = AST2150; > + DRM_INFO("AST 2150 detected\n"); > + break; > + default: > + ast->chip = AST2100; > + DRM_INFO("AST 2100 detected\n"); > + break; > } > + ast->vga2_clone = false; > + } else { > + ast->chip = AST2000; > + DRM_INFO("A