* [PATCH 10/28] video: gxt4500: use DEFINE_PCI_DEVICE_TABLE macro
From: Jingoo Han @ 2013-11-28 3:22 UTC (permalink / raw)
To: linux-fbdev
This macro is used to create a struct pci_device_id array.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/video/gxt4500.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/gxt4500.c b/drivers/video/gxt4500.c
index 135d78a..c09d5e5 100644
--- a/drivers/video/gxt4500.c
+++ b/drivers/video/gxt4500.c
@@ -738,7 +738,7 @@ static void gxt4500_remove(struct pci_dev *pdev)
}
/* supported chipsets */
-static const struct pci_device_id gxt4500_pci_tbl[] = {
+static DEFINE_PCI_DEVICE_TABLE(gxt4500_pci_tbl) = {
{ PCI_DEVICE(PCI_VENDOR_ID_IBM, PCI_DEVICE_ID_IBM_GXT4500P),
.driver_data = GXT4500P },
{ PCI_DEVICE(PCI_VENDOR_ID_IBM, PCI_DEVICE_ID_IBM_GXT6500P),
--
1.7.10.4
^ permalink raw reply related
* [PATCH 09/28] video: gx1fb: use DEFINE_PCI_DEVICE_TABLE macro
From: Jingoo Han @ 2013-11-28 3:22 UTC (permalink / raw)
To: linux-fbdev
This macro is used to create a struct pci_device_id array.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/video/geode/gx1fb_core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/geode/gx1fb_core.c b/drivers/video/geode/gx1fb_core.c
index 2794ba1..a701452 100644
--- a/drivers/video/geode/gx1fb_core.c
+++ b/drivers/video/geode/gx1fb_core.c
@@ -427,7 +427,7 @@ static void __init gx1fb_setup(char *options)
}
#endif
-static struct pci_device_id gx1fb_id_table[] = {
+static DEFINE_PCI_DEVICE_TABLE(gx1fb_id_table) = {
{ PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_VIDEO,
PCI_ANY_ID, PCI_ANY_ID, PCI_BASE_CLASS_DISPLAY << 16,
0xff0000, 0 },
--
1.7.10.4
^ permalink raw reply related
* [PATCH 08/28] video: lxfb: use DEFINE_PCI_DEVICE_TABLE macro
From: Jingoo Han @ 2013-11-28 3:21 UTC (permalink / raw)
To: linux-fbdev
This macro is used to create a struct pci_device_id array.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/video/geode/lxfb_core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/geode/lxfb_core.c b/drivers/video/geode/lxfb_core.c
index 9e1d19d..c6cec41 100644
--- a/drivers/video/geode/lxfb_core.c
+++ b/drivers/video/geode/lxfb_core.c
@@ -608,7 +608,7 @@ static void lxfb_remove(struct pci_dev *pdev)
framebuffer_release(info);
}
-static struct pci_device_id lxfb_id_table[] = {
+static DEFINE_PCI_DEVICE_TABLE(lxfb_id_table) = {
{ PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_LX_VIDEO) },
{ 0, }
};
--
1.7.10.4
^ permalink raw reply related
* [PATCH 07/28] video: cyber2000fb: use DEFINE_PCI_DEVICE_TABLE macro
From: Jingoo Han @ 2013-11-28 3:20 UTC (permalink / raw)
To: linux-fbdev
This macro is used to create a struct pci_device_id array.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/video/cyber2000fb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/cyber2000fb.c b/drivers/video/cyber2000fb.c
index b0a950f..760200d 100644
--- a/drivers/video/cyber2000fb.c
+++ b/drivers/video/cyber2000fb.c
@@ -1837,7 +1837,7 @@ static int cyberpro_pci_resume(struct pci_dev *dev)
return 0;
}
-static struct pci_device_id cyberpro_pci_table[] = {
+static DEFINE_PCI_DEVICE_TABLE(cyberpro_pci_table) = {
/* Not yet
* { PCI_VENDOR_ID_INTERG, PCI_DEVICE_ID_INTERG_1682,
* PCI_ANY_ID, PCI_ANY_ID, 0, 0, ID_IGA_1682 },
--
1.7.10.4
^ permalink raw reply related
* [PATCH 06/28] video: cirrusfb: use DEFINE_PCI_DEVICE_TABLE macro
From: Jingoo Han @ 2013-11-28 3:19 UTC (permalink / raw)
To: linux-fbdev
This macro is used to create a struct pci_device_id array.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/video/cirrusfb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/cirrusfb.c b/drivers/video/cirrusfb.c
index d992aa5..aeb165b 100644
--- a/drivers/video/cirrusfb.c
+++ b/drivers/video/cirrusfb.c
@@ -255,7 +255,7 @@ static const struct cirrusfb_board_info_rec {
#define CHIP(id, btype) \
{ PCI_VENDOR_ID_CIRRUS, id, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (btype) }
-static struct pci_device_id cirrusfb_pci_table[] = {
+static DEFINE_PCI_DEVICE_TABLE(cirrusfb_pci_table) = {
CHIP(PCI_DEVICE_ID_CIRRUS_5436, BT_ALPINE),
CHIP(PCI_DEVICE_ID_CIRRUS_5434_8, BT_SD64),
CHIP(PCI_DEVICE_ID_CIRRUS_5434_4, BT_SD64),
--
1.7.10.4
^ permalink raw reply related
* [PATCH 05/28] video: chipsfb: use DEFINE_PCI_DEVICE_TABLE macro
From: Jingoo Han @ 2013-11-28 3:19 UTC (permalink / raw)
To: linux-fbdev
This macro is used to create a struct pci_device_id array.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/video/chipsfb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/chipsfb.c b/drivers/video/chipsfb.c
index 206a66b..edc74ce 100644
--- a/drivers/video/chipsfb.c
+++ b/drivers/video/chipsfb.c
@@ -483,7 +483,7 @@ static int chipsfb_pci_resume(struct pci_dev *pdev)
#endif /* CONFIG_PM */
-static struct pci_device_id chipsfb_pci_tbl[] = {
+static DEFINE_PCI_DEVICE_TABLE(chipsfb_pci_tbl) = {
{ PCI_VENDOR_ID_CT, PCI_DEVICE_ID_CT_65550, PCI_ANY_ID, PCI_ANY_ID },
{ 0 }
};
--
1.7.10.4
^ permalink raw reply related
* [PATCH 04/28] video: carminefb: use DEFINE_PCI_DEVICE_TABLE macro
From: Jingoo Han @ 2013-11-28 3:17 UTC (permalink / raw)
To: linux-fbdev
This macro is used to create a struct pci_device_id array.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/video/carminefb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/carminefb.c b/drivers/video/carminefb.c
index 65f7c15..2eb9a35 100644
--- a/drivers/video/carminefb.c
+++ b/drivers/video/carminefb.c
@@ -750,7 +750,7 @@ static void carminefb_remove(struct pci_dev *dev)
}
#define PCI_VENDOR_ID_FUJITU_LIMITED 0x10cf
-static struct pci_device_id carmine_devices[] = {
+static DEFINE_PCI_DEVICE_TABLE(carmine_devices) = {
{
PCI_DEVICE(PCI_VENDOR_ID_FUJITU_LIMITED, 0x202b)},
{0, 0, 0, 0, 0, 0, 0}
--
1.7.10.4
^ permalink raw reply related
* [PATCH 03/28] video: aty: use DEFINE_PCI_DEVICE_TABLE macro
From: Jingoo Han @ 2013-11-28 3:16 UTC (permalink / raw)
To: linux-fbdev
This macro is used to create a struct pci_device_id array.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/video/aty/aty128fb.c | 2 +-
drivers/video/aty/atyfb_base.c | 2 +-
drivers/video/aty/radeon_base.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/video/aty/aty128fb.c b/drivers/video/aty/aty128fb.c
index 12ca031..699b587 100644
--- a/drivers/video/aty/aty128fb.c
+++ b/drivers/video/aty/aty128fb.c
@@ -171,7 +171,7 @@ static int aty128_pci_resume(struct pci_dev *pdev);
static int aty128_do_resume(struct pci_dev *pdev);
/* supported Rage128 chipsets */
-static struct pci_device_id aty128_pci_tbl[] = {
+static DEFINE_PCI_DEVICE_TABLE(aty128_pci_tbl) = {
{ PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RAGE128_LE,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, rage_M3_pci },
{ PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RAGE128_LF,
diff --git a/drivers/video/aty/atyfb_base.c b/drivers/video/aty/atyfb_base.c
index 28fafbf..bfc2893 100644
--- a/drivers/video/aty/atyfb_base.c
+++ b/drivers/video/aty/atyfb_base.c
@@ -3772,7 +3772,7 @@ static void atyfb_pci_remove(struct pci_dev *pdev)
atyfb_remove(info);
}
-static struct pci_device_id atyfb_pci_tbl[] = {
+static DEFINE_PCI_DEVICE_TABLE(atyfb_pci_tbl) = {
#ifdef CONFIG_FB_ATY_GX
{ PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64GX) },
{ PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_CHIP_MACH64CX) },
diff --git a/drivers/video/aty/radeon_base.c b/drivers/video/aty/radeon_base.c
index 26d80a4..e2ad734 100644
--- a/drivers/video/aty/radeon_base.c
+++ b/drivers/video/aty/radeon_base.c
@@ -101,7 +101,7 @@
#define CHIP_DEF(id, family, flags) \
{ PCI_VENDOR_ID_ATI, id, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (flags) | (CHIP_FAMILY_##family) }
-static struct pci_device_id radeonfb_pci_table[] = {
+static DEFINE_PCI_DEVICE_TABLE(radeonfb_pci_table) = {
/* Radeon Xpress 200m */
CHIP_DEF(PCI_CHIP_RS480_5955, RS480, CHIP_HAS_CRTC2 | CHIP_IS_IGP | CHIP_IS_MOBILITY),
CHIP_DEF(PCI_CHIP_RS482_5975, RS480, CHIP_HAS_CRTC2 | CHIP_IS_IGP | CHIP_IS_MOBILITY),
--
1.7.10.4
^ permalink raw reply related
* [PATCH 02/28] video: asiliantfb: use DEFINE_PCI_DEVICE_TABLE macro
From: Jingoo Han @ 2013-11-28 3:13 UTC (permalink / raw)
To: linux-fbdev
This macro is used to create a struct pci_device_id array.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/video/asiliantfb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/asiliantfb.c b/drivers/video/asiliantfb.c
index d611f1a..f1ba0d8 100644
--- a/drivers/video/asiliantfb.c
+++ b/drivers/video/asiliantfb.c
@@ -593,7 +593,7 @@ static void asiliantfb_remove(struct pci_dev *dp)
framebuffer_release(p);
}
-static struct pci_device_id asiliantfb_pci_tbl[] = {
+static DEFINE_PCI_DEVICE_TABLE(asiliantfb_pci_tbl) = {
{ PCI_VENDOR_ID_CT, PCI_DEVICE_ID_CT_69000, PCI_ANY_ID, PCI_ANY_ID },
{ 0 }
};
--
1.7.10.4
^ permalink raw reply related
* [PATCH 01/28] video: arkfb: use DEFINE_PCI_DEVICE_TABLE macro
From: Jingoo Han @ 2013-11-28 3:13 UTC (permalink / raw)
To: linux-fbdev
This macro is used to create a struct pci_device_id array.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
---
drivers/video/arkfb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/arkfb.c b/drivers/video/arkfb.c
index a6b29bd..cc9f8a2 100644
--- a/drivers/video/arkfb.c
+++ b/drivers/video/arkfb.c
@@ -1183,7 +1183,7 @@ fail:
/* List of boards that we are trying to support */
-static struct pci_device_id ark_devices[] = {
+static DEFINE_PCI_DEVICE_TABLE(ark_devices) = {
{PCI_DEVICE(0xEDD8, 0xA099)},
{0, 0, 0, 0, 0, 0, 0}
};
--
1.7.10.4
^ permalink raw reply related
* [PATCH RESEND v2] ARM: OMAPFB: panel-sony-acx565akm: fix bad unlock balance
From: Aaro Koskinen @ 2013-11-27 21:32 UTC (permalink / raw)
To: Tomi Valkeinen, linux-omap, linux-fbdev
Cc: Eduardo Valentin, Aaro Koskinen, stable
When booting Nokia N900 smartphone with v3.12 + omap2plus_defconfig
(LOCKDEP enabled) and CONFIG_DISPLAY_PANEL_SONY_ACX565AKM enabled,
the following BUG is seen during the boot:
[ 7.302154] ==================[ 7.307128] [ BUG: bad unlock balance detected! ]
[ 7.312103] 3.12.0-los.git-2093492-00120-g5e01dc7 #3 Not tainted
[ 7.318450] -------------------------------------
[ 7.323425] kworker/u2:1/12 is trying to release lock (&ddata->mutex) at:
[ 7.330657] [<c031b760>] acx565akm_enable+0x12c/0x18c
[ 7.335998] but there are no more locks to release!
Fix by removing double unlock and handling the locking completely inside
acx565akm_panel_power_on() when doing the power on.
Reported-by: Eduardo Valentin <eduardo.valentin@ti.com>
Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
Cc: stable@vger.kernel.org
---
drivers/video/omap2/displays-new/panel-sony-acx565akm.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/video/omap2/displays-new/panel-sony-acx565akm.c b/drivers/video/omap2/displays-new/panel-sony-acx565akm.c
index e6d56f7..d94f35d 100644
--- a/drivers/video/omap2/displays-new/panel-sony-acx565akm.c
+++ b/drivers/video/omap2/displays-new/panel-sony-acx565akm.c
@@ -526,6 +526,8 @@ static int acx565akm_panel_power_on(struct omap_dss_device *dssdev)
struct omap_dss_device *in = ddata->in;
int r;
+ mutex_lock(&ddata->mutex);
+
dev_dbg(&ddata->spi->dev, "%s\n", __func__);
in->ops.sdi->set_timings(in, &ddata->videomode);
@@ -614,10 +616,7 @@ static int acx565akm_enable(struct omap_dss_device *dssdev)
if (omapdss_device_is_enabled(dssdev))
return 0;
- mutex_lock(&ddata->mutex);
r = acx565akm_panel_power_on(dssdev);
- mutex_unlock(&ddata->mutex);
-
if (r)
return r;
--
1.8.4.3
^ permalink raw reply related
* Re: [PATCH] fbdev: sh_mipi_dsi/sh_mobile_hdmi: clk_round_rate() can return a zero upon error
From: Kuninori Morimoto @ 2013-11-27 4:57 UTC (permalink / raw)
To: linux-fbdev
In-Reply-To: <alpine.DEB.2.02.1311261651300.11450@tamien>
Hi Paul
> Treat both negative and zero return values from clk_round_rate() as
> errors. This is needed since subsequent patches will convert
> clk_round_rate()'s return value to be an unsigned type, rather than a
> signed type, since some clock sources can generate rates higher than
> (2^31)-1 Hz.
>
> Eventually, when calling clk_round_rate(), only a return value of zero
> will be considered a error. All other values will be considered valid
> rates. The comparison against values less than 0 is kept to preserve
> the correct behavior in the meantime.
>
> Signed-off-by: Paul Walmsley <pwalmsley@nvidia.com>
> Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
> Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
> Cc: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
> ---
Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> Applies on v3.13-rc1. See also:
>
> http://marc.info/?l=linux-arm-kernel&m\x138542591313620&w=2
>
> drivers/video/sh_mipi_dsi.c | 4 +++-
> drivers/video/sh_mobile_hdmi.c | 6 +++---
> 2 files changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/video/sh_mipi_dsi.c b/drivers/video/sh_mipi_dsi.c
> index 8f6e8ff620d4..510cfb668a0c 100644
> --- a/drivers/video/sh_mipi_dsi.c
> +++ b/drivers/video/sh_mipi_dsi.c
> @@ -494,8 +494,10 @@ static int __init sh_mipi_probe(struct platform_device *pdev)
> ret = clk_set_rate(mipi->dsit_clk, rate);
> else
> ret = rate;
> - if (ret < 0)
> + if (ret <= 0) {
> + ret = -ERANGE;
> goto esettrate;
> + }
>
> dev_dbg(&pdev->dev, "DSI-T clk %lu -> %lu\n", f_current, rate);
>
> diff --git a/drivers/video/sh_mobile_hdmi.c b/drivers/video/sh_mobile_hdmi.c
> index 9a33ee0413fb..1e757e54c784 100644
> --- a/drivers/video/sh_mobile_hdmi.c
> +++ b/drivers/video/sh_mobile_hdmi.c
> @@ -818,7 +818,7 @@ static unsigned long sh_hdmi_rate_error(struct sh_hdmi *hdmi,
> struct sh_mobile_hdmi_info *pdata = dev_get_platdata(hdmi->dev);
>
> *hdmi_rate = clk_round_rate(hdmi->hdmi_clk, target);
> - if ((long)*hdmi_rate < 0)
> + if ((long)*hdmi_rate <= 0)
> *hdmi_rate = clk_get_rate(hdmi->hdmi_clk);
>
> rate_error = (long)*hdmi_rate > 0 ? abs(*hdmi_rate - target) : ULONG_MAX;
> @@ -1321,8 +1321,8 @@ static int __init sh_hdmi_probe(struct platform_device *pdev)
> if (rate > 0)
> rate = sh_hdmi_clk_configure(hdmi, rate, 0);
>
> - if (rate < 0) {
> - ret = rate;
> + if (rate <= 0) {
> + ret = -EINVAL;
> goto erate;
> }
>
>
> -----------------------------------------------------------------------------------
> This email message is for the sole use of the intended recipient(s) and may contain
> confidential information. Any unauthorized review, use, disclosure or distribution
> is prohibited. If you are not the intended recipient, please contact the sender by
> reply email and destroy all copies of the original message.
> -----------------------------------------------------------------------------------
Best regards
---
Kuninori Morimoto
^ permalink raw reply
* Re: [PATCH] fbdev: sh_mipi_dsi/sh_mobile_hdmi: clk_round_rate() can return a zero upon error
From: Laurent Pinchart @ 2013-11-27 1:34 UTC (permalink / raw)
To: linux-fbdev
In-Reply-To: <alpine.DEB.2.02.1311261651300.11450@tamien>
Hi Paul,
Thank you for the patch.
On Tuesday 26 November 2013 16:53:26 Paul Walmsley wrote:
> Treat both negative and zero return values from clk_round_rate() as
> errors. This is needed since subsequent patches will convert
> clk_round_rate()'s return value to be an unsigned type, rather than a
> signed type, since some clock sources can generate rates higher than
> (2^31)-1 Hz.
>
> Eventually, when calling clk_round_rate(), only a return value of zero
> will be considered a error. All other values will be considered valid
> rates. The comparison against values less than 0 is kept to preserve
> the correct behavior in the meantime.
>
> Signed-off-by: Paul Walmsley <pwalmsley@nvidia.com>
> Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
> Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
> Cc: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Acked-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> ---
>
> Applies on v3.13-rc1. See also:
>
> http://marc.info/?l=linux-arm-kernel&m\x138542591313620&w=2
>
> drivers/video/sh_mipi_dsi.c | 4 +++-
> drivers/video/sh_mobile_hdmi.c | 6 +++---
> 2 files changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/video/sh_mipi_dsi.c b/drivers/video/sh_mipi_dsi.c
> index 8f6e8ff620d4..510cfb668a0c 100644
> --- a/drivers/video/sh_mipi_dsi.c
> +++ b/drivers/video/sh_mipi_dsi.c
> @@ -494,8 +494,10 @@ static int __init sh_mipi_probe(struct platform_device
> *pdev) ret = clk_set_rate(mipi->dsit_clk, rate);
> else
> ret = rate;
> - if (ret < 0)
> + if (ret <= 0) {
> + ret = -ERANGE;
> goto esettrate;
> + }
>
> dev_dbg(&pdev->dev, "DSI-T clk %lu -> %lu\n", f_current, rate);
>
> diff --git a/drivers/video/sh_mobile_hdmi.c b/drivers/video/sh_mobile_hdmi.c
> index 9a33ee0413fb..1e757e54c784 100644
> --- a/drivers/video/sh_mobile_hdmi.c
> +++ b/drivers/video/sh_mobile_hdmi.c
> @@ -818,7 +818,7 @@ static unsigned long sh_hdmi_rate_error(struct sh_hdmi
> *hdmi, struct sh_mobile_hdmi_info *pdata = dev_get_platdata(hdmi->dev);
>
> *hdmi_rate = clk_round_rate(hdmi->hdmi_clk, target);
> - if ((long)*hdmi_rate < 0)
> + if ((long)*hdmi_rate <= 0)
> *hdmi_rate = clk_get_rate(hdmi->hdmi_clk);
>
> rate_error = (long)*hdmi_rate > 0 ? abs(*hdmi_rate - target) : ULONG_MAX;
> @@ -1321,8 +1321,8 @@ static int __init sh_hdmi_probe(struct
> platform_device *pdev) if (rate > 0)
> rate = sh_hdmi_clk_configure(hdmi, rate, 0);
>
> - if (rate < 0) {
> - ret = rate;
> + if (rate <= 0) {
> + ret = -EINVAL;
> goto erate;
> }
>
--
Regards,
Laurent Pinchart
^ permalink raw reply
* [PATCH 13/15] fbdev: sh-mobile-lcdcfb: Enable driver compilation with COMPILE_TEST
From: Laurent Pinchart @ 2013-11-27 1:18 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1385515117-23664-1-git-send-email-laurent.pinchart+renesas@ideasonboard.com>
This helps increasing build testing coverage.
Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: linux-fbdev@vger.kernel.org
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Simon Horman <horms@verge.net.au>
---
drivers/video/Kconfig | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index 4f2e1b3..2aceb08 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -10,7 +10,8 @@ config HAVE_FB_ATMEL
config SH_MIPI_DSI
tristate
- depends on (SUPERH || ARCH_SHMOBILE) && HAVE_CLK
+ depends on HAVE_CLK
+ depends on SUPERH || ARCH_SHMOBILE || COMPILE_TEST
config SH_LCD_MIPI_DSI
bool
@@ -1997,7 +1998,8 @@ config FB_W100
config FB_SH_MOBILE_LCDC
tristate "SuperH Mobile LCDC framebuffer support"
- depends on FB && (SUPERH || ARCH_SHMOBILE) && HAVE_CLK
+ depends on FB && HAVE_CLK
+ depends on SUPERH || ARCH_SHMOBILE || COMPILE_TEST
select FB_SYS_FILLRECT
select FB_SYS_COPYAREA
select FB_SYS_IMAGEBLIT
@@ -2484,7 +2486,7 @@ endif
config FB_SH_MOBILE_MERAM
tristate "SuperH Mobile MERAM read ahead support"
- depends on (SUPERH || ARCH_SHMOBILE)
+ depends on SUPERH || ARCH_SHMOBILE || COMPILE_TEST
select GENERIC_ALLOCATOR
---help---
Enable MERAM support for the SuperH controller.
--
1.8.3.2
^ permalink raw reply related
* [PATCH] fbdev: sh_mipi_dsi/sh_mobile_hdmi: clk_round_rate() can return a zero upon error
From: Paul Walmsley @ 2013-11-27 0:53 UTC (permalink / raw)
To: linux-fbdev
Treat both negative and zero return values from clk_round_rate() as
errors. This is needed since subsequent patches will convert
clk_round_rate()'s return value to be an unsigned type, rather than a
signed type, since some clock sources can generate rates higher than
(2^31)-1 Hz.
Eventually, when calling clk_round_rate(), only a return value of zero
will be considered a error. All other values will be considered valid
rates. The comparison against values less than 0 is kept to preserve
the correct behavior in the meantime.
Signed-off-by: Paul Walmsley <pwalmsley@nvidia.com>
Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
---
Applies on v3.13-rc1. See also:
http://marc.info/?l=linux-arm-kernel&m\x138542591313620&w=2
drivers/video/sh_mipi_dsi.c | 4 +++-
drivers/video/sh_mobile_hdmi.c | 6 +++---
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/video/sh_mipi_dsi.c b/drivers/video/sh_mipi_dsi.c
index 8f6e8ff620d4..510cfb668a0c 100644
--- a/drivers/video/sh_mipi_dsi.c
+++ b/drivers/video/sh_mipi_dsi.c
@@ -494,8 +494,10 @@ static int __init sh_mipi_probe(struct platform_device *pdev)
ret = clk_set_rate(mipi->dsit_clk, rate);
else
ret = rate;
- if (ret < 0)
+ if (ret <= 0) {
+ ret = -ERANGE;
goto esettrate;
+ }
dev_dbg(&pdev->dev, "DSI-T clk %lu -> %lu\n", f_current, rate);
diff --git a/drivers/video/sh_mobile_hdmi.c b/drivers/video/sh_mobile_hdmi.c
index 9a33ee0413fb..1e757e54c784 100644
--- a/drivers/video/sh_mobile_hdmi.c
+++ b/drivers/video/sh_mobile_hdmi.c
@@ -818,7 +818,7 @@ static unsigned long sh_hdmi_rate_error(struct sh_hdmi *hdmi,
struct sh_mobile_hdmi_info *pdata = dev_get_platdata(hdmi->dev);
*hdmi_rate = clk_round_rate(hdmi->hdmi_clk, target);
- if ((long)*hdmi_rate < 0)
+ if ((long)*hdmi_rate <= 0)
*hdmi_rate = clk_get_rate(hdmi->hdmi_clk);
rate_error = (long)*hdmi_rate > 0 ? abs(*hdmi_rate - target) : ULONG_MAX;
@@ -1321,8 +1321,8 @@ static int __init sh_hdmi_probe(struct platform_device *pdev)
if (rate > 0)
rate = sh_hdmi_clk_configure(hdmi, rate, 0);
- if (rate < 0) {
- ret = rate;
+ if (rate <= 0) {
+ ret = -EINVAL;
goto erate;
}
-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information. Any unauthorized review, use, disclosure or distribution
is prohibited. If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------
^ permalink raw reply related
* [PATCH] fbdev: sh_mobile_lcdcfb: Don't use plain 0 as NULL pointer
From: Laurent Pinchart @ 2013-11-27 0:38 UTC (permalink / raw)
To: linux-fbdev
This fixes a sparse warning.
Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: linux-fbdev@vger.kernel.org
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
drivers/video/sh_mobile_lcdcfb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/sh_mobile_lcdcfb.c b/drivers/video/sh_mobile_lcdcfb.c
index ab85ad6..2bcc84a 100644
--- a/drivers/video/sh_mobile_lcdcfb.c
+++ b/drivers/video/sh_mobile_lcdcfb.c
@@ -1227,7 +1227,7 @@ static void sh_mobile_lcdc_stop(struct sh_mobile_lcdc_priv *priv)
/* Free the MERAM cache. */
if (ch->cache) {
sh_mobile_meram_cache_free(priv->meram_dev, ch->cache);
- ch->cache = 0;
+ ch->cache = NULL;
}
}
--
1.8.3.2
^ permalink raw reply related
* Re: [PATCH -v2] fbdev: sh_mobile_meram: Fix defined but not used compiler warnings
From: Tomi Valkeinen @ 2013-11-26 15:00 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1510041.WqZSiK0jXs@avalon>
[-- Attachment #1: Type: text/plain, Size: 1003 bytes --]
On 2013-11-26 16:58, Laurent Pinchart wrote:
> Hi Tomi,
>
> On Tuesday 26 November 2013 16:44:09 Tomi Valkeinen wrote:
>> On 2013-11-06 13:57, Laurent Pinchart wrote:
>>> On Wednesday 06 November 2013 09:57:27 Geert Uytterhoeven wrote:
>>>> If both CONFIG_PM_SLEEP and CONFIG_PM_RUNTIME are not set:
>>>>
>>>> drivers/video/sh_mobile_meram.c:573: warning: ‘sh_mobile_meram_suspend’
>>>> defined but not used drivers/video/sh_mobile_meram.c:597: warning:
>>>> ‘sh_mobile_meram_resume’ defined but not used
>>>>
>>>> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
>>>
>>> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>>>
>>> and applied to my tree.
>>
>> What does that mean? Are you collecting sh_mobile video patches?
>>
>> Or to rephrase, shall I apply this to fbdev fixes tree?
>
> I was planning to send you a pull request for that, but if you can pick it up
> that's even easier, thanks.
Ok. Applied, then, to fbdev =).
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]
^ permalink raw reply
* Re: [PATCH -v2] fbdev: sh_mobile_meram: Fix defined but not used compiler warnings
From: Laurent Pinchart @ 2013-11-26 14:58 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <5294B3B9.3090104@ti.com>
[-- Attachment #1: Type: text/plain, Size: 935 bytes --]
Hi Tomi,
On Tuesday 26 November 2013 16:44:09 Tomi Valkeinen wrote:
> On 2013-11-06 13:57, Laurent Pinchart wrote:
> > On Wednesday 06 November 2013 09:57:27 Geert Uytterhoeven wrote:
> >> If both CONFIG_PM_SLEEP and CONFIG_PM_RUNTIME are not set:
> >>
> >> drivers/video/sh_mobile_meram.c:573: warning: ‘sh_mobile_meram_suspend’
> >> defined but not used drivers/video/sh_mobile_meram.c:597: warning:
> >> ‘sh_mobile_meram_resume’ defined but not used
> >>
> >> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> >
> > Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> >
> > and applied to my tree.
>
> What does that mean? Are you collecting sh_mobile video patches?
>
> Or to rephrase, shall I apply this to fbdev fixes tree?
I was planning to send you a pull request for that, but if you can pick it up
that's even easier, thanks.
--
Regards,
Laurent Pinchart
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 490 bytes --]
^ permalink raw reply
* Re: [PATCH 2/2] framebuffer: Fix int cast to pointer warnings
From: Tomi Valkeinen @ 2013-11-26 14:51 UTC (permalink / raw)
To: Joe Perches; +Cc: Jean-Christophe Plagniol-Villard, linux-fbdev, linux-kernel
In-Reply-To: <1379646611.2021.7.camel@joe-AO722>
[-- Attachment #1: Type: text/plain, Size: 1584 bytes --]
On 2013-09-20 06:10, Joe Perches wrote:
> Casts of int to pointer need additional casts to (unsigned long)
> when compiled for x86-64 to silence the compiler.
>
> Signed-off-by: Joe Perches <joe@perches.com>
> ---
> drivers/video/arkfb.c | 2 +-
> drivers/video/vt8623fb.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/video/arkfb.c b/drivers/video/arkfb.c
> index b13f3f2..26fd4e4 100644
> --- a/drivers/video/arkfb.c
> +++ b/drivers/video/arkfb.c
> @@ -1016,7 +1016,7 @@ static int ark_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
>
> pcibios_bus_to_resource(dev, &vga_res, &bus_reg);
>
> - par->state.vgabase = (void __iomem *) vga_res.start;
> + par->state.vgabase = (void __iomem *)(unsigned long)vga_res.start;
>
> /* FIXME get memsize */
> regval = vga_rseq(par->state.vgabase, 0x10);
> diff --git a/drivers/video/vt8623fb.c b/drivers/video/vt8623fb.c
> index 7e97c53..281d41b 100644
> --- a/drivers/video/vt8623fb.c
> +++ b/drivers/video/vt8623fb.c
> @@ -731,7 +731,7 @@ static int vt8623_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
>
> pcibios_bus_to_resource(dev, &vga_res, &bus_reg);
>
> - par->state.vgabase = (void __iomem *) vga_res.start;
> + par->state.vgabase = (void __iomem *)(unsigned long)vga_res.start;
>
> /* Find how many physical memory there is on card */
> memsize1 = (vga_rseq(par->state.vgabase, 0x34) + 1) >> 1;
What's the warning? I'm not seeing anything on my machine when compiling
these two.
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]
^ permalink raw reply
* Re: [PATCH -v2] fbdev: sh_mobile_meram: Fix defined but not used compiler warnings
From: Tomi Valkeinen @ 2013-11-26 14:44 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <5204468.CmggZzW3kO@avalon>
[-- Attachment #1: Type: text/plain, Size: 756 bytes --]
Hi Laurent,
On 2013-11-06 13:57, Laurent Pinchart wrote:
> Hi Geert,
>
> Thank you for the patch.
>
> On Wednesday 06 November 2013 09:57:27 Geert Uytterhoeven wrote:
>> If both CONFIG_PM_SLEEP and CONFIG_PM_RUNTIME are not set:
>>
>> drivers/video/sh_mobile_meram.c:573: warning: ‘sh_mobile_meram_suspend’
>> defined but not used drivers/video/sh_mobile_meram.c:597: warning:
>> ‘sh_mobile_meram_resume’ defined but not used
>>
>> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
>
> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>
> and applied to my tree.
What does that mean? Are you collecting sh_mobile video patches?
Or to rephrase, shall I apply this to fbdev fixes tree?
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]
^ permalink raw reply
* Re: [PATCH] video: kyro: fix incorrect sizes when copying to userspace
From: Tomi Valkeinen @ 2013-11-26 14:40 UTC (permalink / raw)
To: Sasha Levin, plagnioj; +Cc: gregkh, linux-fbdev, linux-kernel
In-Reply-To: <1384889136-15516-1-git-send-email-sasha.levin@oracle.com>
[-- Attachment #1: Type: text/plain, Size: 1475 bytes --]
On 2013-11-19 21:25, Sasha Levin wrote:
> kyro would copy u32s and specify sizeof(unsigned long) as the size to copy.
>
> This would copy more data than intended and cause memory corruption and might
> leak kernel memory.
>
> Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
> ---
> drivers/video/kyro/fbdev.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/video/kyro/fbdev.c b/drivers/video/kyro/fbdev.c
> index 50c8574..65041e1 100644
> --- a/drivers/video/kyro/fbdev.c
> +++ b/drivers/video/kyro/fbdev.c
> @@ -624,15 +624,15 @@ static int kyrofb_ioctl(struct fb_info *info,
> return -EINVAL;
> }
> case KYRO_IOCTL_UVSTRIDE:
> - if (copy_to_user(argp, &deviceInfo.ulOverlayUVStride, sizeof(unsigned long)))
> + if (copy_to_user(argp, &deviceInfo.ulOverlayUVStride, sizeof(deviceInfo.ulOverlayUVStride)))
> return -EFAULT;
> break;
> case KYRO_IOCTL_STRIDE:
> - if (copy_to_user(argp, &deviceInfo.ulOverlayStride, sizeof(unsigned long)))
> + if (copy_to_user(argp, &deviceInfo.ulOverlayStride, sizeof(deviceInfo.ulOverlayStride)))
> return -EFAULT;
> break;
> case KYRO_IOCTL_OVERLAY_OFFSET:
> - if (copy_to_user(argp, &deviceInfo.ulOverlayOffset, sizeof(unsigned long)))
> + if (copy_to_user(argp, &deviceInfo.ulOverlayOffset, sizeof(deviceInfo.ulOverlayOffset)))
> return -EFAULT;
> break;
> }
>
Thanks, applied for 3.13 fixes.
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]
^ permalink raw reply
* Re: [PATCH] video: exynos_mipi_dsim: Remove unused variable
From: Tomi Valkeinen @ 2013-11-26 14:35 UTC (permalink / raw)
To: Sachin Kamat, Olof Johansson
Cc: Greg Kroah-Hartman, Kishon Vijay Abraham I,
linux-fbdev@vger.kernel.org, linux-samsung-soc, LKML,
Sylwester Nawrocki
In-Reply-To: <CAK9yfHw7poMXWgRYBojzWsdoTxCMRf24YjdbxBhw=gohPrtwmA@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 1102 bytes --]
On 2013-11-15 04:52, Sachin Kamat wrote:
> + Tomi
>
> Hi Olof,
>
> On 15 November 2013 02:39, Olof Johansson <olof@lixom.net> wrote:
>> commit 7e0be9f9f7cba3356f75b86737dbe3a005da067e ('video: exynos_mipi_dsim:
>> Use the generic PHY driver') resulted in a warning about an unused
>> variable:
>>
>> drivers/video/exynos/exynos_mipi_dsi.c:144:26: warning: unused variable
>> 'pdev' [-Wunused-variable]
>>
>> It is indeed unused; remove it.
>>
>> Signed-off-by: Olof Johansson <olof@lixom.net>
>> Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>
>> ---
>
> I had already sent a similar patch to fix this issue [1] which is
> reviewed by Kishon.
> But the patch that caused the warning was in Greg's tree at that time
> and he wanted
> the follow up patch to go through the video tree. I have pinged Tomi yesterday
> regarding this (now that his tree as well as the original patches are merged).
>
> [1] http://www.spinics.net/lists/linux-fbdev/msg12755.html
>
The one from Olof seems to have been merged, so I'll drop the one from
Sachin in my tree.
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]
^ permalink raw reply
* Re: [PATCH 6/6] OMAPDSS: use runtime PM's autosuspend
From: Tomi Valkeinen @ 2013-11-26 10:27 UTC (permalink / raw)
To: Archit Taneja, linux-fbdev, linux-omap
In-Reply-To: <5292A7F4.8030106@ti.com>
[-- Attachment #1: Type: text/plain, Size: 2006 bytes --]
On 2013-11-25 03:29, Archit Taneja wrote:
> On Monday 18 November 2013 06:20 PM, Tomi Valkeinen wrote:
>> Use runtime PM's autosuspend support with delay of 100ms.
>>
>> This will prevent the driver from turning the DSS modules off and on
>> multiple times e.g. when loading the module.
>
> Could you explain this a bit more?
First of all, I'm not quite sure if this is even needed. Things are
probably simpler without autosuspend, and we don't have much on/off
cycles going on in DSS, so I don't think autosuspend helps much.
Maybe it's even bad if somebody wants to enable/disable the DSS HW very
quickly. So in the minimum, autosuspend should be made configurable. For
now, I think I'll just leave it out.
> Are you saying that when we insert the omapdss module, we have a lot of
> runtime_get/put pairs in probe, which leads to us excessive writing of
> DISPC the registers during resume, and the autosuspend feature would
> delay the effect of runtime_put() for a while?
For example, first DSS is probed. the dss.c driver will enable dss_core
(i.e. the whole DSS hw block), do some register reads/writes, and
disable dss_core. Then DISPC is probed, and things go very much like
with DSS. And so on. Each submodule will enable and disable the whole
DSS, because nothing is keeping the DSS enabled between the probes.
With autosuspend, the DSS HW block will stay enabled long enough so the
next probe gets ran.
> Also, do we need to do this for all the platform devices? Could we use
> autosuspend only for the parent platform device, and the children
> platform devices don't use it? Or am I understanding things wrongly here?
In theory, yes. In practice, if I'm not mistaken, no. When a device is
enabled, it'll enable the parent device. When the device is disabled,
its parent device will be immediately disabled (if nothing is using it),
so autosuspend doesn't have an effect there.
So we need to use autosuspend for the child devices.
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]
^ permalink raw reply
* Re: [PATCH 1/6] OMAPDSS: APPLY: set infos to dirty on enable
From: Tomi Valkeinen @ 2013-11-26 10:21 UTC (permalink / raw)
To: Archit Taneja, linux-fbdev, linux-omap
In-Reply-To: <5292A2AA.6090001@ti.com>
[-- Attachment #1: Type: text/plain, Size: 1005 bytes --]
On 2013-11-25 03:06, Archit Taneja wrote:
> On Monday 18 November 2013 06:20 PM, Tomi Valkeinen wrote:
>> Currently when DISPC is suspended, the driver stores all DISPC registers
>> to memory, so that they can be restored on resume. This is a bad way to
>> handle suspend/resume, as it's prone to failures and requires somewhat
>> large amount of extra space to store the registers.
>>
>> A better approach is to program the DISPC from scratch when resuming.
>> This can be easily accomplished in apply layer by setting the manager
>> and overlay infos to dirty when the manager is to be enabled.
>
> I guess this won't work if we wanted to support DSI command mode
> displays. I.e, only shut DSS off and keep the panel up. In that case, we
> would need to mark the flags dirty in dss_mgr_start_update_compat().
Hmm, true, I didn't try with DSI command mode panel. But I think it
should work. The DSI driver should call mgr->enable before update, if
the mgr has been off.
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]
^ permalink raw reply
* Re: [PATCH v3] video: add OpenCores VGA/LCD framebuffer driver
From: Michal Simek @ 2013-11-26 8:22 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Stefan Kristiansson, linux-kernel@vger.kernel.org,
Linux Fbdev development list, Tomi Valkeinen,
Jean-Christophe PLAGNIOL-VILLARD
In-Reply-To: <CAMuHMdVx_jkUMB=gS0CtguBPB4f3fNRx0z4hB4zRz9OC09SvsQ@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 772 bytes --]
On 11/26/2013 09:19 AM, Geert Uytterhoeven wrote:
> On Tue, Nov 26, 2013 at 8:10 AM, Michal Simek <monstr@monstr.eu> wrote:
>> On 11/22/2013 05:34 AM, Stefan Kristiansson wrote:
>> This construction seems to me too complicated and can be simpler.
>>
>> What about this?
>> res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>
> Don't forget to check for res being non-NULL here.
yes. you are right - you have to do it.
Thanks,
Michal
--
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 263 bytes --]
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox