[PATCH 10/18] drm/irq: track the irq installed in drm_irq_install in dev->irq
And another comment... On Friday 11 April 2014 23:36:07 Daniel Vetter wrote: > To get rid of the dev->bus->get_irq callback we need to pass in the > desired irq explicitly into drm_irq_install. To avoid having to do the > same for drm_irq_unistall just track it internally. That leaves > drivers with less room to botch things up. > > v2: Add the hunk lost in an earlier patch to this one (Thierry). > > Cc: Thierry Reding > Signed-off-by: Daniel Vetter > --- > drivers/gpu/drm/drm_irq.c | 18 +++--- > include/drm/drmP.h| 2 ++ > 2 files changed, 13 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c > index 330e85b19115..1c3b6229363d 100644 > --- a/drivers/gpu/drm/drm_irq.c > +++ b/drivers/gpu/drm/drm_irq.c > @@ -249,14 +249,16 @@ static inline int drm_dev_to_irq(struct drm_device > *dev) */ > int drm_irq_install(struct drm_device *dev) > { > - int ret; > + int ret, irq; > unsigned long sh_flags = 0; > char *irqname; > > + irq = drm_dev_to_irq(dev); > + > if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ)) > return -EINVAL; > > - if (drm_dev_to_irq(dev) == 0) > + if (irq == 0) Isn't 0 a valid IRQ number ? Shouldn't you check for irq < 0 instead ? At least platform_get_irq() returns a negative error value on failure. > return -EINVAL; > > /* Driver must have been initialized */ > @@ -267,7 +269,7 @@ int drm_irq_install(struct drm_device *dev) > return -EBUSY; > dev->irq_enabled = true; > > - DRM_DEBUG("irq=%d\n", drm_dev_to_irq(dev)); > + DRM_DEBUG("irq=%d\n", dev->irq); > > /* Before installing handler */ > if (dev->driver->irq_preinstall) > @@ -282,7 +284,7 @@ int drm_irq_install(struct drm_device *dev) > else > irqname = dev->driver->name; > > - ret = request_irq(drm_dev_to_irq(dev), dev->driver->irq_handler, > + ret = request_irq(dev->irq, dev->driver->irq_handler, > sh_flags, irqname, dev); > > if (ret < 0) { > @@ -301,7 +303,9 @@ int drm_irq_install(struct drm_device *dev) > dev->irq_enabled = false; > if (!drm_core_check_feature(dev, DRIVER_MODESET)) > vga_client_register(dev->pdev, NULL, NULL, NULL); > - free_irq(drm_dev_to_irq(dev), dev); > + free_irq(dev->irq, dev); > + } else { > + dev->irq = irq; > } > > return ret; > @@ -344,7 +348,7 @@ int drm_irq_uninstall(struct drm_device *dev) > if (!irq_enabled) > return -EINVAL; > > - DRM_DEBUG("irq=%d\n", drm_dev_to_irq(dev)); > + DRM_DEBUG("irq=%d\n", dev->irq); > > if (!drm_core_check_feature(dev, DRIVER_MODESET)) > vga_client_register(dev->pdev, NULL, NULL, NULL); > @@ -352,7 +356,7 @@ int drm_irq_uninstall(struct drm_device *dev) > if (dev->driver->irq_uninstall) > dev->driver->irq_uninstall(dev); > > - free_irq(drm_dev_to_irq(dev), dev); > + free_irq(dev->irq, dev); > > return 0; > } > diff --git a/include/drm/drmP.h b/include/drm/drmP.h > index 8b23a34a103e..6f512cd97cd5 100644 > --- a/include/drm/drmP.h > +++ b/include/drm/drmP.h > @@ -1107,6 +1107,8 @@ struct drm_device { > /** \name Context support */ > /*@{ */ > bool irq_enabled; /**< True if irq handler is enabled */ > + int irq; > + > __volatile__ long context_flag; /**< Context swapping flag */ > int last_context; /**< Last current context */ > /*@} */ -- Regards, Laurent Pinchart
[PATCH 00/18] drm_bus cleanups and other cruft removal
Hi Daniel, On Friday 11 April 2014 23:35:57 Daniel Vetter wrote: > Hi all, > > I've chatted a bit with Thierry about how we could allow drivers to not even > required a drm_bus any more. Which is relevant when e.g. due to the new > master/component no platform device is conveniently around. > > So I've brushed off my old series to remove some drm_bus functions and other > cruft and rebased it onto latest drm-next. > > It gets rid of everything but drm_bus->set_busid, but Thierry has a good > plan to make that one optional too - it's only really needed for backwards > compat with some old libdrm versions on pci drm drivers. > > Comments and review highly welcome. > > Presuming no one screams I plan to send a pull request with these patches to > Dave fairly early for 3.16 so that Thierry can base his tegra rework on top > of it. Apart from a few comments on patch 10/16, there's nothing I could complain about. Great work, as usual :-) Reviewed-by: Laurent Pinchart -- Regards, Laurent Pinchart
[Bug 77533] commit: acf55e73252e46fa51378ef4b23c94a89902ae1c breaks radeonsi on linux
https://bugs.freedesktop.org/show_bug.cgi?id=77533 --- Comment #1 from Michel D?nzer --- Please attach the corresponding Xorg.0.log and output of glxinfo. It's hard to believe that commit causing the problem; it shouldn't make any functional difference. -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/5c672f82/attachment-0001.html>
[PATCHv3 1/5] drm: exynos: hdmi: remove usage of struct s5p_hdmi_platform_data
Hi Tomasz, On 04/17/2014 12:12 AM, Tomasz Stanislawski wrote: > This patch continues shift of DRM EXYNOS to DT-only configuration. > The usage of the old structure for HDMI's platform data is > removed. > > Signed-off-by: Tomasz Stanislawski > --- > drivers/gpu/drm/exynos/exynos_hdmi.c | 30 -- > 1 file changed, 8 insertions(+), 22 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c > b/drivers/gpu/drm/exynos/exynos_hdmi.c > index 9a6d652..482ca77 100644 > --- a/drivers/gpu/drm/exynos/exynos_hdmi.c > +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c > @@ -43,7 +43,6 @@ > #include "exynos_mixer.h" > > #include > -#include > > #define get_hdmi_display(dev) > platform_get_drvdata(to_platform_device(dev)) > #define ctx_from_connector(c) container_of(c, struct hdmi_context, > connector) > @@ -2011,28 +2010,18 @@ fail: > return -ENODEV; > } > > -static struct s5p_hdmi_platform_data *drm_hdmi_dt_parse_pdata > - (struct device *dev) > +static int drm_hdmi_dt_parse(struct hdmi_context *hdata, struct device_node > *np) > { > - struct device_node *np = dev->of_node; > - struct s5p_hdmi_platform_data *pd; > u32 value; > > - pd = devm_kzalloc(dev, sizeof(*pd), GFP_KERNEL); > - if (!pd) > - goto err_data; > - > if (!of_find_property(np, "hpd-gpio", &value)) { > DRM_ERROR("no hpd gpio property found\n"); > - goto err_data; > + return -ENOENT; > } > > - pd->hpd_gpio = of_get_named_gpio(np, "hpd-gpio", 0); > - > - return pd; > + hdata->hpd_gpio = of_get_named_gpio(np, "hpd-gpio", 0); > > -err_data: > - return NULL; > + return 0; > } > > static struct of_device_id hdmi_match_types[] = { > @@ -2051,7 +2040,6 @@ static int hdmi_probe(struct platform_device *pdev) > { > struct device *dev = &pdev->dev; > struct hdmi_context *hdata; > - struct s5p_hdmi_platform_data *pdata; > struct resource *res; > const struct of_device_id *match; > struct device_node *ddc_node, *phy_node; > @@ -2061,14 +2049,14 @@ static int hdmi_probe(struct platform_device *pdev) >if (!dev->of_node) > return -ENODEV; > > - pdata = drm_hdmi_dt_parse_pdata(dev); > - if (!pdata) > - return -EINVAL; > - > hdata = devm_kzalloc(dev, sizeof(struct hdmi_context), GFP_KERNEL); > if (!hdata) > return -ENOMEM; > > + ret = drm_hdmi_dt_parse(hdata, dev->of_node); > + if (ret) > + return -EINVAL; It's better to return ret value.
[Bug 77512] the start of upstream kernel is blocked at DRM/Radeon initialization
https://bugs.freedesktop.org/show_bug.cgi?id=77512 --- Comment #2 from XiongZhang --- Where is radeon firmware? How can I install radeon firmware? In my option, radeon firmware is the option rom on graphic card, my system must contain it, my system can display normally during bios, grub and kernel early phase. If I add nomodeset boot option, the system is ok using efifb driver. Anyway, the system is normal in kernel 3.13, but it is bad since kernel 3.14-rc1. It's better that radeon drm driver could handle this exception. -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/bcc71c01/attachment.html>
[PATCH 0/7 v2] various exynos cleanups
Some clean up patches for libdrm_exynos. V2: Removed the drm core patch. I'll resend that separately. All other patches are untouched. This set was previously Acked-by Inki Dae. I don't have push rights to libdrm. Can someone please help me land them upstream? Eric, I see that you just bestowed push permissions on Thierry Reding, so I'm CC'ing you in hope you'll do the same for me :-). Daniel Kurtz (7): eyxnos: install exynos tests if HAVE_INSTALL_TESTS exynos: fix two warnings exynos_fimg2d: fix cast from pointer to integer of different size exynos: remove unusable "run" target exynos_fimg2d_test: fix drmModeRmFB exynos: prime: use drmPrime*() helpers exynos: removed unused fd field exynos/exynos_drm.c | 52 +-- exynos/exynos_drmif.h | 2 -- exynos/exynos_fimg2d.c| 4 +-- tests/exynos/Makefile.am | 7 -- tests/exynos/exynos_fimg2d_test.c | 2 +- 5 files changed, 20 insertions(+), 47 deletions(-) -- 1.9.1.423.g4596e3a
[PATCH 0/7 v2] various exynos cleanups
Some clean up patches for libdrm_exynos. V2: Removed the drm core patch. I'll resend that separately. All other patches are untouched. This set was previously Acked-by Inki Dae. I don't have push rights to libdrm. Can someone please help me land them upstream? Daniel Kurtz (7): eyxnos: install exynos tests if HAVE_INSTALL_TESTS exynos: fix two warnings exynos_fimg2d: fix cast from pointer to integer of different size exynos: remove unusable "run" target exynos_fimg2d_test: fix drmModeRmFB exynos: prime: use drmPrime*() helpers exynos: removed unused fd field exynos/exynos_drm.c | 52 +-- exynos/exynos_drmif.h | 2 -- exynos/exynos_fimg2d.c| 4 +-- tests/exynos/Makefile.am | 7 -- tests/exynos/exynos_fimg2d_test.c | 2 +- 5 files changed, 20 insertions(+), 47 deletions(-) -- 1.9.1.423.g4596e3a
[PATCH 1/7] eyxnos: install exynos tests if HAVE_INSTALL_TESTS
This exynos test was added just before HAVE_INSTALL_TESTS, and so didn't get this annotation. Signed-off-by: Daniel Kurtz Acked-by: Inki Dae --- tests/exynos/Makefile.am | 5 + 1 file changed, 5 insertions(+) diff --git a/tests/exynos/Makefile.am b/tests/exynos/Makefile.am index bf9ad82..6703dcf 100644 --- a/tests/exynos/Makefile.am +++ b/tests/exynos/Makefile.am @@ -4,8 +4,13 @@ AM_CFLAGS = \ -I $(top_srcdir)/exynos \ -I $(top_srcdir) +if HAVE_INSTALL_TESTS +bin_PROGRAMS = \ + exynos_fimg2d_test +else noinst_PROGRAMS = \ exynos_fimg2d_test +endif exynos_fimg2d_test_LDADD = \ $(top_builddir)/libdrm.la \ -- 1.9.1.423.g4596e3a
[PATCH 2/7] exynos: fix two warnings
warning: assignment makes pointer from integer without a cast [enabled by default] warning: initialization makes integer from pointer without a cast [enabled by default] Signed-off-by: Daniel Kurtz Acked-by: Inki Dae --- exynos/exynos_drm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exynos/exynos_drm.c b/exynos/exynos_drm.c index 4db755e..b7acdf5 100644 --- a/exynos/exynos_drm.c +++ b/exynos/exynos_drm.c @@ -294,7 +294,7 @@ void *exynos_bo_map(struct exynos_bo *bo) return NULL; } - bo->vaddr = req.mapped; + bo->vaddr = (void *)(uintptr_t)req.mapped; } return bo->vaddr; @@ -381,7 +381,7 @@ int exynos_vidi_connection(struct exynos_device *dev, uint32_t connect, struct drm_exynos_vidi_connection req = { .connection = connect, .extensions = ext, - .edid = edid, + .edid = (uint64_t)(uintptr_t)edid, }; int ret; -- 1.9.1.423.g4596e3a
[PATCH 3/7] exynos_fimg2d: fix cast from pointer to integer of different size
Fixes two gcc [-Wpointer-to-int-cast] warnings. Signed-off-by: Daniel Kurtz Acked-by: Inki Dae --- exynos/exynos_fimg2d.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exynos/exynos_fimg2d.c b/exynos/exynos_fimg2d.c index cf712a8..0b14618 100644 --- a/exynos/exynos_fimg2d.c +++ b/exynos/exynos_fimg2d.c @@ -158,8 +158,8 @@ static int g2d_flush(struct g2d_context *ctx) memset(&cmdlist, 0, sizeof(struct drm_exynos_g2d_set_cmdlist)); - cmdlist.cmd = (unsigned int)&ctx->cmd[0]; - cmdlist.cmd_buf = (unsigned int)&ctx->cmd_buf[0]; + cmdlist.cmd = (uint64_t)(uintptr_t)&ctx->cmd[0]; + cmdlist.cmd_buf = (uint64_t)(uintptr_t)&ctx->cmd_buf[0]; cmdlist.cmd_nr = ctx->cmd_nr; cmdlist.cmd_buf_nr = ctx->cmd_buf_nr; cmdlist.event_type = G2D_EVENT_NOT; -- 1.9.1.423.g4596e3a
[PATCH 4/7] exynos: remove unusable "run" target
This looks like it was copied from kmstest, but isn't needed, and doesn't actually work since exynos_fimg2d_test requires parameters. Signed-off-by: Daniel Kurtz Acked-by: Inki Dae --- tests/exynos/Makefile.am | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/exynos/Makefile.am b/tests/exynos/Makefile.am index 6703dcf..518f00b 100644 --- a/tests/exynos/Makefile.am +++ b/tests/exynos/Makefile.am @@ -20,5 +20,3 @@ exynos_fimg2d_test_LDADD = \ exynos_fimg2d_test_SOURCES = \ exynos_fimg2d_test.c -run: exynos_fimg2d_test - ./exynos_fimg2d_test -- 1.9.1.423.g4596e3a
[PATCH 5/7] exynos_fimg2d_test: fix drmModeRmFB
The first parameter should be the drm fd, second param is the fb id. Signed-off-by: Daniel Kurtz Acked-by: Inki Dae --- tests/exynos/exynos_fimg2d_test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/exynos/exynos_fimg2d_test.c b/tests/exynos/exynos_fimg2d_test.c index e80455a..c6bd558 100644 --- a/tests/exynos/exynos_fimg2d_test.c +++ b/tests/exynos/exynos_fimg2d_test.c @@ -682,7 +682,7 @@ err_free_src: exynos_destroy_buffer(src); err_rm_fb: - drmModeRmFB(fb_id, bo->handle); + drmModeRmFB(dev->fd, fb_id); err_destroy_buffer: exynos_destroy_buffer(bo); -- 1.9.1.423.g4596e3a
[PATCH 6/7] exynos: prime: use drmPrime*() helpers
Reuse the common drmPrime() helper functions rather than reinventing them. Signed-off-by: Daniel Kurtz Acked-by: Inki Dae --- exynos/exynos_drm.c | 48 ++-- 1 file changed, 10 insertions(+), 38 deletions(-) diff --git a/exynos/exynos_drm.c b/exynos/exynos_drm.c index b7acdf5..5fff259 100644 --- a/exynos/exynos_drm.c +++ b/exynos/exynos_drm.c @@ -303,59 +303,31 @@ void *exynos_bo_map(struct exynos_bo *bo) /* * Export gem object to dmabuf as file descriptor. * - * @dev: a exynos device object. - * @handle: gem handle to be exported into dmabuf as file descriptor. - * @fd: file descriptor to dmabuf exported from gem handle and - * returned by kernel side. + * @dev: exynos device object + * @handle: gem handle to export as file descriptor of dmabuf + * @fd: file descriptor returned from kernel * - * if true, return 0 else negative. + * @return: 0 on success, -1 on error, and errno will be set */ int exynos_prime_handle_to_fd(struct exynos_device *dev, uint32_t handle, int *fd) { - int ret; - struct drm_prime_handle req = { - .handle = handle, - }; - - ret = drmIoctl(dev->fd, DRM_IOCTL_PRIME_HANDLE_TO_FD, &req); - if (ret) { - fprintf(stderr, "failed to mmap[%s].\n", - strerror(errno)); - return ret; - } - - *fd = req.fd; - return 0; + return drmPrimeHandleToFD(dev->fd, handle, 0, fd); } /* * Import file descriptor into gem handle. * - * @dev: a exynos device object. - * @fd: file descriptor exported into dmabuf. - * @handle: gem handle to gem object imported from file descriptor - * and returned by kernel side. + * @dev: exynos device object + * @fd: file descriptor of dmabuf to import + * @handle: gem handle returned from kernel * - * if true, return 0 else negative. + * @return: 0 on success, -1 on error, and errno will be set */ int exynos_prime_fd_to_handle(struct exynos_device *dev, int fd, uint32_t *handle) { - int ret; - struct drm_prime_handle req = { - .fd = fd, - }; - - ret = drmIoctl(dev->fd, DRM_IOCTL_PRIME_FD_TO_HANDLE, &req); - if (ret) { - fprintf(stderr, "failed to mmap[%s].\n", - strerror(errno)); - return ret; - } - - *handle = req.handle; - return 0; + return drmPrimeFDToHandle(dev->fd, fd, handle); } -- 1.9.1.423.g4596e3a
[PATCH 7/7] exynos: removed unused fd field
The documentation says fd holds the fd from prime import/export. However, it isn't actually used, nor is it necessary, so let's just remove it. Signed-off-by: Daniel Kurtz Acked-by: Inki Dae --- exynos/exynos_drmif.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/exynos/exynos_drmif.h b/exynos/exynos_drmif.h index 92f613e..c7c1d44 100644 --- a/exynos/exynos_drmif.h +++ b/exynos/exynos_drmif.h @@ -41,7 +41,6 @@ struct exynos_device { * @dev: exynos device object allocated. * @handle: a gem handle to gem object created. * @flags: indicate memory allocation and cache attribute types. - * @fd: file descriptor exported into dmabuf. * @size: size to the buffer created. * @vaddr: user space address to a gem buffer mmaped. * @name: a gem global handle from flink request. @@ -50,7 +49,6 @@ struct exynos_bo { struct exynos_device*dev; uint32_thandle; uint32_tflags; - int fd; size_t size; void*vaddr; uint32_tname; -- 1.9.1.423.g4596e3a
[PATCH] drmOpenByName: remove redundant drmAvailable check
drmOpenByName() is a static function that is only called by drmOpen(). drmOpen() already checks drmAvailable(), so the checki in drmOpenByName() is redundant. Signed-off-by: Daniel Kurtz --- xf86drm.c | 13 - 1 file changed, 13 deletions(-) diff --git a/xf86drm.c b/xf86drm.c index 720952f..118022c 100644 --- a/xf86drm.c +++ b/xf86drm.c @@ -537,19 +537,6 @@ static int drmOpenByName(const char *name) int fd; drmVersionPtr version; char *id; - -if (!drmAvailable()) { - if (!drm_server_info) { - return -1; - } - else { - /* try to load the kernel module now */ - if (!drm_server_info->load_module(name)) { - drmMsg("[drm] failed to load kernel module \"%s\"\n", name); - return -1; - } - } -} /* * Open the first minor number that matches the driver name and isn't -- 1.9.1.423.g4596e3a
[RFC PATCH 05/14] ARM: dts: samsung-fimd: add I80 specific properties
Hi Laurent Thank you for the comment. On 04/17/2014 06:26 AM, Laurent Pinchart wrote: > Hi YoungJun, > > Thank you for the patch. > > On Tuesday 15 April 2014 14:47:33 YoungJun Cho wrote: >> In case of using CPU interface panel, the relevant registers should be set. >> So this patch adds relevant dt bindings. >> >> Signed-off-by: YoungJun Cho >> Signed-off-by: Inki Dae >> Signed-off-by: Kyungmin Park >> --- >> .../devicetree/bindings/video/samsung-fimd.txt |9 + >> 1 file changed, 9 insertions(+) >> >> diff --git a/Documentation/devicetree/bindings/video/samsung-fimd.txt >> b/Documentation/devicetree/bindings/video/samsung-fimd.txt index >> 2dad41b..924c2e1 100644 >> --- a/Documentation/devicetree/bindings/video/samsung-fimd.txt >> +++ b/Documentation/devicetree/bindings/video/samsung-fimd.txt >> @@ -44,6 +44,15 @@ Optional Properties: >> - display-timings: timing settings for FIMD, as described in document [1]. >> Can be used in case timings cannot be provided otherwise >> or to override timings provided by the panel. >> +- samsung,sysreg-phandle: handle to syscon used to control the system Oops... I have to change "samsung,sysreg-phandle" to "samsung,sysreg". >> registers +- vidout-i80-ldi: boolean to support i80 interface instead of >> rgb one +- cs-setup: clock cycles for the active period of address signal >> enable until + chip select is enable in i80 interface >> +- wr-setup: clock cycles for the active period of CS signal enable until >> +write signal is enable in i80 interface >> +- wr-act: clock cycles for the active period of CS enable in i80 interface >> +- wr-hold: clock cycles for the active period of CS disable until write >> signal + is disable in i80 interface > > Shouldn't the interface parameters be considered as a property of the slave > device instead ? The bus master side is programmable, and different slaves > would have different timing requirements. I think it would make more sense to > specify the timings on the slave (panel) side and query them dynamically at > runtime. Depending on the slave the timings could be hardcoded in the driver > (as they're usually an intrinsic property of the slave) or partially or fully > specified in the slave DT node. > Yes, you're right. These properties are related to panel in a sense. But my intention is to use these properties to fimd node in the board specific dts file, because it decides the interface with panel and these are required by fimd only. If dynamic query is more logical approach, I should find some ways with considering probing order. Thank you. Best regards YJ >> The device node can contain 'port' child nodes according to the bindings >> defined in [2]. The following are properties specific to those nodes: >
[PATCH 3/5] drm/exynos: dpi: fix hotplug fail issue
When connector is created, if connector->polled is DRM_CONNECTOR_POLL_CONNECT then drm_kms_helper_hotplug_event function isn't called at drm_helper_hpd_irq_event because the function will be called only in case of DRM_CONNECTOR_POLL_HPD. So this patch sets always DRM_CONNECTOR_POLL_HPD flag to connector->polled of parallel panel driver at connector creation. Signed-off-by: Inki Dae Signed-off-by: Kyungmin Park --- drivers/gpu/drm/exynos/exynos_drm_dpi.c |5 + 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_dpi.c b/drivers/gpu/drm/exynos/exynos_drm_dpi.c index c1f4b35..ac206e7 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dpi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dpi.c @@ -123,10 +123,7 @@ static int exynos_dpi_create_connector(struct exynos_drm_display *display, ctx->encoder = encoder; - if (ctx->panel_node) - connector->polled = DRM_CONNECTOR_POLL_CONNECT; - else - connector->polled = DRM_CONNECTOR_POLL_HPD; + connector->polled = DRM_CONNECTOR_POLL_HPD; ret = drm_connector_init(encoder->dev, connector, &exynos_dpi_connector_funcs, -- 1.7.9.5
[PATCH 4/5] drm/exynos: fix comment to exynos_drm_device_subdrv_prove call
subdrv_probe callback of virtual display driver will be called by exynos_drm_device_subdrv_probe() to create crtc and encoder/connector for virtual display driver. So it fixes comments to exynos_drm_device_subdrv probe call. Signed-off-by: Inki Dae Signed-off-by: Kyungmin Park --- drivers/gpu/drm/exynos/exynos_drm_drv.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c index dc45881..6fa6f07 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c @@ -109,7 +109,7 @@ static int exynos_drm_load(struct drm_device *dev, unsigned long flags) if (ret) goto err_cleanup_vblank; - /* Probe non kms sub drivers. */ + /* Probe non kms sub drivers and virtual display driver. */ ret = exynos_drm_device_subdrv_probe(dev); if (ret) goto err_unbind_all; -- 1.7.9.5
[PATCH 2/5] drm/exynos: add component framework support
This patch adds component framework support to resolve the probe order issue. Until now, exynos drm had used codes specific to exynos drm to resolve that issue so with this patch, the specific codes are removed. Signed-off-by: Inki Dae --- drivers/gpu/drm/exynos/exynos_dp_core.c | 45 +++-- drivers/gpu/drm/exynos/exynos_drm_core.c | 216 - drivers/gpu/drm/exynos/exynos_drm_crtc.c | 17 ++ drivers/gpu/drm/exynos/exynos_drm_crtc.h |4 + drivers/gpu/drm/exynos/exynos_drm_dpi.c | 16 +- drivers/gpu/drm/exynos/exynos_drm_drv.c | 310 +++--- drivers/gpu/drm/exynos/exynos_drm_drv.h | 89 + drivers/gpu/drm/exynos/exynos_drm_dsi.c | 110 +++ drivers/gpu/drm/exynos/exynos_drm_fimd.c | 87 +++-- drivers/gpu/drm/exynos/exynos_drm_vidi.c | 101 -- drivers/gpu/drm/exynos/exynos_hdmi.c | 59 +++--- drivers/gpu/drm/exynos/exynos_mixer.c| 54 -- 12 files changed, 643 insertions(+), 465 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_dp_core.c b/drivers/gpu/drm/exynos/exynos_dp_core.c index aed533b..a97840c 100644 --- a/drivers/gpu/drm/exynos/exynos_dp_core.c +++ b/drivers/gpu/drm/exynos/exynos_dp_core.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -969,16 +970,6 @@ static struct drm_connector_helper_funcs exynos_dp_connector_helper_funcs = { .best_encoder = exynos_dp_best_encoder, }; -static int exynos_dp_initialize(struct exynos_drm_display *display, - struct drm_device *drm_dev) -{ - struct exynos_dp_device *dp = display->ctx; - - dp->drm_dev = drm_dev; - - return 0; -} - static bool find_bridge(const char *compat, struct bridge_init *bridge) { bridge->client = NULL; @@ -1106,7 +1097,6 @@ static void exynos_dp_dpms(struct exynos_drm_display *display, int mode) } static struct exynos_drm_display_ops exynos_dp_display_ops = { - .initialize = exynos_dp_initialize, .create_connector = exynos_dp_create_connector, .dpms = exynos_dp_dpms, }; @@ -1230,8 +1220,10 @@ static int exynos_dp_dt_parse_panel(struct exynos_dp_device *dp) return 0; } -static int exynos_dp_probe(struct platform_device *pdev) +static int exynos_dp_bind(struct device *dev, struct device *master, void *data) { + struct platform_device *pdev = to_platform_device(dev); + struct drm_device *drm_dev = data; struct resource *res; struct exynos_dp_device *dp; @@ -1293,21 +1285,40 @@ static int exynos_dp_probe(struct platform_device *pdev) } disable_irq(dp->irq); + dp->drm_dev = drm_dev; exynos_dp_display.ctx = dp; platform_set_drvdata(pdev, &exynos_dp_display); - exynos_drm_display_register(&exynos_dp_display); - return 0; + return exynos_drm_create_enc_conn(drm_dev, &exynos_dp_display); } -static int exynos_dp_remove(struct platform_device *pdev) +static void exynos_dp_unbind(struct device *dev, struct device *master, + void *data) { - struct exynos_drm_display *display = platform_get_drvdata(pdev); + struct exynos_drm_display *display = dev_get_drvdata(dev); + struct exynos_dp_device *dp = display->ctx; + struct drm_encoder *encoder = dp->encoder; exynos_dp_dpms(display, DRM_MODE_DPMS_OFF); - exynos_drm_display_unregister(&exynos_dp_display); + encoder->funcs->destroy(encoder); + drm_connector_cleanup(&dp->connector); +} + +static const struct component_ops exynos_dp_ops = { + .bind = exynos_dp_bind, + .unbind = exynos_dp_unbind, +}; + +static int exynos_dp_probe(struct platform_device *pdev) +{ + return exynos_drm_component_add(&pdev->dev, &exynos_dp_ops); +} + +static int exynos_dp_remove(struct platform_device *pdev) +{ + exynos_drm_component_del(&pdev->dev, &exynos_dp_ops); return 0; } diff --git a/drivers/gpu/drm/exynos/exynos_drm_core.c b/drivers/gpu/drm/exynos/exynos_drm_core.c index 0e9e06c..4c9f972 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_core.c +++ b/drivers/gpu/drm/exynos/exynos_drm_core.c @@ -19,21 +19,19 @@ #include "exynos_drm_fbdev.h" static LIST_HEAD(exynos_drm_subdrv_list); -static LIST_HEAD(exynos_drm_manager_list); -static LIST_HEAD(exynos_drm_display_list); -static int exynos_drm_create_enc_conn(struct drm_device *dev, +int exynos_drm_create_enc_conn(struct drm_device *dev, struct exynos_drm_display *display) { struct drm_encoder *encoder; - struct exynos_drm_manager *manager; int ret; unsigned long possible_crtcs = 0; - /* Find possible crtcs for this display */ - list_for_each_entry(manager, &exynos_drm_manager_list, list) - if (manager->type == display->type) - possible_crtcs |= 1 << manager->pipe; + ret = exynos_drm_cr
[PATCH 1/5] drm/exynos: modify goto labels to meaningful names
Signed-off-by: Inki Dae --- drivers/gpu/drm/exynos/exynos_drm_drv.c | 55 +++ 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c index 2d27ba2..b3ba043 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c @@ -447,139 +447,138 @@ static int __init exynos_drm_init(void) #ifdef CONFIG_DRM_EXYNOS_DP ret = platform_driver_register(&dp_driver); if (ret < 0) - goto out_dp; + return ret; #endif #ifdef CONFIG_DRM_EXYNOS_DSI ret = platform_driver_register(&dsi_driver); if (ret < 0) - goto out_dsi; + goto err_unregister_dp_drv; #endif #ifdef CONFIG_DRM_EXYNOS_FIMD ret = platform_driver_register(&fimd_driver); if (ret < 0) - goto out_fimd; + goto err_unregister_dsi_drv; #endif #ifdef CONFIG_DRM_EXYNOS_HDMI ret = platform_driver_register(&hdmi_driver); if (ret < 0) - goto out_hdmi; + goto err_unregister_fimd_drv; ret = platform_driver_register(&mixer_driver); if (ret < 0) - goto out_mixer; + goto err_unregister_hdmi_drv; #endif #ifdef CONFIG_DRM_EXYNOS_VIDI ret = platform_driver_register(&vidi_driver); if (ret < 0) - goto out_vidi; + goto err_unregister_mixer_drv; #endif #ifdef CONFIG_DRM_EXYNOS_G2D ret = platform_driver_register(&g2d_driver); if (ret < 0) - goto out_g2d; + goto err_unregister_vidi_drv; #endif #ifdef CONFIG_DRM_EXYNOS_FIMC ret = platform_driver_register(&fimc_driver); if (ret < 0) - goto out_fimc; + goto err_unregister_g2d_drv; #endif #ifdef CONFIG_DRM_EXYNOS_ROTATOR ret = platform_driver_register(&rotator_driver); if (ret < 0) - goto out_rotator; + goto err_unregister_fimc_drv; #endif #ifdef CONFIG_DRM_EXYNOS_GSC ret = platform_driver_register(&gsc_driver); if (ret < 0) - goto out_gsc; + goto err_unregister_rotator_drv; #endif #ifdef CONFIG_DRM_EXYNOS_IPP ret = platform_driver_register(&ipp_driver); if (ret < 0) - goto out_ipp; + goto err_unregister_gsc_drv; ret = exynos_platform_device_ipp_register(); if (ret < 0) - goto out_ipp_dev; + goto err_unregister_ipp_drv; #endif ret = platform_driver_register(&exynos_drm_platform_driver); if (ret < 0) - goto out_drm; + goto err_unregister_ipp_dev; exynos_drm_pdev = platform_device_register_simple("exynos-drm", -1, NULL, 0); if (IS_ERR(exynos_drm_pdev)) { ret = PTR_ERR(exynos_drm_pdev); - goto out; + goto err_unregister_drm_drv; } return 0; -out: +err_unregister_drm_drv: platform_driver_unregister(&exynos_drm_platform_driver); -out_drm: +err_unregister_ipp_dev: #ifdef CONFIG_DRM_EXYNOS_IPP exynos_platform_device_ipp_unregister(); -out_ipp_dev: +err_unregister_ipp_drv: platform_driver_unregister(&ipp_driver); -out_ipp: +err_unregister_gsc_drv: #endif #ifdef CONFIG_DRM_EXYNOS_GSC platform_driver_unregister(&gsc_driver); -out_gsc: +err_unregister_rotator_drv: #endif #ifdef CONFIG_DRM_EXYNOS_ROTATOR platform_driver_unregister(&rotator_driver); -out_rotator: +err_unregister_fimc_drv: #endif #ifdef CONFIG_DRM_EXYNOS_FIMC platform_driver_unregister(&fimc_driver); -out_fimc: +err_unregister_g2d_drv: #endif #ifdef CONFIG_DRM_EXYNOS_G2D platform_driver_unregister(&g2d_driver); -out_g2d: +err_unregister_vidi_drv: #endif #ifdef CONFIG_DRM_EXYNOS_VIDI platform_driver_unregister(&vidi_driver); -out_vidi: +err_unregister_mixer_drv: #endif #ifdef CONFIG_DRM_EXYNOS_HDMI platform_driver_unregister(&mixer_driver); -out_mixer: +err_unregister_hdmi_drv: platform_driver_unregister(&hdmi_driver); -out_hdmi: +err_unregister_fimd_drv: #endif #ifdef CONFIG_DRM_EXYNOS_FIMD platform_driver_unregister(&fimd_driver); -out_fimd: +err_unregister_dsi_drv: #endif #ifdef CONFIG_DRM_EXYNOS_DSI platform_driver_unregister(&dsi_driver); -out_dsi: +err_unregister_dp_drv: #endif #ifdef CONFIG_DRM_EXYNOS_DP platform_driver_unregister(&dp_driver); -out_dp: #endif return ret; } -- 1.7.9.5
[PATCH 0/5] drm/exynos: more cleanup with component framework
This patch series cleans up exynos drm framework and kms sub drivers using the component framework[1]. And also this separates super device support from previous cleanup patch series[2] for more discussion. So the patch series for super node support will be posted later. [1] http://lists.freedesktop.org/archives/dri-devel/2014-January/051249.html [2]http://www.spinics.net/lists/dri-devel/msg57401.html Thanks, Ink Dae Andrzej Hajda (1): drm/exynos: separate dpi from fimd Inki Dae (4): drm/exynos: modify goto labels to meaningful names drm/exynos: add component framework support drm/exynos: dpi: fix hotplug fail issue drm/exynos: fix comment to exynos_drm_device_subdrv_prove call drivers/gpu/drm/exynos/exynos_dp_core.c | 45 ++-- drivers/gpu/drm/exynos/exynos_drm_core.c | 216 --- drivers/gpu/drm/exynos/exynos_drm_crtc.c | 17 ++ drivers/gpu/drm/exynos/exynos_drm_crtc.h |4 + drivers/gpu/drm/exynos/exynos_drm_dpi.c | 51 +++-- drivers/gpu/drm/exynos/exynos_drm_drv.c | 339 +++--- drivers/gpu/drm/exynos/exynos_drm_drv.h | 80 --- drivers/gpu/drm/exynos/exynos_drm_dsi.c | 110 ++ drivers/gpu/drm/exynos/exynos_drm_fimd.c | 74 +-- drivers/gpu/drm/exynos/exynos_drm_vidi.c | 101 +++-- drivers/gpu/drm/exynos/exynos_hdmi.c | 59 -- drivers/gpu/drm/exynos/exynos_mixer.c| 54 - 12 files changed, 649 insertions(+), 501 deletions(-) -- 1.7.9.5
[PATCH 5/5] drm/exynos: separate dpi from fimd
From: Andrzej Hajda The patch separates dpi related routines from fimd. Changelog v2: - Rename ctx->dpi to ctx->display Signed-off-by: Andrzej Hajda Signed-off-by: Inki Dae --- drivers/gpu/drm/exynos/exynos_drm_dpi.c | 40 +-- drivers/gpu/drm/exynos/exynos_drm_drv.h | 15 ++-- drivers/gpu/drm/exynos/exynos_drm_fimd.c | 109 -- 3 files changed, 69 insertions(+), 95 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_dpi.c b/drivers/gpu/drm/exynos/exynos_drm_dpi.c index ac206e7..03cb126 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dpi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dpi.c @@ -40,20 +40,10 @@ exynos_dpi_detect(struct drm_connector *connector, bool force) { struct exynos_dpi *ctx = connector_to_dpi(connector); - /* panels supported only by boot-loader are always connected */ - if (!ctx->panel_node) - return connector_status_connected; - - if (!ctx->panel) { - ctx->panel = of_drm_find_panel(ctx->panel_node); - if (ctx->panel) - drm_panel_attach(ctx->panel, &ctx->connector); - } + if (!ctx->panel->connector) + drm_panel_attach(ctx->panel, &ctx->connector); - if (ctx->panel) - return connector_status_connected; - - return connector_status_disconnected; + return connector_status_connected; } static void exynos_dpi_connector_destroy(struct drm_connector *connector) @@ -291,8 +281,10 @@ static int exynos_dpi_parse_dt(struct exynos_dpi *ctx) return -ENOMEM; ret = of_get_videomode(dn, vm, 0); - if (ret < 0) + if (ret < 0) { + devm_kfree(dev, vm); return ret; + } ctx->vm = vm; @@ -305,27 +297,35 @@ static int exynos_dpi_parse_dt(struct exynos_dpi *ctx) return 0; } -int exynos_dpi_probe(struct drm_device *drm_dev, struct device *dev) +struct exynos_drm_display *exynos_dpi_probe(struct device *dev) { struct exynos_dpi *ctx; int ret; ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL); if (!ctx) - return -ENOMEM; + return NULL; ctx->dev = dev; exynos_dpi_display.ctx = ctx; ctx->dpms_mode = DRM_MODE_DPMS_OFF; ret = exynos_dpi_parse_dt(ctx); - if (ret < 0) - return ret; + if (ret < 0) { + devm_kfree(dev, ctx); + return NULL; + } + + if (ctx->panel_node) { + ctx->panel = of_drm_find_panel(ctx->panel_node); + if (!ctx->panel) + return ERR_PTR(-EPROBE_DEFER); + } - return exynos_drm_create_enc_conn(drm_dev, &exynos_dpi_display); + return &exynos_dpi_display; } -int exynos_dpi_remove(struct drm_device *drm_dev, struct device *dev) +int exynos_dpi_remove(struct device *dev) { struct drm_encoder *encoder = exynos_dpi_display.encoder; struct exynos_dpi *ctx = exynos_dpi_display.ctx; diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h b/drivers/gpu/drm/exynos/exynos_drm_drv.h index 3aee01b..d955f60 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.h +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h @@ -334,17 +334,12 @@ int exynos_platform_device_ipp_register(void); void exynos_platform_device_ipp_unregister(void); #ifdef CONFIG_DRM_EXYNOS_DPI -int exynos_dpi_probe(struct drm_device *drm_dev, struct device *dev); -int exynos_dpi_remove(struct drm_device *drm_dev, struct device *dev); -struct device_node *exynos_dpi_of_find_panel_node(struct device *dev); +struct exynos_drm_display * exynos_dpi_probe(struct device *dev); +int exynos_dpi_remove(struct device *dev); #else -static inline int exynos_dpi_probe(struct drm_device *drm_dev, - struct device *dev) { return 0; } -static inline int exynos_dpi_remove(struct drm_device *drm_dev, - struct device *dev) { return 0; } -static inline struct device_node - *exynos_dpi_of_find_panel_node(struct device *dev) -{ return NULL; } +static inline struct exynos_drm_display * +exynos_dpi_probe(struct device *dev) { return 0; } +static inline int exynos_dpi_remove(struct device *dev) { return 0; } #endif /* diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c index bab870c..a6d6386 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c @@ -24,7 +24,6 @@ #include #include #include -#include #include #include "exynos_drm_drv.h" @@ -124,6 +123,7 @@ struct fimd_context { struct exynos_drm_panel_info panel; struct fimd_driver_data *driver_data; + struct exynos_drm_display *display; }; static const struct of_device_id fimd_driver_dt_match[] = { @@ -853,12
[PATCH] drm/exynos: remove unnecessary runtime pm interfaces
Exyno drm driver has no real hardware device, and runtime pm operation should be done by sub drivers. Signed-off-by: Inki Dae Signed-off-by: Kyungmin Park --- drivers/gpu/drm/exynos/exynos_drm_drv.c | 29 - 1 file changed, 29 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c index 6fa6f07..ab8ffbb 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c @@ -378,34 +378,8 @@ static int exynos_drm_sys_resume(struct device *dev) } #endif -#ifdef CONFIG_PM_RUNTIME -static int exynos_drm_runtime_suspend(struct device *dev) -{ - struct drm_device *drm_dev = dev_get_drvdata(dev); - pm_message_t message; - - if (pm_runtime_suspended(dev)) - return 0; - - message.event = PM_EVENT_SUSPEND; - return exynos_drm_suspend(drm_dev, message); -} - -static int exynos_drm_runtime_resume(struct device *dev) -{ - struct drm_device *drm_dev = dev_get_drvdata(dev); - - if (!pm_runtime_suspended(dev)) - return 0; - - return exynos_drm_resume(drm_dev); -} -#endif - static const struct dev_pm_ops exynos_drm_pm_ops = { SET_SYSTEM_SLEEP_PM_OPS(exynos_drm_sys_suspend, exynos_drm_sys_resume) - SET_RUNTIME_PM_OPS(exynos_drm_runtime_suspend, - exynos_drm_runtime_resume, NULL) }; int exynos_drm_component_add(struct device *dev, @@ -488,9 +462,6 @@ static int exynos_drm_add_components(struct device *dev, struct master *m) static int exynos_drm_bind(struct device *dev) { - pm_runtime_enable(dev); - pm_runtime_get_sync(dev); - return drm_platform_init(&exynos_drm_driver, to_platform_device(dev)); } -- 1.7.9.5
[PATCH] drm/exynos: dsi: remove unnecessary pm interfaces
Exynos drm driver is a single driver so pm operation for kms drivers should be done by connector->dpms at top level driver. If kms driver has its own pm interfaces, single driver model would be broken so this patch removes unnecessary pm interfaces from dsi driver. Signed-off-by: Inki Dae Signed-off-by: Kyungmin Park --- drivers/gpu/drm/exynos/exynos_drm_dsi.c | 31 --- 1 file changed, 31 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index 09cc4bae..ae81124 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -1412,36 +1412,6 @@ static void exynos_dsi_unbind(struct device *dev, struct device *master, drm_connector_cleanup(&dsi->connector); } -#if CONFIG_PM_SLEEP -static int exynos_dsi_resume(struct device *dev) -{ - struct exynos_dsi *dsi = exynos_dsi_display.ctx; - - if (dsi->state & DSIM_STATE_ENABLED) { - dsi->state &= ~DSIM_STATE_ENABLED; - exynos_dsi_enable(dsi); - } - - return 0; -} - -static int exynos_dsi_suspend(struct device *dev) -{ - struct exynos_dsi *dsi = exynos_dsi_display.ctx; - - if (dsi->state & DSIM_STATE_ENABLED) { - exynos_dsi_disable(dsi); - dsi->state |= DSIM_STATE_ENABLED; - } - - return 0; -} -#endif - -static const struct dev_pm_ops exynos_dsi_pm_ops = { - SET_SYSTEM_SLEEP_PM_OPS(exynos_dsi_suspend, exynos_dsi_resume) -}; - static const struct component_ops exynos_dsi_component_ops = { .bind = exynos_dsi_bind, .unbind = exynos_dsi_unbind, @@ -1545,7 +1515,6 @@ struct platform_driver dsi_driver = { .driver = { .name = "exynos-dsi", .owner = THIS_MODULE, - .pm = &exynos_dsi_pm_ops, .of_match_table = exynos_dsi_of_match, }, }; -- 1.7.9.5
[PATCHv3 1/5] drm: exynos: hdmi: remove usage of struct s5p_hdmi_platform_data
Hi Joonyoung, On 04/17/2014 03:54 AM, Joonyoung Shim wrote: > Hi Tomasz, > > On 04/17/2014 12:12 AM, Tomasz Stanislawski wrote: >> This patch continues shift of DRM EXYNOS to DT-only configuration. >> The usage of the old structure for HDMI's platform data is >> removed. >> >> Signed-off-by: Tomasz Stanislawski [snip] >> +ret = drm_hdmi_dt_parse(hdata, dev->of_node); >> +if (ret) >> +return -EINVAL; > > It's better to return ret value. > I was considering return ret value. However, I preferred to be consistent with other 'returns' which returns error literals. Anyway, I will change it to 'return ret'. Regards, Tomasz Stanislawski
[Bug 77562] New: Display keep blank after resume
https://bugs.freedesktop.org/show_bug.cgi?id=77562 Priority: medium Bug ID: 77562 Assignee: dri-devel at lists.freedesktop.org Summary: Display keep blank after resume Severity: normal Classification: Unclassified OS: Linux (All) Reporter: rdp.effort at gmail.com Hardware: x86-64 (AMD64) Status: NEW Version: XOrg CVS Component: DRM/Radeon Product: DRI Created attachment 97496 --> https://bugs.freedesktop.org/attachment.cgi?id=97496&action=edit dmesg with dri.debug=4 I have a behaviour very similar to https://bugs.freedesktop.org/show_bug.cgi?id=42960. After resuming from suspend, display is blank. I have tried the tricks suggested in #42960 (acpi_sleep=s3_bios) with no luck, when I use that the laptop doesn't resume correctly. With the catalyst driver the display resumes correctly. It's an Ubuntu 13.10 with a 3.14 kernel, DPM is activated. Feel free to ask for tests. -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/3c188573/attachment.html>
[Bug 77562] Display keep blank after resume
https://bugs.freedesktop.org/show_bug.cgi?id=77562 --- Comment #1 from Hardening --- Created attachment 97497 --> https://bugs.freedesktop.org/attachment.cgi?id=97497&action=edit Xorg.0.log -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/6e4723f1/attachment.html>
[Bug 77562] Display keep blank after resume with radeon HD7310
https://bugs.freedesktop.org/show_bug.cgi?id=77562 Hardening changed: What|Removed |Added Summary|Display keep blank after|Display keep blank after |resume |resume with radeon HD7310 -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/b9271a13/attachment.html>
[Bug 77562] Display keep blank after resume with radeon HD7310
https://bugs.freedesktop.org/show_bug.cgi?id=77562 --- Comment #2 from Hardening --- Created attachment 97498 --> https://bugs.freedesktop.org/attachment.cgi?id=97498&action=edit lspci -v -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/9e2c154e/attachment-0001.html>
[PATCH] drm/fb-helper: Fix hpd vs. initial config races
On Wed, Apr 16, 2014 at 04:45:21PM +0200, Daniel Vetter wrote: > Some drivers need to be able to have a perfect race-free fbcon setup. > Current drivers only enable hotplug processing after the call to > drm_fb_helper_initial_config which leaves a tiny but important race. > > This race is especially noticable on embedded platforms where the > driver itself enables the voltage for the hdmi output, since only then > will monitors (after a bit of delay, as usual) respond by asserting > the hpd pin. > > Most of the infrastructure is already there with the split-out > drm_fb_helper_init. And drm_fb_helper_initial_config already has all > the required locking to handle concurrent hpd events since > > commit 53f1904bced78d7c00f5d874c662ec3ac85d0f9f > Author: Daniel Vetter > Date: Thu Mar 20 14:26:35 2014 +0100 > > drm/fb-helper: improve drm_fb_helper_initial_config locking > > The only missing bit is making drm_fb_helper_hotplug_event save > against concurrent calls of drm_fb_helper_initial_config. The only > unprotected bit is the check for fb_helper->fb. > > With that drivers can first initialize the fb helper, then enabel > hotplug processing and then set up the initial config all in a > completely race-free manner. Update kerneldoc and convert i915 as a > proof of concept. > > Feature requested by Thierry since his tegra driver atm reliably boots > slowly enough to misses the hotplug event for an external hdmi screen, > but also reliably boots to quickly for the hpd pin to be asserted when > the fb helper calls into the hdmi ->detect function. > > Cc: Thierry Reding > Signed-off-by: Daniel Vetter > --- > drivers/gpu/drm/drm_fb_helper.c | 11 +-- > drivers/gpu/drm/i915/i915_dma.c | 3 --- > drivers/gpu/drm/i915/i915_drv.c | 2 -- > drivers/gpu/drm/i915/i915_drv.h | 1 - > drivers/gpu/drm/i915/i915_irq.c | 4 > 5 files changed, 5 insertions(+), 16 deletions(-) The FB helper parts: Tested-by: Thierry Reding But I have one comment below... > diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c [...] > - * Note that the driver must ensure that this is only called _after_ the fb > has > - * been fully set up, i.e. after the call to drm_fb_helper_initial_config. > + * Note that drivers may call this even before calling > + * drm_fb_helper_initial_config but only aftert drm_fb_helper_init. This > allows I don't think the requirement is that strict. To elaborate: on Tegra we cannot call drm_fb_helper_init() because the number of CRTCs and connectors isn't known this early. We determine that dynamically after all sub-devices have been initialized. So instead of calling drm_fb_helper_init() before drm_kms_helper_poll_init(), I did something more minimal (see attached patch). It's kind of difficult to tell because of the context, but tegra_drm_fb_prepare() sets up the mode config and functions and allocate memory for the FB helper and sets the FB helper functions. This may not be enough for all drivers, but on Tegra the implementation of .output_poll_changed() simply calls drm_fb_helper_hotplug_event(), which will work fine with just that rudimentary initialization. Thierry -- next part -- A non-text attachment was scrubbed... Name: 0001-drm-tegra-Implement-race-free-hotplug-detection.patch Type: text/x-diff Size: 6077 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/74e1a373/attachment.patch> -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/74e1a373/attachment.sig>
[PATCH 0/6] drm/exynos: fixes for minor cleanup
This patches fix Exynos DRM for minor cleanup. This series is based on exynos-drm-next-todo branch of Inki Dae's tree. [1] [1] git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos.git Jingoo Han (6): drm/exynos: dpi: make local symbol static drm/exynos: fb: make local symbol static drm/exynos: hdmi: make local symbols static drm/exynos: dp: remove unnecessary OOM messages drm/exynos: dsi: use IS_ERR() to check devm_ioremap_resource() results drm/exynos: rotator: add missing braces --- drivers/gpu/drm/exynos/exynos_dp_core.c |8 ++-- drivers/gpu/drm/exynos/exynos_drm_dpi.c |2 +- drivers/gpu/drm/exynos/exynos_drm_dsi.c |4 ++-- drivers/gpu/drm/exynos/exynos_drm_fbdev.c |2 +- drivers/gpu/drm/exynos/exynos_drm_rotator.c |3 ++- drivers/gpu/drm/exynos/exynos_hdmi.c|4 ++-- 6 files changed, 10 insertions(+), 13 deletions(-)
[PATCH 1/6] drm/exynos: dpi: make local symbol static
Make local symbol static, because this is used only in this file. Signed-off-by: Jingoo Han --- drivers/gpu/drm/exynos/exynos_drm_dpi.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_dpi.c b/drivers/gpu/drm/exynos/exynos_drm_dpi.c index 03cb126..aefc828 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dpi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dpi.c @@ -242,7 +242,7 @@ enum { FIMD_PORT_WRB, }; -struct device_node *exynos_dpi_of_find_panel_node(struct device *dev) +static struct device_node *exynos_dpi_of_find_panel_node(struct device *dev) { struct device_node *np, *ep; -- 1.7.10.4
[PATCH 2/6] drm/exynos: fb: make local symbol static
Make local symbole static, because this is used only in this file. Signed-off-by: Jingoo Han --- drivers/gpu/drm/exynos/exynos_drm_fbdev.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c index addbf75..b64f331 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c @@ -237,7 +237,7 @@ static struct drm_fb_helper_funcs exynos_drm_fb_helper_funcs = { .fb_probe = exynos_drm_fbdev_create, }; -bool exynos_drm_fbdev_is_anything_connected(struct drm_device *dev) +static bool exynos_drm_fbdev_is_anything_connected(struct drm_device *dev) { struct drm_connector *connector; bool ret = false; -- 1.7.10.4
[PATCH 3/6] drm/exynos: hdmi: make local symbols static
Make local symbols static, because these are used only in this file. Signed-off-by: Jingoo Han --- drivers/gpu/drm/exynos/exynos_hdmi.c |4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c index 675996a..bffe24e 100644 --- a/drivers/gpu/drm/exynos/exynos_hdmi.c +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c @@ -206,11 +206,11 @@ struct hdmiphy_config { u8 conf[32]; }; -struct hdmi_driver_data exynos4212_hdmi_driver_data = { +static struct hdmi_driver_data exynos4212_hdmi_driver_data = { .type = HDMI_TYPE14, }; -struct hdmi_driver_data exynos5_hdmi_driver_data = { +static struct hdmi_driver_data exynos5_hdmi_driver_data = { .type = HDMI_TYPE14, }; -- 1.7.10.4
[PATCH 4/6] drm/exynos: dp: remove unnecessary OOM messages
The site-specific OOM messages are unnecessary, because they duplicate the MM subsystem generic OOM message. Signed-off-by: Jingoo Han --- drivers/gpu/drm/exynos/exynos_dp_core.c |8 ++-- 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_dp_core.c b/drivers/gpu/drm/exynos/exynos_dp_core.c index a97840c..5e2262f 100644 --- a/drivers/gpu/drm/exynos/exynos_dp_core.c +++ b/drivers/gpu/drm/exynos/exynos_dp_core.c @@ -1113,10 +1113,8 @@ static struct video_info *exynos_dp_dt_parse_pdata(struct device *dev) dp_video_config = devm_kzalloc(dev, sizeof(*dp_video_config), GFP_KERNEL); - if (!dp_video_config) { - dev_err(dev, "memory allocation for video config failed\n"); + if (!dp_video_config) return ERR_PTR(-ENOMEM); - } dp_video_config->h_sync_polarity = of_property_read_bool(dp_node, "hsync-active-high"); @@ -1231,10 +1229,8 @@ static int exynos_dp_bind(struct device *dev, struct device *master, void *data) dp = devm_kzalloc(&pdev->dev, sizeof(struct exynos_dp_device), GFP_KERNEL); - if (!dp) { - dev_err(&pdev->dev, "no memory for device data\n"); + if (!dp) return -ENOMEM; - } dp->dev = &pdev->dev; dp->dpms_mode = DRM_MODE_DPMS_OFF; -- 1.7.10.4
[PATCH 5/6] drm/exynos: dsi: use IS_ERR() to check devm_ioremap_resource() results
devm_ioremap_resource() retunrs an error pointer, not NULL. Thus, the result should be checked with IS_ERR(). Signed-off-by: Jingoo Han --- drivers/gpu/drm/exynos/exynos_drm_dsi.c |4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index ae81124..84661fe 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -1465,9 +1465,9 @@ static int exynos_dsi_probe(struct platform_device *pdev) res = platform_get_resource(pdev, IORESOURCE_MEM, 0); dsi->reg_base = devm_ioremap_resource(&pdev->dev, res); - if (!dsi->reg_base) { + if (IS_ERR(dsi->reg_base)) { dev_err(&pdev->dev, "failed to remap io region\n"); - return -EADDRNOTAVAIL; + return PTR_ERR(dsi->reg_base); } dsi->phy = devm_phy_get(&pdev->dev, "dsim"); -- 1.7.10.4
[PATCH 6/6] drm/exynos: rotator: add missing braces
In the case of that only one branch of a conditional statement is a single statement, braces are added to both branches. Signed-off-by: Jingoo Han --- drivers/gpu/drm/exynos/exynos_drm_rotator.c |3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_rotator.c b/drivers/gpu/drm/exynos/exynos_drm_rotator.c index 7b90168..c675427 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_rotator.c +++ b/drivers/gpu/drm/exynos/exynos_drm_rotator.c @@ -158,8 +158,9 @@ static irqreturn_t rotator_irq_handler(int irq, void *arg) rot->cur_buf_id[EXYNOS_DRM_OPS_DST]; queue_work(ippdrv->event_workq, (struct work_struct *)event_work); - } else + } else { DRM_ERROR("the SFR is set illegally\n"); + } return IRQ_HANDLED; } -- 1.7.10.4
[PATCH RFC 0/3] drm/exynos: refactoring drm initialization/cleanup code
Hi, The patchset presents alternative approach to superdevice DT node and components framework. It also refactors Exynos DRM device initialization. The first patch uses linker sections to get rid of ifdef macros, it is not essential for the rest of patchset but it makes code more readable. Similar approach is used by irqchip, clks and clk_sources. Any comments are welcome, especially regarding linker script usage in drivers. The second patch proposes pending_components framework - lightweight alternative for componentized devices. Details are described in the patch description. But as it is an alternative for component framework I would like to show differences: - it is simpler and more straightforward, - it requires only minimal changes to component drivers, - only one callback to implement, - no unwinding, component framework in case of error removes all already added components and unbinds all already bound components, - it is instantiated per superdevice, component framework uses global list, the disadvantage is that we create dependency between components and the superdevice, but in case of Exynos DRM the dependency is present already, - no two stage component initialization: probe, bind, - it is more lightweight, - it clearly separates device probing order issue from registering interfaces provided by the device. The third patch implements pending_components framework in Exynos DRM. Details are in patch description. The patchset is based on exynos-drm-next branch. Regards Andrzej Andrzej Hajda (3): drm/exynos: refactor drm drivers registration code drivers/base: provide lightweight framework for componentized devices drm/exynos: use pending_components for components tracking drivers/base/Kconfig| 3 + drivers/base/Makefile | 1 + drivers/base/pending_components.c | 93 +++ drivers/gpu/drm/exynos/Kconfig | 1 + drivers/gpu/drm/exynos/Makefile | 2 + drivers/gpu/drm/exynos/exynos_dp_core.c | 38 +++-- drivers/gpu/drm/exynos/exynos_drm.lds.S | 9 + drivers/gpu/drm/exynos/exynos_drm_drv.c | 250 ++-- drivers/gpu/drm/exynos/exynos_drm_drv.h | 33 ++-- drivers/gpu/drm/exynos/exynos_drm_dsi.c | 43 +++-- drivers/gpu/drm/exynos/exynos_drm_fimc.c| 36 ++-- drivers/gpu/drm/exynos/exynos_drm_fimd.c| 39 +++-- drivers/gpu/drm/exynos/exynos_drm_g2d.c | 19 ++- drivers/gpu/drm/exynos/exynos_drm_gsc.c | 32 ++-- drivers/gpu/drm/exynos/exynos_drm_ipp.c | 20 ++- drivers/gpu/drm/exynos/exynos_drm_rotator.c | 29 +++- drivers/gpu/drm/exynos/exynos_drm_vidi.c| 18 +- drivers/gpu/drm/exynos/exynos_hdmi.c| 55 -- drivers/gpu/drm/exynos/exynos_mixer.c | 15 +- include/linux/pending_components.h | 30 20 files changed, 466 insertions(+), 300 deletions(-) create mode 100644 drivers/base/pending_components.c create mode 100644 drivers/gpu/drm/exynos/exynos_drm.lds.S create mode 100644 include/linux/pending_components.h -- 1.8.3.2
[PATCH RFC 1/3] drm/exynos: refactor drm drivers registration code
The patch removes driver registration code based on preprocessor conditionals. Instead it uses private linker section to create array of drm drivers. Signed-off-by: Andrzej Hajda --- v2: - minor fixes of compilation issues --- drivers/gpu/drm/exynos/Makefile | 2 + drivers/gpu/drm/exynos/exynos_dp_core.c | 2 +- drivers/gpu/drm/exynos/exynos_drm.lds.S | 9 ++ drivers/gpu/drm/exynos/exynos_drm_drv.c | 203 +--- drivers/gpu/drm/exynos/exynos_drm_drv.h | 30 ++-- drivers/gpu/drm/exynos/exynos_drm_dsi.c | 2 +- drivers/gpu/drm/exynos/exynos_drm_fimc.c| 2 +- drivers/gpu/drm/exynos/exynos_drm_fimd.c| 2 +- drivers/gpu/drm/exynos/exynos_drm_g2d.c | 2 +- drivers/gpu/drm/exynos/exynos_drm_gsc.c | 2 +- drivers/gpu/drm/exynos/exynos_drm_ipp.c | 2 +- drivers/gpu/drm/exynos/exynos_drm_rotator.c | 2 +- drivers/gpu/drm/exynos/exynos_drm_vidi.c| 2 +- drivers/gpu/drm/exynos/exynos_hdmi.c| 2 +- drivers/gpu/drm/exynos/exynos_mixer.c | 2 +- 15 files changed, 68 insertions(+), 198 deletions(-) create mode 100644 drivers/gpu/drm/exynos/exynos_drm.lds.S diff --git a/drivers/gpu/drm/exynos/Makefile b/drivers/gpu/drm/exynos/Makefile index 33ae365..c8190c1 100644 --- a/drivers/gpu/drm/exynos/Makefile +++ b/drivers/gpu/drm/exynos/Makefile @@ -22,4 +22,6 @@ exynosdrm-$(CONFIG_DRM_EXYNOS_FIMC) += exynos_drm_fimc.o exynosdrm-$(CONFIG_DRM_EXYNOS_ROTATOR) += exynos_drm_rotator.o exynosdrm-$(CONFIG_DRM_EXYNOS_GSC) += exynos_drm_gsc.o +exynosdrm-y+= exynos_drm.lds + obj-$(CONFIG_DRM_EXYNOS) += exynosdrm.o diff --git a/drivers/gpu/drm/exynos/exynos_dp_core.c b/drivers/gpu/drm/exynos/exynos_dp_core.c index aed533b..9385e96 100644 --- a/drivers/gpu/drm/exynos/exynos_dp_core.c +++ b/drivers/gpu/drm/exynos/exynos_dp_core.c @@ -1340,7 +1340,7 @@ static const struct of_device_id exynos_dp_match[] = { {}, }; -struct platform_driver dp_driver = { +EXYNOS_DRM_DRV(dp_driver) = { .probe = exynos_dp_probe, .remove = exynos_dp_remove, .driver = { diff --git a/drivers/gpu/drm/exynos/exynos_drm.lds.S b/drivers/gpu/drm/exynos/exynos_drm.lds.S new file mode 100644 index 000..fd37dc1 --- /dev/null +++ b/drivers/gpu/drm/exynos/exynos_drm.lds.S @@ -0,0 +1,9 @@ +SECTIONS +{ + .data : { + . = ALIGN(8); + exynos_drm_drivers = .; + *(exynos_drm_drivers) + *(exynos_drm_drivers_last) + } +} diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c index 2d27ba2..5067b32 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c @@ -430,7 +430,7 @@ static const struct dev_pm_ops exynos_drm_pm_ops = { exynos_drm_runtime_resume, NULL) }; -static struct platform_driver exynos_drm_platform_driver = { +EXYNOS_DRM_DRV_LAST(exynos_drm_drv) = { .probe = exynos_drm_platform_probe, .remove = exynos_drm_platform_remove, .driver = { @@ -440,197 +440,64 @@ static struct platform_driver exynos_drm_platform_driver = { }, }; -static int __init exynos_drm_init(void) +static int exynos_platform_device_drm_register(void) { - int ret; - -#ifdef CONFIG_DRM_EXYNOS_DP - ret = platform_driver_register(&dp_driver); - if (ret < 0) - goto out_dp; -#endif - -#ifdef CONFIG_DRM_EXYNOS_DSI - ret = platform_driver_register(&dsi_driver); - if (ret < 0) - goto out_dsi; -#endif - -#ifdef CONFIG_DRM_EXYNOS_FIMD - ret = platform_driver_register(&fimd_driver); - if (ret < 0) - goto out_fimd; -#endif - -#ifdef CONFIG_DRM_EXYNOS_HDMI - ret = platform_driver_register(&hdmi_driver); - if (ret < 0) - goto out_hdmi; - ret = platform_driver_register(&mixer_driver); - if (ret < 0) - goto out_mixer; -#endif - -#ifdef CONFIG_DRM_EXYNOS_VIDI - ret = platform_driver_register(&vidi_driver); - if (ret < 0) - goto out_vidi; -#endif - -#ifdef CONFIG_DRM_EXYNOS_G2D - ret = platform_driver_register(&g2d_driver); - if (ret < 0) - goto out_g2d; -#endif + exynos_drm_pdev = platform_device_register_simple("exynos-drm", -1, + NULL, 0); + if (IS_ERR(exynos_drm_pdev)) + return PTR_ERR(exynos_drm_pdev); -#ifdef CONFIG_DRM_EXYNOS_FIMC - ret = platform_driver_register(&fimc_driver); - if (ret < 0) - goto out_fimc; -#endif + return 0; +} -#ifdef CONFIG_DRM_EXYNOS_ROTATOR - ret = platform_driver_register(&rotator_driver); - if (ret < 0) - goto out_rotator; -#endif +static void exynos_platform_device_drm_unregister(void) +{ + plat
[PATCH RFC 2/3] drivers/base: provide lightweight framework for componentized devices
Many subsystems (eg. DRM, ALSA) requires that multiple devices should be composed into one superdevice. The superdevice cannot start until all components are ready and it should stop before any of its components becomes not-ready. This framework provides a way to track readiness of all components with minimal impact on the code of the drivers. The superdevice provides pending_components structure and adds all components to it, device drivers removes themselves from the list if they becomes ready. If the list becomes empty callback is fired which causes superdevice to start. Later if any components wants to become not-ready it adds again itself to the list and callback is fired to stop superdevice. Signed-off-by: Andrzej Hajda --- drivers/base/Kconfig | 3 ++ drivers/base/Makefile | 1 + drivers/base/pending_components.c | 93 ++ include/linux/pending_components.h | 30 4 files changed, 127 insertions(+) create mode 100644 drivers/base/pending_components.c create mode 100644 include/linux/pending_components.h diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig index ec36e77..71ce050 100644 --- a/drivers/base/Kconfig +++ b/drivers/base/Kconfig @@ -278,4 +278,7 @@ config CMA_AREAS endif +config PENDING_COMPONENTS + boolean + endmenu diff --git a/drivers/base/Makefile b/drivers/base/Makefile index 04b314e..3a51654 100644 --- a/drivers/base/Makefile +++ b/drivers/base/Makefile @@ -22,6 +22,7 @@ obj-$(CONFIG_SYS_HYPERVISOR) += hypervisor.o obj-$(CONFIG_REGMAP) += regmap/ obj-$(CONFIG_SOC_BUS) += soc.o obj-$(CONFIG_PINCTRL) += pinctrl.o +obj-$(CONFIG_PENDING_COMPONENTS) += pending_components.o ccflags-$(CONFIG_DEBUG_DRIVER) := -DDEBUG diff --git a/drivers/base/pending_components.c b/drivers/base/pending_components.c new file mode 100644 index 000..f15104e --- /dev/null +++ b/drivers/base/pending_components.c @@ -0,0 +1,93 @@ +/* + * Lightweight framework for handling componentized devices. + * + * Copyright (c) 2014 Samsung Electronics Co., Ltd + * Andrzej Hajda + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * pending_components structure contains list of components which are not yet + * ready. Components can remove or add themselves from/to the list. If the list + * becomes empty/non-empty optional callback is fired. +*/ + +#include +#include + +struct pending_components_node { + struct list_head list; + void *data; +}; + +int pending_components_insert(struct pending_components *set, void *item) +{ + struct pending_components_node *n; + int ret = 0; + + mutex_lock(&set->lock); + + list_for_each_entry(n, &set->list, list) { + if (n->data == item) + goto out; + } + + n = kmalloc(sizeof(*n), GFP_KERNEL); + if (!n) { + ret = -ENOMEM; + goto out; + } + + n->data = item; + list_add_tail(&n->list, &set->list); + if (set->callback && set->list.next == set->list.prev) + ret = set->callback(set, false); + +out: + mutex_unlock(&set->lock); + + return ret; +} + +int pending_components_delete(struct pending_components *set, void *item) +{ + struct pending_components_node *n; + int ret = 0; + + mutex_lock(&set->lock); + + list_for_each_entry(n, &set->list, list) { + if (n->data == item) { + list_del(&n->list); + kfree(n); + if (set->callback && list_empty(&set->list)) + ret = set->callback(set, true); + break; + } + } + + mutex_unlock(&set->lock); + + return ret; +} + +void pending_components_set_callback(struct pending_components *set, +pending_components_callback cb) +{ + mutex_lock(&set->lock); + + set->callback = cb; + + mutex_unlock(&set->lock); +} + +void pending_components_cleanup(struct pending_components *set) +{ + struct pending_components_node *n, *tmp; + + list_for_each_entry_safe(n, tmp, &set->list, list) { + list_del(&n->list); + kfree(n); + } +} diff --git a/include/linux/pending_components.h b/include/linux/pending_components.h new file mode 100644 index 000..dd29616 --- /dev/null +++ b/include/linux/pending_components.h @@ -0,0 +1,30 @@ +#ifndef PENDING_COMPONENTS_H +#define PENDING_COMPONENTS_H + +#include +#include + +struct pending_components; + +typedef int (*pending_components_callback)(struct pending_components *set, + bool empty); + +struct pending_components { + struct mutex lock; + struct list_head list; + pending_components
[PATCH RFC 3/3] drm/exynos: use pending_components for components tracking
exynos_drm is composed from multiple devices which provides different interfaces. To properly start/stop drm master device it should track readiness of all its components. This patch uses pending_components framework to perform this task. On module initialization before component driver registration all devices matching drivers are added to pending_components. Drivers during probe are removed from the list unless deferred probe happens. When list becomes empty callback is fired to start drm master. Later if any device adds itself to the list callback is fired to stop drm master. The core of the changes is in exynos_drm_drv.c. Driver modifications are limited only to signal its readiness in probe and remove driver callbacks. Signed-off-by: Andrzej Hajda --- drivers/gpu/drm/exynos/Kconfig | 1 + drivers/gpu/drm/exynos/exynos_dp_core.c | 36 +++-- drivers/gpu/drm/exynos/exynos_drm_drv.c | 61 +++-- drivers/gpu/drm/exynos/exynos_drm_drv.h | 3 ++ drivers/gpu/drm/exynos/exynos_drm_dsi.c | 41 +++ drivers/gpu/drm/exynos/exynos_drm_fimc.c| 34 ++-- drivers/gpu/drm/exynos/exynos_drm_fimd.c| 37 +++-- drivers/gpu/drm/exynos/exynos_drm_g2d.c | 17 ++-- drivers/gpu/drm/exynos/exynos_drm_gsc.c | 30 +- drivers/gpu/drm/exynos/exynos_drm_ipp.c | 18 ++--- drivers/gpu/drm/exynos/exynos_drm_rotator.c | 27 + drivers/gpu/drm/exynos/exynos_drm_vidi.c| 16 +--- drivers/gpu/drm/exynos/exynos_hdmi.c| 53 + drivers/gpu/drm/exynos/exynos_mixer.c | 13 -- 14 files changed, 278 insertions(+), 109 deletions(-) diff --git a/drivers/gpu/drm/exynos/Kconfig b/drivers/gpu/drm/exynos/Kconfig index 5bf5bca..4ed8eb2 100644 --- a/drivers/gpu/drm/exynos/Kconfig +++ b/drivers/gpu/drm/exynos/Kconfig @@ -8,6 +8,7 @@ config DRM_EXYNOS select FB_CFB_IMAGEBLIT select VT_HW_CONSOLE_BINDING if FRAMEBUFFER_CONSOLE select VIDEOMODE_HELPERS + select PENDING_COMPONENTS help Choose this option if you have a Samsung SoC EXYNOS chipset. If M is selected the module will be called exynosdrm. diff --git a/drivers/gpu/drm/exynos/exynos_dp_core.c b/drivers/gpu/drm/exynos/exynos_dp_core.c index 9385e96..24f5c98 100644 --- a/drivers/gpu/drm/exynos/exynos_dp_core.c +++ b/drivers/gpu/drm/exynos/exynos_dp_core.c @@ -1240,29 +1240,32 @@ static int exynos_dp_probe(struct platform_device *pdev) dp = devm_kzalloc(&pdev->dev, sizeof(struct exynos_dp_device), GFP_KERNEL); if (!dp) { - dev_err(&pdev->dev, "no memory for device data\n"); - return -ENOMEM; + ret = -ENOMEM; + goto out; } dp->dev = &pdev->dev; dp->dpms_mode = DRM_MODE_DPMS_OFF; dp->video_info = exynos_dp_dt_parse_pdata(&pdev->dev); - if (IS_ERR(dp->video_info)) - return PTR_ERR(dp->video_info); + if (IS_ERR(dp->video_info)) { + ret = PTR_ERR(dp->video_info); + goto out; + } ret = exynos_dp_dt_parse_phydata(dp); if (ret) - return ret; + goto out; ret = exynos_dp_dt_parse_panel(dp); if (ret) - return ret; + goto out; dp->clock = devm_clk_get(&pdev->dev, "dp"); if (IS_ERR(dp->clock)) { dev_err(&pdev->dev, "failed to get clock\n"); - return PTR_ERR(dp->clock); + ret = PTR_ERR(dp->clock); + goto out; } clk_prepare_enable(dp->clock); @@ -1270,13 +1273,16 @@ static int exynos_dp_probe(struct platform_device *pdev) res = platform_get_resource(pdev, IORESOURCE_MEM, 0); dp->reg_base = devm_ioremap_resource(&pdev->dev, res); - if (IS_ERR(dp->reg_base)) - return PTR_ERR(dp->reg_base); + if (IS_ERR(dp->reg_base)) { + ret = PTR_ERR(dp->reg_base); + goto out; + } dp->irq = platform_get_irq(pdev, 0); if (dp->irq == -ENXIO) { dev_err(&pdev->dev, "failed to get irq\n"); - return -ENODEV; + ret = -ENODEV; + goto out; } INIT_WORK(&dp->hotplug_work, exynos_dp_hotplug); @@ -1289,7 +1295,7 @@ static int exynos_dp_probe(struct platform_device *pdev) "exynos-dp", dp); if (ret) { dev_err(&pdev->dev, "failed to request irq\n"); - return ret; + goto out; } disable_irq(dp->irq); @@ -1298,13 +1304,19 @@ static int exynos_dp_probe(struct platform_device *pdev) platform_set_drvdata(pdev, &exynos_dp_display); exynos_drm_display_register(&exynos_dp_display); - return 0; +out: + if (ret != -EPROBE_DEFER) +
[RFC PATCH v2 05/14] ARM: dts: samsung-fimd: add I80 specific properties
In case of using CPU interface panel, the relevant registers should be set. So this patch adds relevant dt bindings. Changelog v2: - Changes "samsung,sysreg-phandle" to "samsung,sysreg" Signed-off-by: YoungJun Cho Signed-off-by: Inki Dae Signed-off-by: Kyungmin Park --- .../devicetree/bindings/video/samsung-fimd.txt |9 + 1 file changed, 9 insertions(+) diff --git a/Documentation/devicetree/bindings/video/samsung-fimd.txt b/Documentation/devicetree/bindings/video/samsung-fimd.txt index 2dad41b..6ea1adc 100644 --- a/Documentation/devicetree/bindings/video/samsung-fimd.txt +++ b/Documentation/devicetree/bindings/video/samsung-fimd.txt @@ -44,6 +44,15 @@ Optional Properties: - display-timings: timing settings for FIMD, as described in document [1]. Can be used in case timings cannot be provided otherwise or to override timings provided by the panel. +- samsung,sysreg: handle to syscon used to control the system registers +- vidout-i80-ldi: boolean to support i80 interface instead of rgb one +- cs-setup: clock cycles for the active period of address signal enable until + chip select is enable in i80 interface +- wr-setup: clock cycles for the active period of CS signal enable until + write signal is enable in i80 interface +- wr-act: clock cycles for the active period of CS enable in i80 interface +- wr-hold: clock cycles for the active period of CS disable until write signal + is disable in i80 interface The device node can contain 'port' child nodes according to the bindings defined in [2]. The following are properties specific to those nodes: -- 1.7.9.5
[RFC PATCH v3 09/14] ARM: dts: s6e3fa0: add DT bindings
This patch adds DT bindings for s6e3fa0 panel. The bindings describes panel resources, display timings, delays and physical size. Changelog v2: - Adds unit address (commented by Sachin Kamat) Changelog v3: - Removes optional delay, size properties (commented by Laurent Pinchart) - Adds OLED detection, TE gpio properties Signed-off-by: YoungJun Cho Signed-off-by: Inki Dae Signed-off-by: Kyungmin Park --- .../devicetree/bindings/panel/samsung,s6e3fa0.txt | 46 1 file changed, 46 insertions(+) create mode 100644 Documentation/devicetree/bindings/panel/samsung,s6e3fa0.txt diff --git a/Documentation/devicetree/bindings/panel/samsung,s6e3fa0.txt b/Documentation/devicetree/bindings/panel/samsung,s6e3fa0.txt new file mode 100644 index 000..8aabeca --- /dev/null +++ b/Documentation/devicetree/bindings/panel/samsung,s6e3fa0.txt @@ -0,0 +1,46 @@ +Samsung S6E3FA0 AMOLED LCD 5.7 inch panel + +Required properties: + - compatible: "samsung,s6e3fa0" + - reg: the virtual channel number of a DSI peripheral + - vdd3-supply: core voltage supply + - vci-supply: voltage supply for analog circuits + - reset-gpio: a GPIO spec for the reset pin + - det-gpio: a GPIO spec for the OLED detection pin + - te-gpio: a GPIO spec for the TE pin + - display-timings: timings for the connected panel as described by [1] + +Optional properties: + +The device node can contain one 'port' child node with one child +'endpoint' node, according to the bindings defined in [2]. This +node should describe panel's video bus. + +[1]: Documentation/devicetree/bindings/video/display-timing.txt +[2]: Documentation/devicetree/bindings/media/video-interfaces.txt + +Example: + + panel at 0 { + compatible = "samsung,s6e3fa0"; + reg = <0>; + vdd3-supply = <&vcclcd_reg>; + vci-supply = <&vlcd_reg>; + reset-gpio = <&gpy7 4 0>; + det-gpio = <&gpg0 6 0>; + te-gpio = <&gpd1 7 0>; + + display-timings { + timing0: timing-0 { + clock-frequency = <0>; + hactive = <1080>; + vactive = <1920>; + hfront-porch = <2>; + hback-porch = <2>; + hsync-len = <1>; + vfront-porch = <1>; + vback-porch = <4>; + vsync-len = <1>; + }; + }; + }; -- 1.7.9.5
[RFC PATCH v3 10/14] drm/panel: add S6E3FA0 driver
This patch adds MIPI-DSI command mode based S6E3FA0 AMOLED LCD Panel driver. Changelog v2: - Declares delay, size properties in probe routine instead of DT Signed-off-by: YoungJun Cho Signed-off-by: Inki Dae Signed-off-by: Kyungmin Park --- drivers/gpu/drm/panel/Kconfig |7 + drivers/gpu/drm/panel/Makefile|1 + drivers/gpu/drm/panel/panel-s6e3fa0.c | 547 + 3 files changed, 555 insertions(+) create mode 100644 drivers/gpu/drm/panel/panel-s6e3fa0.c diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig index 4ec874d..be1392e 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig @@ -30,4 +30,11 @@ config DRM_PANEL_S6E8AA0 select DRM_MIPI_DSI select VIDEOMODE_HELPERS +config DRM_PANEL_S6E3FA0 + tristate "S6E3FA0 DSI command mode panel" + depends on DRM && DRM_PANEL + depends on OF + select DRM_MIPI_DSI + select VIDEOMODE_HELPERS + endmenu diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile index 8b92921..85c6738 100644 --- a/drivers/gpu/drm/panel/Makefile +++ b/drivers/gpu/drm/panel/Makefile @@ -1,3 +1,4 @@ obj-$(CONFIG_DRM_PANEL_SIMPLE) += panel-simple.o obj-$(CONFIG_DRM_PANEL_LD9040) += panel-ld9040.o obj-$(CONFIG_DRM_PANEL_S6E8AA0) += panel-s6e8aa0.o +obj-$(CONFIG_DRM_PANEL_S6E3FA0) += panel-s6e3fa0.o diff --git a/drivers/gpu/drm/panel/panel-s6e3fa0.c b/drivers/gpu/drm/panel/panel-s6e3fa0.c new file mode 100644 index 000..4014951 --- /dev/null +++ b/drivers/gpu/drm/panel/panel-s6e3fa0.c @@ -0,0 +1,547 @@ +/* + * MIPI-DSI based s6e3fa0 AMOLED LCD 5.7 inch panel driver. + * + * Copyright (c) 2014 Samsung Electronics Co., Ltd + * + * YoungJun Cho + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#define MTP_ID_LEN 3 +#define GAMMA_LEVEL_NUM30 + +struct s6e3fa0 { + struct device *dev; + struct drm_panelpanel; + + struct regulator_bulk_data supplies[2]; + struct gpio_desc*reset_gpio; + struct gpio_desc*det_gpio; + struct gpio_desc*te_gpio; + struct videomodevm; + + unsigned intpower_on_delay; + unsigned intreset_delay; + unsigned intinit_delay; + unsigned intwidth_mm; + unsigned intheight_mm; + + unsigned char id; + unsigned char vddm; + unsigned intbrightness; +}; + +#define panel_to_s6e3fa0(p) container_of(p, struct s6e3fa0, panel) + +static const unsigned char s6e3fa0_vddm_lut[][2] = { + {0x00, 0x0d}, {0x01, 0x0d}, {0x02, 0x0e}, {0x03, 0x0f}, {0x04, 0x10}, + {0x05, 0x11}, {0x06, 0x12}, {0x07, 0x13}, {0x08, 0x14}, {0x09, 0x15}, + {0x0a, 0x16}, {0x0b, 0x17}, {0x0c, 0x18}, {0x0d, 0x19}, {0x0e, 0x1a}, + {0x0f, 0x1b}, {0x10, 0x1c}, {0x11, 0x1d}, {0x12, 0x1e}, {0x13, 0x1f}, + {0x14, 0x20}, {0x15, 0x21}, {0x16, 0x22}, {0x17, 0x23}, {0x18, 0x24}, + {0x19, 0x25}, {0x1a, 0x26}, {0x1b, 0x27}, {0x1c, 0x28}, {0x1d, 0x29}, + {0x1e, 0x2a}, {0x1f, 0x2b}, {0x20, 0x2c}, {0x21, 0x2d}, {0x22, 0x2e}, + {0x23, 0x2f}, {0x24, 0x30}, {0x25, 0x31}, {0x26, 0x32}, {0x27, 0x33}, + {0x28, 0x34}, {0x29, 0x35}, {0x2a, 0x36}, {0x2b, 0x37}, {0x2c, 0x38}, + {0x2d, 0x39}, {0x2e, 0x3a}, {0x2f, 0x3b}, {0x30, 0x3c}, {0x31, 0x3d}, + {0x32, 0x3e}, {0x33, 0x3f}, {0x34, 0x3f}, {0x35, 0x3f}, {0x36, 0x3f}, + {0x37, 0x3f}, {0x38, 0x3f}, {0x39, 0x3f}, {0x3a, 0x3f}, {0x3b, 0x3f}, + {0x3c, 0x3f}, {0x3d, 0x3f}, {0x3e, 0x3f}, {0x3f, 0x3f}, {0x40, 0x0c}, + {0x41, 0x0b}, {0x42, 0x0a}, {0x43, 0x09}, {0x44, 0x08}, {0x45, 0x07}, + {0x46, 0x06}, {0x47, 0x05}, {0x48, 0x04}, {0x49, 0x03}, {0x4a, 0x02}, + {0x4b, 0x01}, {0x4c, 0x40}, {0x4d, 0x41}, {0x4e, 0x42}, {0x4f, 0x43}, + {0x50, 0x44}, {0x51, 0x45}, {0x52, 0x46}, {0x53, 0x47}, {0x54, 0x48}, + {0x55, 0x49}, {0x56, 0x4a}, {0x57, 0x4b}, {0x58, 0x4c}, {0x59, 0x4d}, + {0x5a, 0x4e}, {0x5b, 0x4f}, {0x5c, 0x50}, {0x5d, 0x51}, {0x5e, 0x52}, + {0x5f, 0x53}, {0x60, 0x54}, {0x61, 0x55}, {0x62, 0x56}, {0x63, 0x57}, + {0x64, 0x58}, {0x65, 0x59}, {0x66, 0x5a}, {0x67, 0x5b}, {0x68, 0x5c}, + {0x69, 0x5d}, {0x6a, 0x5e}, {0x6b, 0x5f}, {0x6c, 0x60}, {0x6d, 0x61}, + {0x6e, 0x62}, {0x6f, 0x63}, {0x70, 0x64}, {0x71, 0x65}, {0x72, 0x66}, + {0x73, 0x67}, {0x74, 0x68}, {0x75, 0x69}, {0x76, 0x6a}, {0x77, 0x6b}, + {0x78, 0x6c}, {0x79, 0x6d}, {0x7a, 0x6e}, {0x7b, 0x6f}, {0x7c, 0x70}, +
[PATCH 0/3] drm/tegra: Use standard suffix for hotplug detect GPIO property
From: Thierry Reding The hotplug detect GPIO in the current bindings use "-gpio" as suffix, whereas the standard suffix is the plural: "-gpios". This small series replaces this in three steps to preserve bisectability: - Patch 1 adds new nvidia,hpd-gpios properties to existing device tree files while marking existing nvidia,hpd-gpio ones as deprecated. - Patch 2 makes use of the new property name in the driver and updates the device tree bindings. - Patch 3 removes the deprecated properties from device tree files. Since this touches both DRM and Tegra trees, I've prepared a stable branch[0] that can be pulled into both trees to make the transition easier. Thierry [0]: git://anongit.freedesktop.org/tegra/linux#drm/tegra/hpd-gpios-property Thierry Reding (3): ARM: tegra: Deprecate nvidia,hpd-gpio property drm/tegra: Use nvidia,hpd-gpios property ARM: tegra: Remove deprecated nvidia,hpd-gpio properties Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt | 8 arch/arm/boot/dts/tegra114-dalmore.dts | 2 +- arch/arm/boot/dts/tegra20-colibri-512.dtsi | 4 ++-- arch/arm/boot/dts/tegra20-harmony.dts | 4 ++-- arch/arm/boot/dts/tegra20-paz00.dts | 4 ++-- arch/arm/boot/dts/tegra20-seaboard.dts | 4 ++-- arch/arm/boot/dts/tegra20-tamonten.dtsi | 4 ++-- arch/arm/boot/dts/tegra20-trimslice.dts | 4 ++-- arch/arm/boot/dts/tegra20-ventana.dts | 4 ++-- arch/arm/boot/dts/tegra20-whistler.dts | 4 ++-- arch/arm/boot/dts/tegra30-beaver.dts| 2 +- drivers/gpu/drm/tegra/output.c | 2 +- 12 files changed, 23 insertions(+), 23 deletions(-) -- 1.9.2
[PATCH 1/3] ARM: tegra: Deprecate nvidia,hpd-gpio property
From: Thierry Reding Properties referencing GPIOs should use the plural suffix -gpios. This convention is encoded in the device tree backend of gpiod_get(), which we'll eventually want to migrate to. Rename the property to nvidia,hpd-gpios but keep (and deprecate) the old name to preserve bisectability. Signed-off-by: Thierry Reding --- arch/arm/boot/dts/tegra114-dalmore.dts | 4 arch/arm/boot/dts/tegra20-colibri-512.dtsi | 4 arch/arm/boot/dts/tegra20-harmony.dts | 4 arch/arm/boot/dts/tegra20-paz00.dts| 4 arch/arm/boot/dts/tegra20-seaboard.dts | 4 arch/arm/boot/dts/tegra20-tamonten.dtsi| 4 arch/arm/boot/dts/tegra20-trimslice.dts| 4 arch/arm/boot/dts/tegra20-ventana.dts | 4 arch/arm/boot/dts/tegra20-whistler.dts | 4 arch/arm/boot/dts/tegra30-beaver.dts | 6 +- 10 files changed, 41 insertions(+), 1 deletion(-) diff --git a/arch/arm/boot/dts/tegra114-dalmore.dts b/arch/arm/boot/dts/tegra114-dalmore.dts index a288a12823ed..c1e5eb33847a 100644 --- a/arch/arm/boot/dts/tegra114-dalmore.dts +++ b/arch/arm/boot/dts/tegra114-dalmore.dts @@ -29,6 +29,10 @@ pll-supply = <&palmas_smps3_reg>; nvidia,ddc-i2c-bus = <&hdmi_ddc>; + nvidia,hpd-gpios = + <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; + + /* deprecated */ nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; }; diff --git a/arch/arm/boot/dts/tegra20-colibri-512.dtsi b/arch/arm/boot/dts/tegra20-colibri-512.dtsi index 8e0066ad9628..57b9b0d08123 100644 --- a/arch/arm/boot/dts/tegra20-colibri-512.dtsi +++ b/arch/arm/boot/dts/tegra20-colibri-512.dtsi @@ -19,6 +19,10 @@ pll-supply = <&hdmi_pll_reg>; nvidia,ddc-i2c-bus = <&i2c_ddc>; + nvidia,hpd-gpios = + <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; + + /* deprecated */ nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; }; diff --git a/arch/arm/boot/dts/tegra20-harmony.dts b/arch/arm/boot/dts/tegra20-harmony.dts index 3fb1f50f6d46..f62fe7059bca 100644 --- a/arch/arm/boot/dts/tegra20-harmony.dts +++ b/arch/arm/boot/dts/tegra20-harmony.dts @@ -32,6 +32,10 @@ pll-supply = <&hdmi_pll_reg>; nvidia,ddc-i2c-bus = <&hdmi_ddc>; + nvidia,hpd-gpios = + <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; + + /* deprecated */ nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; }; diff --git a/arch/arm/boot/dts/tegra20-paz00.dts b/arch/arm/boot/dts/tegra20-paz00.dts index 9a39a8001f78..196578fd007a 100644 --- a/arch/arm/boot/dts/tegra20-paz00.dts +++ b/arch/arm/boot/dts/tegra20-paz00.dts @@ -32,6 +32,10 @@ pll-supply = <&hdmi_pll_reg>; nvidia,ddc-i2c-bus = <&hdmi_ddc>; + nvidia,hpd-gpios = + <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; + + /* deprecated */ nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; }; diff --git a/arch/arm/boot/dts/tegra20-seaboard.dts b/arch/arm/boot/dts/tegra20-seaboard.dts index a1d4bf9895d7..7a69d5f4f55d 100644 --- a/arch/arm/boot/dts/tegra20-seaboard.dts +++ b/arch/arm/boot/dts/tegra20-seaboard.dts @@ -32,6 +32,10 @@ pll-supply = <&hdmi_pll_reg>; nvidia,ddc-i2c-bus = <&hdmi_ddc>; + nvidia,hpd-gpios = + <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; + + /* deprecated */ nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; }; diff --git a/arch/arm/boot/dts/tegra20-tamonten.dtsi b/arch/arm/boot/dts/tegra20-tamonten.dtsi index a1b0d965757f..af582f8fd636 100644 --- a/arch/arm/boot/dts/tegra20-tamonten.dtsi +++ b/arch/arm/boot/dts/tegra20-tamonten.dtsi @@ -19,6 +19,10 @@ pll-supply = <&hdmi_pll_reg>; nvidia,ddc-i2c-bus = <&hdmi_ddc>; + nvidia,hpd-gpios = + <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; + + /* deprecated */ nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; }; diff --git a/arch/arm/boot/dts/tegra20-trimslice.dts b/arch/arm/boot/dts/tegra20-trimslice.dts index 216fa6d50c65..4ab1eea59efe 100644 --- a/arch
[PATCH 2/3] drm/tegra: Use nvidia,hpd-gpios property
From: Thierry Reding Make use of the new nvidia,hpd-gpios property and remove support for the deprecated nvidia,hpd-gpio property. Signed-off-by: Thierry Reding --- Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt | 8 drivers/gpu/drm/tegra/output.c | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt b/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt index efa8b8451f93..81cdc7f4f5b1 100644 --- a/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt +++ b/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt @@ -126,7 +126,7 @@ of the following host1x client modules: the RGB output associated with the controller. It can take the following optional properties: - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing - - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection + - nvidia,hpd-gpios: specifies a GPIO used for hotplug detection - nvidia,edid: supplies a binary EDID blob - nvidia,panel: phandle of a display panel @@ -151,7 +151,7 @@ of the following host1x client modules: Optional properties: - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing - - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection + - nvidia,hpd-gpios: specifies a GPIO used for hotplug detection - nvidia,edid: supplies a binary EDID blob - nvidia,panel: phandle of a display panel @@ -186,7 +186,7 @@ of the following host1x client modules: Optional properties: - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing - - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection + - nvidia,hpd-gpios: specifies a GPIO used for hotplug detection - nvidia,edid: supplies a binary EDID blob - nvidia,panel: phandle of a display panel @@ -210,7 +210,7 @@ of the following host1x client modules: Optional properties: - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing - - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection + - nvidia,hpd-gpios: specifies a GPIO used for hotplug detection - nvidia,edid: supplies a binary EDID blob - nvidia,panel: phandle of a display panel diff --git a/drivers/gpu/drm/tegra/output.c b/drivers/gpu/drm/tegra/output.c index a3e4f1eca6f7..e8f50d57c95d 100644 --- a/drivers/gpu/drm/tegra/output.c +++ b/drivers/gpu/drm/tegra/output.c @@ -223,7 +223,7 @@ int tegra_output_probe(struct tegra_output *output) } output->hpd_gpio = of_get_named_gpio_flags(output->of_node, - "nvidia,hpd-gpio", 0, + "nvidia,hpd-gpios", 0, &flags); if (gpio_is_valid(output->hpd_gpio)) { unsigned long flags; -- 1.9.2
[PATCH 3/3] ARM: tegra: Remove deprecated nvidia,hpd-gpio properties
From: Thierry Reding This property has been replaced by one with a more standard name (nvidia,hpd-gpios) and is now obsolete. Signed-off-by: Thierry Reding --- arch/arm/boot/dts/tegra114-dalmore.dts | 4 arch/arm/boot/dts/tegra20-colibri-512.dtsi | 4 arch/arm/boot/dts/tegra20-harmony.dts | 4 arch/arm/boot/dts/tegra20-paz00.dts| 4 arch/arm/boot/dts/tegra20-seaboard.dts | 4 arch/arm/boot/dts/tegra20-tamonten.dtsi| 4 arch/arm/boot/dts/tegra20-trimslice.dts| 4 arch/arm/boot/dts/tegra20-ventana.dts | 4 arch/arm/boot/dts/tegra20-whistler.dts | 4 arch/arm/boot/dts/tegra30-beaver.dts | 4 10 files changed, 40 deletions(-) diff --git a/arch/arm/boot/dts/tegra114-dalmore.dts b/arch/arm/boot/dts/tegra114-dalmore.dts index c1e5eb33847a..df22dfad7db7 100644 --- a/arch/arm/boot/dts/tegra114-dalmore.dts +++ b/arch/arm/boot/dts/tegra114-dalmore.dts @@ -31,10 +31,6 @@ nvidia,ddc-i2c-bus = <&hdmi_ddc>; nvidia,hpd-gpios = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; - - /* deprecated */ - nvidia,hpd-gpio = - <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; }; dsi at 5430 { diff --git a/arch/arm/boot/dts/tegra20-colibri-512.dtsi b/arch/arm/boot/dts/tegra20-colibri-512.dtsi index 57b9b0d08123..7ab61aef11e0 100644 --- a/arch/arm/boot/dts/tegra20-colibri-512.dtsi +++ b/arch/arm/boot/dts/tegra20-colibri-512.dtsi @@ -21,10 +21,6 @@ nvidia,ddc-i2c-bus = <&i2c_ddc>; nvidia,hpd-gpios = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; - - /* deprecated */ - nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7) - GPIO_ACTIVE_HIGH>; }; }; diff --git a/arch/arm/boot/dts/tegra20-harmony.dts b/arch/arm/boot/dts/tegra20-harmony.dts index f62fe7059bca..650daf16c37b 100644 --- a/arch/arm/boot/dts/tegra20-harmony.dts +++ b/arch/arm/boot/dts/tegra20-harmony.dts @@ -34,10 +34,6 @@ nvidia,ddc-i2c-bus = <&hdmi_ddc>; nvidia,hpd-gpios = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; - - /* deprecated */ - nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7) - GPIO_ACTIVE_HIGH>; }; }; diff --git a/arch/arm/boot/dts/tegra20-paz00.dts b/arch/arm/boot/dts/tegra20-paz00.dts index 196578fd007a..80f1827b219c 100644 --- a/arch/arm/boot/dts/tegra20-paz00.dts +++ b/arch/arm/boot/dts/tegra20-paz00.dts @@ -34,10 +34,6 @@ nvidia,ddc-i2c-bus = <&hdmi_ddc>; nvidia,hpd-gpios = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; - - /* deprecated */ - nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7) - GPIO_ACTIVE_HIGH>; }; }; diff --git a/arch/arm/boot/dts/tegra20-seaboard.dts b/arch/arm/boot/dts/tegra20-seaboard.dts index 7a69d5f4f55d..aa97216a2683 100644 --- a/arch/arm/boot/dts/tegra20-seaboard.dts +++ b/arch/arm/boot/dts/tegra20-seaboard.dts @@ -34,10 +34,6 @@ nvidia,ddc-i2c-bus = <&hdmi_ddc>; nvidia,hpd-gpios = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; - - /* deprecated */ - nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7) - GPIO_ACTIVE_HIGH>; }; }; diff --git a/arch/arm/boot/dts/tegra20-tamonten.dtsi b/arch/arm/boot/dts/tegra20-tamonten.dtsi index af582f8fd636..72f07a20aec3 100644 --- a/arch/arm/boot/dts/tegra20-tamonten.dtsi +++ b/arch/arm/boot/dts/tegra20-tamonten.dtsi @@ -21,10 +21,6 @@ nvidia,ddc-i2c-bus = <&hdmi_ddc>; nvidia,hpd-gpios = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; - - /* deprecated */ - nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7) - GPIO_ACTIVE_HIGH>; }; }; diff --git a/arch/arm/boot/dts/tegra20-trimslice.dts b/arch/arm/boot/dts/tegra20-trimslice.dts index 4ab1eea59efe..2affa75c0803 100644 --- a/arch/arm/boot/dts/tegra20-trimslice.dts +++ b/arch/arm/boot/dts/tegra20-trimslice.dts @@ -26,10 +26,6 @@ nvidia,ddc-i2c-bus = <&hdmi_ddc>; nvidia,hpd-gpios = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; - - /* deprecated */ - nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7) - GPIO_ACTIVE_HIGH>;
[Bug 77562] Display keep blank after resume with radeon HD7310
https://bugs.freedesktop.org/show_bug.cgi?id=77562 Alex Deucher changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |DUPLICATE --- Comment #3 from Alex Deucher --- *** This bug has been marked as a duplicate of bug 42960 *** -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/6b3f6184/attachment-0001.html>
[Bug 42960] Display does not work when resuming from suspend
https://bugs.freedesktop.org/show_bug.cgi?id=42960 Alex Deucher changed: What|Removed |Added CC||rdp.effort at gmail.com --- Comment #37 from Alex Deucher --- *** Bug 77562 has been marked as a duplicate of this bug. *** -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/fd1b21b6/attachment.html>
[PATCH] drm/panel/ld9040: add power control sequence
Hi Inki, Could you pick up this patch into the fixes branch. Regards Andrzej On 04/08/2014 12:58 PM, Andrzej Hajda wrote: > Some ld9040 panels do not start without providing power control sequence > during initialization. The patch fixes the driver by providing such > sequence for all panels. > > Signed-off-by: Andrzej Hajda > --- > drivers/gpu/drm/panel/panel-ld9040.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/gpu/drm/panel/panel-ld9040.c > b/drivers/gpu/drm/panel/panel-ld9040.c > index 1f1f837..db1601f 100644 > --- a/drivers/gpu/drm/panel/panel-ld9040.c > +++ b/drivers/gpu/drm/panel/panel-ld9040.c > @@ -27,6 +27,7 @@ > #define MCS_ELVSS_ON 0xb1 > #define MCS_USER_SETTING 0xf0 > #define MCS_DISPCTL 0xf2 > +#define MCS_POWER_CTRL 0xf4 > #define MCS_GTCON0xf7 > #define MCS_PANEL_CONDITION 0xf8 > #define MCS_GAMMA_SET1 0xf9 > @@ -182,6 +183,8 @@ static void ld9040_init(struct ld9040 *ctx) > ld9040_dcs_write_seq_static(ctx, MCS_DISPCTL, > 0x02, 0x08, 0x08, 0x10, 0x10); > ld9040_dcs_write_seq_static(ctx, MCS_MANPWR, 0x04); > + ld9040_dcs_write_seq_static(ctx, MCS_POWER_CTRL, > + 0x0a, 0x87, 0x25, 0x6a, 0x44, 0x02, 0x88); > ld9040_dcs_write_seq_static(ctx, MCS_ELVSS_ON, 0x0d, 0x00, 0x16); > ld9040_dcs_write_seq_static(ctx, MCS_GTCON, 0x09, 0x00, 0x00); > ld9040_brightness_set(ctx);
[Bug 77512] the start of upstream kernel is blocked at DRM/Radeon initialization
https://bugs.freedesktop.org/show_bug.cgi?id=77512 --- Comment #3 from Alex Deucher --- It's included in the linux-firmware tree. The firmware is required for proper option of the gpu beyond basic bios services (high bandwidth displays, acceleration, etc.). -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/814df997/attachment.html>
[Bug 75276] Implement VGPR Register Spilling
https://bugs.freedesktop.org/show_bug.cgi?id=75276 --- Comment #3 from Christoph Haag --- (In reply to comment #2) > Tom put up an LLVM Git branch: > http://cgit.freedesktop.org/~tstellar/llvm/log/?h=si-spill-fixes Newest mesa git needs a newer llvm than your branch: gallivm/lp_bld_debug.cpp: In function 'size_t disassemble(const void*, llvm::raw_ostream&)': gallivm/lp_bld_debug.cpp:255:79: error: no matching function for call to 'llvm::Target::createMCDisassembler(const llvm::MCSubtargetInfo&, llvm::MCContext&) const' -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/59bbffee/attachment.html>
[GIT PULL] drm/tegra: Fixes for v3.15-rc2
Hi Dave, The following changes since commit c9eaa447e77efe77b7fa4c953bd62de8297fd6c5: Linux 3.15-rc1 (2014-04-13 14:18:35 -0700) are available in the git repository at: git://anongit.freedesktop.org/tegra/linux tags/drm/tegra/for-3.15-rc2 for you to fetch changes up to cbfbbabb89b37f6bad05f478d906a385149f288d: drm/tegra: Remove gratuitous pad field (2014-04-16 17:11:04 +0200) Thanks, Thierry drm/tegra: Fixes for v3.15-rc2 This contains a fix for the host1x driver writing to non-existent syncpt registers. A second commit removes an excess pad field in the parameter structure for the DRM_TEGRA_SUBMIT IOCTL. Archeaology on earlier versions of this file indicates that this was once there to pad an uneven number of u32 u32 fields, of which one was subsequently removed. Unfortunately nobody remembered to get rid of the padding when that happened. Both of these commits are Cc: stable because they fix issues that were introduced back in v3.10. Stephen Warren (1): gpu: host1x: handle the correct # of syncpt regs Thierry Reding (1): drm/tegra: Remove gratuitous pad field drivers/gpu/host1x/hw/intr_hw.c | 4 ++-- include/uapi/drm/tegra_drm.h| 1 - 2 files changed, 2 insertions(+), 3 deletions(-) -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/1d4f3c66/attachment.sig>
REGRESSION: OOPS: Intel Corporation Core Processor Integrated Graphics Controller, Linux HEAD when powering off internal Laptop display on t410s and extending and rotating external screen
On Thu, 17 Apr 2014, Thomas Glanzmann wrote: > Hello, > I have t410s with an internal Intel graphic card. I have the > Laptop display (LVDS1) and an external HP ZR2440W Monitor connected to > the Display port. I pulled yesterday git head which probably contains a > DRI changes which lead to PANIC. Before that even with a 3.15.0-rc1+ it > was working. Hi Thomas, please bisect, it's likely the quickest way to root cause this. (Google for "git bisect kernel" for a bunch of guides on the topic if you're not familiar with bisect.) BR, Jani. > > The internal display is at 1440x900, the external as well, both are not > rotated. I want to disable the internal display, change the resolution > of the external display to 1920x1200 and rotate it. So I execute the > commands: > > xrandr --output DP1 --mode 1920x1200 > xrandr --output LVDS1 --off > xrandr -o 1 > > If I do that I get: > > [0.00] Initializing cgroup subsys cpuset > [0.00] Initializing cgroup subsys cpu > [0.00] Initializing cgroup subsys cpuacct > [0.00] Linux version 3.15.0-rc1+ (sithglan at lenovo) (gcc version > 4.7.2 (Debian 4.7.2-5) ) #66 SMP Wed Apr 16 17:16:33 CEST 2014 > [0.00] Command line: > BOOT_IMAGE=/home/sithglan/work/linux-2.6/arch/x86/boot/bzImage > root=UUID=e79cc073-026a-4671-a065-63e2391ff974 ro nomodeset intel.modeset=0 > [0.00] e820: BIOS-provided physical RAM map: > [0.00] BIOS-e820: [mem 0x-0x0009e7ff] usable > [0.00] BIOS-e820: [mem 0x0009e800-0x0009] reserved > [0.00] BIOS-e820: [mem 0x000dc000-0x000f] reserved > [0.00] BIOS-e820: [mem 0x0010-0xbb27bfff] usable > [0.00] BIOS-e820: [mem 0xbb27c000-0xbb281fff] reserved > [0.00] BIOS-e820: [mem 0xbb282000-0xbb35efff] usable > [0.00] BIOS-e820: [mem 0xbb35f000-0xbb370fff] reserved > [0.00] BIOS-e820: [mem 0xbb371000-0xbb3f1fff] ACPI NVS > [0.00] BIOS-e820: [mem 0xbb3f2000-0xbb40efff] reserved > [0.00] BIOS-e820: [mem 0xbb40f000-0xbb46efff] usable > [0.00] BIOS-e820: [mem 0xbb46f000-0xbb667fff] reserved > [0.00] BIOS-e820: [mem 0xbb668000-0xbb6e7fff] ACPI NVS > [0.00] BIOS-e820: [mem 0xbb6e8000-0xbb70efff] reserved > [0.00] BIOS-e820: [mem 0xbb70f000-0xbb716fff] usable > [0.00] BIOS-e820: [mem 0xbb717000-0xbb71efff] reserved > [0.00] BIOS-e820: [mem 0xbb71f000-0xbb76afff] usable > [0.00] BIOS-e820: [mem 0xbb76b000-0xbb776fff] ACPI NVS > [0.00] BIOS-e820: [mem 0xbb777000-0xbb779fff] ACPI > data > [0.00] BIOS-e820: [mem 0xbb77a000-0xbb780fff] ACPI NVS > [0.00] BIOS-e820: [mem 0xbb781000-0xbb781fff] ACPI > data > [0.00] BIOS-e820: [mem 0xbb782000-0xbb78afff] ACPI NVS > [0.00] BIOS-e820: [mem 0xbb78b000-0xbb78bfff] ACPI > data > [0.00] BIOS-e820: [mem 0xbb78c000-0xbb79efff] ACPI NVS > [0.00] BIOS-e820: [mem 0xbb79f000-0xbb7fefff] ACPI > data > [0.00] BIOS-e820: [mem 0xbb7ff000-0xbb7f] usable > [0.00] BIOS-e820: [mem 0xbb80-0xbfff] reserved > [0.00] BIOS-e820: [mem 0xe000-0xefff] reserved > [0.00] BIOS-e820: [mem 0xfeaff000-0xfeaf] reserved > [0.00] BIOS-e820: [mem 0xfec0-0xfec0] reserved > [0.00] BIOS-e820: [mem 0xfed0-0xfed003ff] reserved > [0.00] BIOS-e820: [mem 0xfed1c000-0xfed8] reserved > [0.00] BIOS-e820: [mem 0xfee0-0xfee00fff] reserved > [0.00] BIOS-e820: [mem 0xff00-0x] reserved > [0.00] BIOS-e820: [mem 0x0001-0x000137ff] usable > [0.00] NX (Execute Disable) protection: active > [0.00] SMBIOS 2.6 present. > [0.00] DMI: LENOVO 2912W1C/2912W1C, BIOS 6UET70WW (1.50 ) 10/11/2012 > [0.00] e820: update [mem 0x-0x0fff] usable ==> reserved > [0.00] e820: remove [mem 0x000a-0x000f] usable > [0.00] No AGP bridge found > [0.00] e820: last_pfn = 0x138000 max_arch_pfn = 0x4 > [0.00] MTRR default type: uncachable > [0.00] MTRR fixed ranges enabled: > [0.00] 0-9 write-back > [0.00] A-B uncachable > [0.00] C-F write-protect > [0.00] MTRR variable ranges enabled: > [0.00] 0 disabled > [0.00] 1 base 0 mask F8000 write-back > [0.00] 2 base 08000 mask FC0
[PATCH libdrm 0/4] Minor cleanups
On Fri, Apr 11, 2014 at 01:18:11PM -0700, Eric Anholt wrote: > Thierry Reding writes: > > > On Tue, Apr 08, 2014 at 02:38:22PM -0700, Eric Anholt wrote: > >> Thierry Reding writes: > >> > >> > From: Thierry Reding > >> > > >> > These four patches clean up some minor issues in libdrm. Patch 1 makes > >> > gcc aware of various functions (such as drmMsg(), drm_debug_print(), > >> > etc) being printf-like and patches 2 and 3 fix up a number of warnings > >> > flagged as a result of that. > >> > > >> > Patch 4 uses drmFreeVersion() instead of drmFree() to free a drmVersion > >> > structure to prevent memory leaks. > >> > >> These are: > >> > >> Reviewed-by: Eric Anholt > > > > Thanks. I don't have the necessary permissions to push this, can > > somebody else help out here? > > I've given you permissions. I think Daniel Stone already gave me permissions as well. Anyway, pushed with your Reviewed-by. Thanks, Thierry -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/8c3139f7/attachment.sig>
[PATCH 03/18] drm/pci: fold in irq_by_busid support
On Fri, Apr 11, 2014 at 11:36:00PM +0200, Daniel Vetter wrote: [...] > +int drm_irq_by_busid(struct drm_device *dev, void *data, > + struct drm_file *file_priv) > +{ > + struct drm_irq_busid *p = data; > + > + if (drm_core_check_feature(dev, DRIVER_MODESET)) > + return -EINVAL; > + > + /* UMS was only ever support on pci devices. */ Nit: s/pci/PCI? > + if (WARN_ON(!dev->pdev)) > + return -EINVAL; > + > + if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ)) > + return -EINVAL; > + > + return drm_pci_irq_by_busid(dev, p); > +} > + > + Nit: there's a gratuitous blank line introduced here. Other than that: Reviewed-by: Thierry Reding -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/2b387073/attachment.sig>
[PATCH 04/18] drm/irq: drm_control is a legacy ioctl, so pci devices only
On Fri, Apr 11, 2014 at 11:36:01PM +0200, Daniel Vetter wrote: [...] > diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c > index c02b602325cb..4b019646f556 100644 > --- a/drivers/gpu/drm/drm_irq.c > +++ b/drivers/gpu/drm/drm_irq.c > @@ -386,22 +386,22 @@ int drm_control(struct drm_device *dev, void *data, >* this used to be a separate function in drm_dma.h >*/ > > + if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ)) > + return 0; > + if (drm_core_check_feature(dev, DRIVER_MODESET)) > + return 0; > + /* UMS was only ever support on pci devices. */ > + if (WARN_ON(!dev->pdev)) > + return -EINVAL; > > switch (ctl->func) { > case DRM_INST_HANDLER: > - if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ)) > - return 0; > - if (drm_core_check_feature(dev, DRIVER_MODESET)) > - return 0; > if (dev->if_version < DRM_IF_VERSION(1, 2) && > ctl->irq != drm_dev_to_irq(dev)) > return -EINVAL; > + Nit: This blank line seems unnecessary, but either way: Reviewed-by: Thierry Reding -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/cb034ffb/attachment.sig>
[PATCH 05/18] drm/irq: remove cargo-culted locking from irq_install/unistall
On Fri, Apr 11, 2014 at 11:36:02PM +0200, Daniel Vetter wrote: > The dev->struct_mutex locking in drm_irq.c only protects > dev->irq_enabled. Which isn't really much at all and only prevents > especially nasty ums userspace from concurrently installing the > interrupt handling a few times. Or at least trying. > > There are tons of unlocked readers of dev->irqs_enabled in the vblank > wait code (and by extension also in the pageflip code since that uses > the same vblank timestamp engine). > > Real modesetting drivers should ensure that nothing can go haywire > with a sane setup teardown sequence. So we only really need this for > the drm_control ioctl, everywhere else this will just paper over > nastiness. > > Note that drm/i915 is a bit specially due to the gem+ums combination. > So there we also need to properly protect the entervt and leavevt > ioctls. But it's definitely saner to do everything in one go than to > drop the lock in-between. > > Finally there's the gpu reset code in drm/i915. That one's just race > (concurrent userspace calls to for vblank waits of pageflips could > spuriously fail). So wrap it up in with a nice comment since fixing > this is more involved. > > Signed-off-by: Daniel Vetter > --- > drivers/gpu/drm/drm_irq.c | 30 +- > drivers/gpu/drm/i915/i915_drv.c | 5 + > drivers/gpu/drm/i915/i915_gem.c | 5 +++-- > 3 files changed, 21 insertions(+), 19 deletions(-) Looks good to me: Reviewed-by: Thierry Reding -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/14ca3cd8/attachment.sig>
[PATCH 05/18] drm/irq: remove cargo-culted locking from irq_install/unistall
On Thu, Apr 17, 2014 at 04:43:17PM +0200, Thierry Reding wrote: > On Fri, Apr 11, 2014 at 11:36:02PM +0200, Daniel Vetter wrote: > > The dev->struct_mutex locking in drm_irq.c only protects > > dev->irq_enabled. Which isn't really much at all and only prevents > > especially nasty ums userspace from concurrently installing the > > interrupt handling a few times. Or at least trying. > > > > There are tons of unlocked readers of dev->irqs_enabled in the vblank > > wait code (and by extension also in the pageflip code since that uses > > the same vblank timestamp engine). > > > > Real modesetting drivers should ensure that nothing can go haywire > > with a sane setup teardown sequence. So we only really need this for > > the drm_control ioctl, everywhere else this will just paper over > > nastiness. > > > > Note that drm/i915 is a bit specially due to the gem+ums combination. > > So there we also need to properly protect the entervt and leavevt > > ioctls. But it's definitely saner to do everything in one go than to > > drop the lock in-between. > > > > Finally there's the gpu reset code in drm/i915. That one's just race > > (concurrent userspace calls to for vblank waits of pageflips could > > spuriously fail). So wrap it up in with a nice comment since fixing > > this is more involved. > > > > Signed-off-by: Daniel Vetter > > --- > > drivers/gpu/drm/drm_irq.c | 30 +- > > drivers/gpu/drm/i915/i915_drv.c | 5 + > > drivers/gpu/drm/i915/i915_gem.c | 5 +++-- > > 3 files changed, 21 insertions(+), 19 deletions(-) > > Looks good to me: > > Reviewed-by: Thierry Reding Oh, perhaps s/unistall/uninstall/ in the commit subject. Thierry -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/418c1c0d/attachment.sig>
[PATCH 06/18] drm: remove drm_dev_to_irq from drivers
On Fri, Apr 11, 2014 at 11:36:03PM +0200, Daniel Vetter wrote: > Only used in some legacy pci drivers, and dereferncing the pci irq is > actually shorter ... > > Since this removes all users for drm_dev_to_irq from the tree except > in drm_irq.c, move the inline helper in there. It'll disappear soon, > too. Nit: s/dereferncing/dereferencing/ and s/pci/PCI/? Other than that, glad to see it go away. Reviewed-by: Thierry Reding -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/5f2046a7/attachment.sig>
[PATCH 07/18] drm: kill drm_bus->bus_type
On Fri, Apr 11, 2014 at 11:36:04PM +0200, Daniel Vetter wrote: > Completely unused. Hooray, midlayer mistakes that didn't cause work to > undo! \o/ > v2: Rebase on top of the recent tegra changes which added a host1x drm > bus. FWIW, I'm hoping to get rid of the host1x DRM bus soon. With this series applied it takes only a small additional patch to get rid of the requirement for .set_busid() and then I can simply to drm_dev_alloc() followed by drm_dev_register() directly in the driver. > Signed-off-by: Daniel Vetter > --- > drivers/gpu/drm/drm_pci.c | 1 - > drivers/gpu/drm/drm_platform.c | 1 - > drivers/gpu/drm/drm_usb.c | 1 - > drivers/gpu/drm/tegra/bus.c| 1 - > include/drm/drmP.h | 6 -- > 5 files changed, 10 deletions(-) Reviewed-by: Thierry Reding -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/0a56a0a0/attachment-0001.sig>
[PATCH 08/18] drm: Rip out totally bogus vga_switcheroo->can_switch locking
On Fri, Apr 11, 2014 at 11:36:05PM +0200, Daniel Vetter wrote: [...] > diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c > index 4dff829c2d89..dcb67c6564dd 100644 > --- a/drivers/gpu/drm/i915/i915_dma.c > +++ b/drivers/gpu/drm/i915/i915_dma.c > @@ -1286,9 +1286,12 @@ static bool i915_switcheroo_can_switch(struct pci_dev > *pdev) > struct drm_device *dev = pci_get_drvdata(pdev); > bool can_switch; > > - spin_lock(&dev->count_lock); > + /* > + * FIXME: open_count is protected by drm_global_mutex but that would > lead to > + * locking inversion with the driver load path. And the access here is > + * completely racy anyway. So don't bother with locking for now. > + */ > can_switch = (dev->open_count == 0); > - spin_unlock(&dev->count_lock); > return can_switch; > } Couldn't this now be shortened to: return (dev->open_count == 0); ? Similarily for the other drivers. > diff --git a/include/drm/drmP.h b/include/drm/drmP.h > index 9f1fb8d36b67..bd16a4c8ece4 100644 > --- a/include/drm/drmP.h > +++ b/include/drm/drmP.h > @@ -1076,7 +1076,7 @@ struct drm_device { > > /** \name Usage Counters */ > /*@{ */ > - int open_count; /**< Outstanding files open */ > + int open_count; /**< Outstanding files open, protected > by drm_global_lock. */ s/drm_global_lock/drm_global_mutex/? Thierry -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/836e468d/attachment.sig>
[PATCH 09/18] drm: rename dev->count_lock to dev->buf_lock
On Fri, Apr 11, 2014 at 11:36:06PM +0200, Daniel Vetter wrote: > Since really that's all it protects - legacy horror stories in > drm_bufs.c. Since I don't want to waste any more time on this I didn't > bother to actually look at what it protects in there, but it's at > least contained now. > > v2: Move the spurious hunk to the right patch (Thierry). > > Cc: Thierry Reding > Signed-off-by: Daniel Vetter > --- > drivers/gpu/drm/drm_bufs.c | 32 > drivers/gpu/drm/drm_stub.c | 2 +- > include/drm/drmP.h | 2 +- > 3 files changed, 18 insertions(+), 18 deletions(-) Looks good: Reviewed-by: Thierry Reding -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/67463da4/attachment.sig>
[PATCH 10/18] drm/irq: track the irq installed in drm_irq_install in dev->irq
On Fri, Apr 11, 2014 at 11:36:07PM +0200, Daniel Vetter wrote: > To get rid of the dev->bus->get_irq callback we need to pass in the > desired irq explicitly into drm_irq_install. To avoid having to do the > same for drm_irq_unistall just track it internally. That leaves > drivers with less room to botch things up. > > v2: Add the hunk lost in an earlier patch to this one (Thierry). > > Cc: Thierry Reding > Signed-off-by: Daniel Vetter > --- > drivers/gpu/drm/drm_irq.c | 18 +++--- > include/drm/drmP.h| 2 ++ > 2 files changed, 13 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c > index 330e85b19115..1c3b6229363d 100644 > --- a/drivers/gpu/drm/drm_irq.c > +++ b/drivers/gpu/drm/drm_irq.c > @@ -249,14 +249,16 @@ static inline int drm_dev_to_irq(struct drm_device *dev) > */ > int drm_irq_install(struct drm_device *dev) > { > - int ret; > + int ret, irq; > unsigned long sh_flags = 0; > char *irqname; > > + irq = drm_dev_to_irq(dev); > + This looks odd... > if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ)) > return -EINVAL; > > - if (drm_dev_to_irq(dev) == 0) > + if (irq == 0) > return -EINVAL; Wouldn't it make more sense to assign irq only here? And while at it, perhaps you meant to store irq directly within dev->irq, rather than in a local variable? That would address Laurent's comment as well. > > /* Driver must have been initialized */ > @@ -267,7 +269,7 @@ int drm_irq_install(struct drm_device *dev) > return -EBUSY; > dev->irq_enabled = true; > > - DRM_DEBUG("irq=%d\n", drm_dev_to_irq(dev)); > + DRM_DEBUG("irq=%d\n", dev->irq); > > /* Before installing handler */ > if (dev->driver->irq_preinstall) > @@ -282,7 +284,7 @@ int drm_irq_install(struct drm_device *dev) > else > irqname = dev->driver->name; > > - ret = request_irq(drm_dev_to_irq(dev), dev->driver->irq_handler, > + ret = request_irq(dev->irq, dev->driver->irq_handler, > sh_flags, irqname, dev); > > if (ret < 0) { > @@ -301,7 +303,9 @@ int drm_irq_install(struct drm_device *dev) > dev->irq_enabled = false; > if (!drm_core_check_feature(dev, DRIVER_MODESET)) > vga_client_register(dev->pdev, NULL, NULL, NULL); > - free_irq(drm_dev_to_irq(dev), dev); > + free_irq(dev->irq, dev); > + } else { > + dev->irq = irq; > } But perhaps you really only want to assign it after it's been properly initialized, so I guess the local variable is fine. But in that case you probably need to make sure to not use dev->irq until after this assignment. Thierry -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/5623e79c/attachment.sig>
[PATCH 12/18] drm: pass the irq explicitly to drm_irq_install
On Fri, Apr 11, 2014 at 11:36:09PM +0200, Daniel Vetter wrote: > Unfortunately this requires a drm-wide change, and I didn't see a sane > way around that. Luckily it's fairly simple, we just need to inline > the respective get_irq implementation from either drm_pci.c or > drm_platform.c. > > With that we can now also remove drm_dev_to_irq from drm_irq.c. > > Signed-off-by: Daniel Vetter > --- > Documentation/DocBook/drm.tmpl | 10 +- > drivers/gpu/drm/armada/armada_drv.c | 2 +- > drivers/gpu/drm/drm_irq.c| 13 +++-- > drivers/gpu/drm/gma500/psb_drv.c | 2 +- > drivers/gpu/drm/i915/i915_dma.c | 2 +- > drivers/gpu/drm/i915/i915_drv.c | 4 ++-- > drivers/gpu/drm/i915/i915_gem.c | 2 +- > drivers/gpu/drm/msm/msm_drv.c| 2 +- > drivers/gpu/drm/qxl/qxl_irq.c| 2 +- > drivers/gpu/drm/radeon/radeon_irq_kms.c | 2 +- > drivers/gpu/drm/shmobile/shmob_drm_drv.c | 2 +- > drivers/gpu/drm/tilcdc/tilcdc_drv.c | 2 +- > drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 2 +- > include/drm/drmP.h | 2 +- > 14 files changed, 17 insertions(+), 32 deletions(-) Looks good to me: Reviewed-by: Thierry Reding -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/da1f6737/attachment.sig>
[PATCH 13/18] drm: remove bus->get_irq implementations
On Fri, Apr 11, 2014 at 11:36:10PM +0200, Daniel Vetter wrote: > Now that they're all unused we can get rid of them, including the > dummy version in drm_usb.c. > > Signed-off-by: Daniel Vetter > --- > drivers/gpu/drm/drm_pci.c | 6 -- > drivers/gpu/drm/drm_platform.c | 6 -- > drivers/gpu/drm/drm_usb.c | 6 -- > include/drm/drmP.h | 1 - > 4 files changed, 19 deletions(-) Nice! Reviewed-by: Thierry Reding -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/7cd4b299/attachment.sig>
[PATCH 14/18] drm: inline drm_pci_set_unique
On Fri, Apr 11, 2014 at 11:36:11PM +0200, Daniel Vetter wrote: [...] > diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c > index 93a42040bedb..5aea5b57ba4b 100644 > --- a/drivers/gpu/drm/drm_ioctl.c > +++ b/drivers/gpu/drm/drm_ioctl.c > @@ -93,7 +93,8 @@ drm_unset_busid(struct drm_device *dev, > * Copies the bus id from userspace into drm_device::unique, and verifies > that > * it matches the device this DRM is attached to (EINVAL otherwise). > Deprecated > * in interface version 1.1 and will return EBUSY when setversion has > requested > - * version 1.1 or greater. > + * version 1.1 or greater. Also note that KMS is all version 1.1 and later > and > + * UMS was only ever support on pci devices. Nit: s/support on/supported on/, otherwise: Reviewed-by: Thierry Reding -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/2124d645/attachment-0001.sig>
[PATCH 15/18] drm: rip out dev->devname
On Fri, Apr 11, 2014 at 11:36:12PM +0200, Daniel Vetter wrote: > This was only ever used to pretty-print the irq driver name. And on > kms systems due to set_version bonghits we never set up the prettier > name, ever. Which make this a bit pointless. > > Also, we can always dig out the driver-instance/irq relationship > through other means, so this isn't that useful. So just rip it out to > simplify the set_version/set_busid insanity a bit. > > Also delete the temporary busname from drm_pci_set_busid, it's now > unused. > > v2: Rebase on top of the new host1x drm_bus for tegra. > > Signed-off-by: Daniel Vetter > --- > drivers/gpu/drm/drm_ioctl.c| 3 --- > drivers/gpu/drm/drm_irq.c | 8 +--- > drivers/gpu/drm/drm_pci.c | 25 - > drivers/gpu/drm/drm_platform.c | 11 --- > drivers/gpu/drm/drm_stub.c | 5 - > drivers/gpu/drm/tegra/bus.c| 10 -- > include/drm/drmP.h | 1 - > 7 files changed, 1 insertion(+), 62 deletions(-) Excellent! Reviewed-by: Thierry Reding -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/8c2755e0/attachment.sig>
[PATCH 16/18] drm: remove drm_bus->get_name
On Fri, Apr 11, 2014 at 11:36:13PM +0200, Daniel Vetter wrote: > The only user is the info debugfs file, so we only need something > human readable. Now for both pci and platform devices we've used the > name of the underlying device driver, which matches the name of the > drm driver in all cases. So we can just use that instead. > > The exception is usb, which used a generic "USB". Not to harmful with > just one usb driver, but better to use "udl", too. > > With that converted we can rip out all the ->get_name implementations. > > Signed-off-by: Daniel Vetter > --- > drivers/gpu/drm/drm_info.c | 6 ++ > drivers/gpu/drm/drm_pci.c | 7 --- > drivers/gpu/drm/drm_platform.c | 6 -- > drivers/gpu/drm/drm_usb.c | 6 -- > include/drm/drmP.h | 1 - > 5 files changed, 2 insertions(+), 24 deletions(-) Happy to see it gone: Reviewed-by: Thierry Reding -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/cac2cf8b/attachment.sig>
[PATCH 17/18] drm: Remove dev->kdriver
On Fri, Apr 11, 2014 at 11:36:14PM +0200, Daniel Vetter wrote: > With the last patch to ditch the ->get_name callbacks the last > user is now gone. > > Signed-off-by: Daniel Vetter > --- > drivers/gpu/drm/drm_pci.c | 1 - > drivers/gpu/drm/drm_platform.c | 1 - > drivers/gpu/drm/drm_usb.c | 1 - > include/drm/drmP.h | 5 - > 4 files changed, 8 deletions(-) More goodness... thank you. Reviewed-by: Thierry Reding -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/11137822/attachment.sig>
[PATCH 18/18] drm/: don't set driver->dev_priv_size to 0
On Fri, Apr 11, 2014 at 11:36:15PM +0200, Daniel Vetter wrote: > Especially not on modesetting drivers - this is used to size > the driver private structure for legacy drm buffers. Besides being pointless anyway, since that's what it will be initialized by default... Reviewed-by: Thierry Reding -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/07c541ca/attachment.sig>
[Bug 73320] [radeonsi] LLVM runs out of registers during register allocation in Painkiller Hell & Damnation
https://bugs.freedesktop.org/show_bug.cgi?id=73320 --- Comment #27 from Tom Stellard --- Created attachment 97521 --> https://bugs.freedesktop.org/attachment.cgi?id=97521&action=edit Work around for crash Hi can you try this LLVM patch. You will need to apply it on top of the very latest LLVM tree and also use the latest Mesa from git. You will likely experience mis-rendering with this patch, but hopefully the crash and hang will be gone. -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/1454c2f5/attachment.html>
[Bug 73320] [radeonsi] LLVM runs out of registers during register allocation in Painkiller Hell & Damnation
https://bugs.freedesktop.org/show_bug.cgi?id=73320 Tom Stellard changed: What|Removed |Added Attachment #97521|0 |1 is obsolete|| --- Comment #28 from Tom Stellard --- Created attachment 97522 --> https://bugs.freedesktop.org/attachment.cgi?id=97522&action=edit Work Around Sorry, I posted the wrong patch before. Try this one. -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/c33db08b/attachment.html>
[Bug 70711] Audio hdmi
https://bugzilla.kernel.org/show_bug.cgi?id=70711 --- Comment #15 from Vincenzo --- Kubuntu 14.04 kernel 3.14.1 audio with radeon 7750 works good -- You are receiving this mail because: You are watching the assignee of the bug.
[Bug 77533] commit: acf55e73252e46fa51378ef4b23c94a89902ae1c breaks radeonsi on linux
https://bugs.freedesktop.org/show_bug.cgi?id=77533 --- Comment #2 from glphvgacs --- Created attachment 97523 --> https://bugs.freedesktop.org/attachment.cgi?id=97523&action=edit Xorg.log -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/b7222c06/attachment.html>
[Bug 77533] commit: acf55e73252e46fa51378ef4b23c94a89902ae1c breaks radeonsi on linux
https://bugs.freedesktop.org/show_bug.cgi?id=77533 --- Comment #3 from glphvgacs --- (In reply to comment #1) > Please attach the corresponding Xorg.0.log and output of glxinfo. > > It's hard to believe that commit causing the problem; it shouldn't make any > functional difference. true. that's the "last working" commit. a commit after that breaks things. ok, i'm gonna try with the very next commit. -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/1bf28879/attachment.html>
[Bug 77533] commit: 71254732db12c8813c002425b5c1b7c31bf56f65 breaks radeonsi on linux
https://bugs.freedesktop.org/show_bug.cgi?id=77533 glphvgacs changed: What|Removed |Added Summary|commit: |commit: |acf55e73252e46fa51378ef4b23 |71254732db12c8813c002425b5c |c94a89902ae1c breaks|1b7c31bf56f65 breaks |radeonsi on linux |radeonsi on linux -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/4612b6f7/attachment.html>
[Bug 77533] commit: 71254732db12c8813c002425b5c1b7c31bf56f65 breaks radeonsi on linux
https://bugs.freedesktop.org/show_bug.cgi?id=77533 --- Comment #4 from glphvgacs --- (In reply to comment #3) > (In reply to comment #1) > > Please attach the corresponding Xorg.0.log and output of glxinfo. > > > > It's hard to believe that commit causing the problem; it shouldn't make any > > functional difference. > > true. that's the "last working" commit. a commit after that breaks things. > ok, i'm gonna try with the very next commit. title was wrong. so this is the bad commit: 71254732db12c8813c002425b5c1b7c31bf56f65 -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/28734a10/attachment.html>
[Bug 77582] New: [r600g] ogl-samples GL3.2 and GL3.3 tests doesn't run without overriding GL/GLSL version
https://bugs.freedesktop.org/show_bug.cgi?id=77582 Priority: medium Bug ID: 77582 Assignee: dri-devel at lists.freedesktop.org Summary: [r600g] ogl-samples GL3.2 and GL3.3 tests doesn't run without overriding GL/GLSL version Severity: normal Classification: Unclassified OS: Linux (All) Reporter: b.bellec at gmail.com Hardware: x86-64 (AMD64) Status: NEW Version: git Component: Drivers/Gallium/r600 Product: Mesa The OpenGL 3.2 and 3.3 tests from the ogl-samples pack doesn't run on my Evergreen card (HD 5850) if I don't override the env var with the good GL and GLSL values. Download and compiles the ogl-samples: $ git clone https://github.com/g-truc/ogl-samples $ cmake . $ make $ ./build/release/gl-320-primitive-sprite In my case, the program starts but immediately stop, without error. While if I launch with: $ MESA_GL_VERSION_OVERRIDE=3.2 MESA_GLSL_VERSION_OVERRIDE=150 ./build/release/gl-320-primitive-sprite Then the program start as excepted. I tested several ogl-320 and ogl-330 tests, all have the same issue. glxinfo: OpenGL renderer string: Gallium 0.4 on AMD CYPRESS OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.2.0-devel (git-75e4875) OpenGL core profile shading language version string: 3.30 Build config: autogen.sh --with-gallium-drivers=r600 --with-dri-drivers= --enable-texture-float --disable-dri3 --disable-r600-llvm-compiler --disable-gallium-llvm --enable-64-bit CFLAGS="-O2 -m64" CXXFLAGS="-O2 -m64" --libdir=/usr/lib64 Kernel 3.13.9-100.fc19.x86_64 libdrm 2.4.53-1.fc20 I don't know if it's a regression. I can test with earlier Mesa commit if you point me to an old commit with still GL3.2 supports. -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/77bbf7ff/attachment.html>
Fwd: [1]
Hey there! http://autocentrum.rybnik.pl/_www.google.com_recommends?cyzeqygas=9317870&tukiha=253907 -- Learn Graph Databases - Download FREE O'Reilly Book "Graph Databases" is the definitive new guide to graph databases and their applications. Written by three acclaimed leaders in the field, this first edition is now available. Download your free book today! http://p.sf.net/sfu/NeoTech -- ___ Dri-devel mailing list Dri-devel at lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/dri-devel
Fwd: [2]
Hi there! http://litwin.private.pl/_topic.forum?jmukomug=3562237&mumykun=500435
[3.14 regression] kernel oops with dpm enabled on TURKS
mmm further tests shown the oops was casual, maybe related to the real problem, I can't say. I'm unable to reproduce it. But the gpu stall is 100% reproducible with dpm enabled. Attached is the log that usually shows up. Other than that, I also observe the lspci "Unknown header type 7f" problem similar to ko bug #73041 https://bugzilla.kernel.org/show_bug.cgi?id=73041 A few notes: - I can confirm that the problem was first introduced by 6c7bccea390853bdec5b76fe31fc50f3b36f75d5. Until e14cd2bbcb98541e199b7223f38d61527dfe45c9 the gpu works. - The "Unknown header type 7f" thing is not new to me. I experienced this problem a year ago, trying the Catalyst driver. I spent some time filing a bug report for amd, which remained unanswered: http://ati.cchtml.com/show_bug.cgi?id=743 Alex, do you have any clue? Maybe your commit changed something into the initialization order which is confusing this gpu? Thanks, Giancarlo In data luned?, aprile 14, 2014 12:57:55, Giancarlo Formicuccia ha scritto: > Greetings, > > I'm facing a dpm regression in 3.14 on my radeon TURKS (pci id 1002:6840). > Upon loading the radeon module with dpm enabled, the screen goes black and > the computer locks up. > > The problem first appeared at 6c7bccea390853bdec5b76fe31fc50f3b36f75d5 > drm/radeon/pm: move pm handling into the asic specific code > > and is still present in 3.15-rc1. > > Loading the radeon module with dpm disabled works. > > I captured the relevant kernel messages using a netconsole (attached); there > is an oops in radeon_ring_write presumibly during the test of ring #5. > > Thanks, > > Giancarlo -- next part -- [ 107.950509] [drm] radeon kernel modesetting enabled. [ 107.974044] checking generic (b000 30) vs hw (b000 1000) [ 107.996501] fb: switching to radeondrmfb from VESA VGA [ 108.017616] Console: switching to colour dummy device 80x25 [ 108.018358] [drm] initializing kernel modesetting (TURKS 0x1002:0x6840 0x1179:0xFB81). [ 108.018401] [drm] register mmio base: 0xC000 [ 108.018406] [drm] register mmio size: 131072 [ 108.018523] ATOM BIOS: Toshiba/Quanta [ 108.018615] radeon :01:00.0: VRAM: 2048M 0x - 0x7FFF (2048M used) [ 108.018622] radeon :01:00.0: GTT: 1024M 0x8000 - 0xBFFF [ 108.018628] [drm] Detected VRAM RAM=2048M, BAR=256M [ 108.018632] [drm] RAM width 128bits DDR [ 108.018774] [TTM] Zone kernel: Available graphics memory: 4075258 kiB [ 108.018780] [TTM] Zone dma32: Available graphics memory: 2097152 kiB [ 108.018785] [TTM] Initializing pool allocator [ 108.018794] [TTM] Initializing DMA pool allocator [ 108.018822] [drm] radeon: 2048M of VRAM memory ready [ 108.018827] [drm] radeon: 1024M of GTT memory ready. [ 108.018848] [drm] Loading TURKS Microcode [ 108.090679] [drm] Internal thermal controller with fan control [ 108.090825] == power state 0 == [ 108.090834] ui class: none [ 108.090841] internal class: boot [ 108.090849] caps: [ 108.090855] uvdvclk: 0 dclk: 0 [ 108.090860] power level 0sclk: 3 mclk: 15000 vddc: 900 vddci: 0 [ 108.090866] power level 1sclk: 3 mclk: 15000 vddc: 900 vddci: 0 [ 108.090873] power level 2sclk: 3 mclk: 15000 vddc: 900 vddci: 0 [ 108.090878] status: c r b [ 108.090890] == power state 1 == [ 108.090894] ui class: performance [ 108.090900] internal class: none [ 108.090908] caps: [ 108.090913] uvdvclk: 0 dclk: 0 [ 108.090918] power level 0sclk: 3 mclk: 15000 vddc: 900 vddci: 0 [ 108.090924] power level 1sclk: 5 mclk: 9 vddc: 1000 vddci: 0 [ 108.090929] power level 2sclk: 6 mclk: 9 vddc: 1000 vddci: 0 [ 108.090934] status: [ 108.090940] == power state 2 == [ 108.090944] ui class: none [ 108.090950] internal class: uvd [ 108.090957] caps: video [ 108.090966] uvdvclk: 7 dclk: 56000 [ 108.090971] power level 0sclk: 5 mclk: 9 vddc: 1000 vddci: 0 [ 108.090977] power level 1sclk: 5 mclk: 9 vddc: 1000 vddci: 0 [ 108.090982] power level 2sclk: 6 mclk: 9 vddc: 1000 vddci: 0 [ 108.090987] status: [ 108.090992] == power state 3 == [ 108.090996] ui class: battery [ 108.091002] internal class: none [ 108.091010] caps: [ 108.091015] uvdvclk: 0 dclk: 0 [ 108.091020] power level 0sclk: 3 mclk: 15000 vddc: 900 vddci: 0 [ 108.091025] power level 1sclk: 3 mclk: 15000 vddc: 900 vddci: 0 [ 108.091031] power level 2sclk: 4 mclk: 4 vddc: 900 vddci: 0 [ 108.091036] status: [ 108.091041] == power state 4 == [ 108.091045] ui class: battery [ 108.091050] internal class: uvd_hd [ 108.091057] caps: video [ 108.091065] uvdvclk: 4 dclk: 3 [ 108.091070] power level 0sclk: 4 mclk: 4 vddc: 900 vddci: 0
REGRESSION: OOPS: Intel Corporation Core Processor Integrated Graphics Controller, Linux HEAD when powering off internal Laptop display on t410s and extending and rotating external screen
Hallo Jani, > Hi Thomas, please bisect, it's likely the quickest way to root cause > this. (Google for "git bisect kernel" for a bunch of guides on the > topic > if you're not familiar with bisect.) I switched my location and no longer have an external monitor with display port available, if I do, I'll do the bisect but currently the problem does no longer show up without an external monitor attached. Cheers, Thomas
REGRESSION: OOPS: Intel Corporation Core Processor Integrated Graphics Controller, Linux HEAD when powering off internal Laptop display on t410s and extending and rotating external screen
Hello, I have t410s with an internal Intel graphic card. I have the Laptop display (LVDS1) and an external HP ZR2440W Monitor connected to the Display port. I pulled yesterday git head which probably contains a DRI changes which lead to PANIC. Before that even with a 3.15.0-rc1+ it was working. The internal display is at 1440x900, the external as well, both are not rotated. I want to disable the internal display, change the resolution of the external display to 1920x1200 and rotate it. So I execute the commands: xrandr --output DP1 --mode 1920x1200 xrandr --output LVDS1 --off xrandr -o 1 If I do that I get: [0.00] Initializing cgroup subsys cpuset [0.00] Initializing cgroup subsys cpu [0.00] Initializing cgroup subsys cpuacct [0.00] Linux version 3.15.0-rc1+ (sithglan at lenovo) (gcc version 4.7.2 (Debian 4.7.2-5) ) #66 SMP Wed Apr 16 17:16:33 CEST 2014 [0.00] Command line: BOOT_IMAGE=/home/sithglan/work/linux-2.6/arch/x86/boot/bzImage root=UUID=e79cc073-026a-4671-a065-63e2391ff974 ro nomodeset intel.modeset=0 [0.00] e820: BIOS-provided physical RAM map: [0.00] BIOS-e820: [mem 0x-0x0009e7ff] usable [0.00] BIOS-e820: [mem 0x0009e800-0x0009] reserved [0.00] BIOS-e820: [mem 0x000dc000-0x000f] reserved [0.00] BIOS-e820: [mem 0x0010-0xbb27bfff] usable [0.00] BIOS-e820: [mem 0xbb27c000-0xbb281fff] reserved [0.00] BIOS-e820: [mem 0xbb282000-0xbb35efff] usable [0.00] BIOS-e820: [mem 0xbb35f000-0xbb370fff] reserved [0.00] BIOS-e820: [mem 0xbb371000-0xbb3f1fff] ACPI NVS [0.00] BIOS-e820: [mem 0xbb3f2000-0xbb40efff] reserved [0.00] BIOS-e820: [mem 0xbb40f000-0xbb46efff] usable [0.00] BIOS-e820: [mem 0xbb46f000-0xbb667fff] reserved [0.00] BIOS-e820: [mem 0xbb668000-0xbb6e7fff] ACPI NVS [0.00] BIOS-e820: [mem 0xbb6e8000-0xbb70efff] reserved [0.00] BIOS-e820: [mem 0xbb70f000-0xbb716fff] usable [0.00] BIOS-e820: [mem 0xbb717000-0xbb71efff] reserved [0.00] BIOS-e820: [mem 0xbb71f000-0xbb76afff] usable [0.00] BIOS-e820: [mem 0xbb76b000-0xbb776fff] ACPI NVS [0.00] BIOS-e820: [mem 0xbb777000-0xbb779fff] ACPI data [0.00] BIOS-e820: [mem 0xbb77a000-0xbb780fff] ACPI NVS [0.00] BIOS-e820: [mem 0xbb781000-0xbb781fff] ACPI data [0.00] BIOS-e820: [mem 0xbb782000-0xbb78afff] ACPI NVS [0.00] BIOS-e820: [mem 0xbb78b000-0xbb78bfff] ACPI data [0.00] BIOS-e820: [mem 0xbb78c000-0xbb79efff] ACPI NVS [0.00] BIOS-e820: [mem 0xbb79f000-0xbb7fefff] ACPI data [0.00] BIOS-e820: [mem 0xbb7ff000-0xbb7f] usable [0.00] BIOS-e820: [mem 0xbb80-0xbfff] reserved [0.00] BIOS-e820: [mem 0xe000-0xefff] reserved [0.00] BIOS-e820: [mem 0xfeaff000-0xfeaf] reserved [0.00] BIOS-e820: [mem 0xfec0-0xfec0] reserved [0.00] BIOS-e820: [mem 0xfed0-0xfed003ff] reserved [0.00] BIOS-e820: [mem 0xfed1c000-0xfed8] reserved [0.00] BIOS-e820: [mem 0xfee0-0xfee00fff] reserved [0.00] BIOS-e820: [mem 0xff00-0x] reserved [0.00] BIOS-e820: [mem 0x0001-0x000137ff] usable [0.00] NX (Execute Disable) protection: active [0.00] SMBIOS 2.6 present. [0.00] DMI: LENOVO 2912W1C/2912W1C, BIOS 6UET70WW (1.50 ) 10/11/2012 [0.00] e820: update [mem 0x-0x0fff] usable ==> reserved [0.00] e820: remove [mem 0x000a-0x000f] usable [0.00] No AGP bridge found [0.00] e820: last_pfn = 0x138000 max_arch_pfn = 0x4 [0.00] MTRR default type: uncachable [0.00] MTRR fixed ranges enabled: [0.00] 0-9 write-back [0.00] A-B uncachable [0.00] C-F write-protect [0.00] MTRR variable ranges enabled: [0.00] 0 disabled [0.00] 1 base 0 mask F8000 write-back [0.00] 2 base 08000 mask FC000 write-back [0.00] 3 base 1 mask FC000 write-back [0.00] 4 base 13800 mask FF800 uncachable [0.00] 5 base 0BC00 mask FFC00 uncachable [0.00] 6 disabled [0.00] 7 disabled [0.00] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [0.00] e820: update [mem 0xbc00-0x] usable ==> rese
[pull] radeon drm-fixes-3.15
Hi Dave, this is the first pull request for stashed radeon fixes for 3.15. Highlights are: 1. Fixing PLL regressions 2. A couple of memory reclocking and DPM fixes 3. Small cleanups The following changes since commit 5df5242d34c131d049359e01b9ce928659885c4b: Merge tag 'drm-intel-fixes-2014-04-11' of git://anongit.freedesktop.org/drm-intel into drm-next (2014-04-16 10:35:01 +1000) are available in the git repository at: git://people.freedesktop.org/~deathsimple/linux drm-fixes-3.15 for you to fetch changes up to bcddee29b0b87af3aeda953840f97b356b24dc5e: drm/radeon/ci: make sure mc ucode is loaded before checking the size (2014-04-17 14:14:43 +0200) Alex Deucher (8): drm/radeon: disable mclk dpm on R7 260X drm/radeon: fix runpm handling on APUs (v4) drm/radeon: update CI DPM powertune settings drm/radeon: add support for newer mc ucode on SI (v2) drm/radeon: add support for newer mc ucode on CI (v2) drm/radeon: re-enable mclk dpm on R7 260X asics drm/radeon/si: make sure mc ucode is loaded before checking the size drm/radeon/ci: make sure mc ucode is loaded before checking the size Christian K?nig (2): drm/radeon: apply more strict limits for PLL params v2 drm/radeon: improve PLL params if we don't match exactly v2 Christoph Jaeger (1): drm/radeon: fix VCE fence command Quentin Casasnovas (1): drm/radeon: memory leak on bo reservation failure. v2 drivers/gpu/drm/radeon/ci_dpm.c | 33 + drivers/gpu/drm/radeon/cik.c | 28 +++- drivers/gpu/drm/radeon/radeon.h | 1 + drivers/gpu/drm/radeon/radeon_atpx_handler.c | 2 +- drivers/gpu/drm/radeon/radeon_device.c | 19 ++- drivers/gpu/drm/radeon/radeon_display.c | 16 ++-- drivers/gpu/drm/radeon/radeon_drv.c | 24 drivers/gpu/drm/radeon/radeon_family.h | 1 + drivers/gpu/drm/radeon/radeon_kms.c | 23 +-- drivers/gpu/drm/radeon/radeon_ucode.h| 7 ++- drivers/gpu/drm/radeon/radeon_vce.c | 2 +- drivers/gpu/drm/radeon/si.c | 37 - 12 files changed, 115 insertions(+), 78 deletions(-)
[PATCH 0/3] drm/tegra: Use standard suffix for hotplug detect GPIO property
Am Donnerstag, den 17.04.2014, 14:02 +0200 schrieb Thierry Reding: > From: Thierry Reding > > The hotplug detect GPIO in the current bindings use "-gpio" as suffix, > whereas the standard suffix is the plural: "-gpios". This small series > replaces this in three steps to preserve bisectability: > > - Patch 1 adds new nvidia,hpd-gpios properties to existing device tree > files while marking existing nvidia,hpd-gpio ones as deprecated. > - Patch 2 makes use of the new property name in the driver and updates > the device tree bindings. > - Patch 3 removes the deprecated properties from device tree files. > > Since this touches both DRM and Tegra trees, I've prepared a stable > branch[0] that can be pulled into both trees to make the transition > easier. > What's the real benefit to this series? After all you are breaking existing devicetrees here, as the driver doesn't continue to recognize the old name. IMHO adding a missed 's' to the property name isn't enough reason to do this. Regards, Lucas
[Bug 66963] Rv6xx dpm problems
https://bugs.freedesktop.org/show_bug.cgi?id=66963 --- Comment #226 from Kajzer --- Gotta correct something about what I said regarding Steam and some games not working with open drivers, just found out what the problem was with that, problem was patent S3TC, installing very small library libtxc_dxtn solved all those problems, every game works now and performance is great, even with Mesa 9.2 :) -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/eedd96b1/attachment.html>
[Bug 77589] New: [r600g] Source engine game stopped working (bisected)
https://bugs.freedesktop.org/show_bug.cgi?id=77589 Priority: medium Bug ID: 77589 Assignee: dri-devel at lists.freedesktop.org Summary: [r600g] Source engine game stopped working (bisected) Severity: blocker Classification: Unclassified OS: All Reporter: b.bellec at gmail.com Hardware: x86 (IA32) Status: NEW Version: git Component: Drivers/Gallium/r600 Product: Mesa Created attachment 97529 --> https://bugs.freedesktop.org/attachment.cgi?id=97529&action=edit Gnome proposing to quit the app All my Source engine games (Team Fortress 2, Left 4 Dead 2, Half-Life?, Counter-Strike: Source) doesn't work anymore since commit: commit: 70cf6639c331342619e65c46db925d115bf51920 gallium/radeon: create and return a fence in the flush function author: Marek Ol??k date: 2014-04-16 12:02:51 (GMT) Reviewed-by: Christian K?nig Since this commit, when I launch one of this game, the screen stays black or it will not launch at all. Finally I got a message from Gnome proposing to wait or quit the app (cf. screenshot). Config: kernel 3.13.9-100.fc19.x86_64 libdrm 2.4.53-1.fc20 AMD Evergreen (Radeon HD 5850) OpenGL renderer string: Gallium 0.4 on AMD CYPRESS Build config: autogen.sh --with-gallium-drivers=r600 --with-dri-drivers= --enable-texture-float --disable-dri3 --disable-r600-llvm-compiler --disable-gallium-llvm --enable-32-bit CFLAGS="-O2 -m32" CXXFLAGS="-O2 -m32" --libdir=/usr/lib -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/a230af30/attachment.html>
[Bug 77589] [r600g] Source engine game stopped working (bisected)
https://bugs.freedesktop.org/show_bug.cgi?id=77589 Benjamin Bellec changed: What|Removed |Added Assignee|dri-devel at lists.freedesktop |mesa-dev at lists.freedesktop. |.org|org CC||b.bellec at gmail.com -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/783bec11/attachment.html>
[Bug 75361] freeze in Mass Effect 3 (wine)
https://bugs.freedesktop.org/show_bug.cgi?id=75361 --- Comment #17 from Tom Stellard --- Can you try this LLVM patch: https://bugs.freedesktop.org/attachment.cgi?id=97522 Make sure you have latest LLVM and Mesa from git. -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/17ef51c4/attachment.html>
[PATCH 0/3] drm/tegra: Use standard suffix for hotplug detect GPIO property
On Thu, Apr 17, 2014 at 07:25:54PM +0200, Lucas Stach wrote: > Am Donnerstag, den 17.04.2014, 14:02 +0200 schrieb Thierry Reding: > > From: Thierry Reding > > > > The hotplug detect GPIO in the current bindings use "-gpio" as suffix, > > whereas the standard suffix is the plural: "-gpios". This small series > > replaces this in three steps to preserve bisectability: > > > > - Patch 1 adds new nvidia,hpd-gpios properties to existing device tree > > files while marking existing nvidia,hpd-gpio ones as deprecated. > > - Patch 2 makes use of the new property name in the driver and updates > > the device tree bindings. > > - Patch 3 removes the deprecated properties from device tree files. > > > > Since this touches both DRM and Tegra trees, I've prepared a stable > > branch[0] that can be pulled into both trees to make the transition > > easier. > > > What's the real benefit to this series? After all you are breaking > existing devicetrees here, as the driver doesn't continue to recognize > the old name. IMHO adding a missed 's' to the property name isn't enough > reason to do this. The series is explicitly done in a way to ensure that at least in-tree device trees will keep working across the whole series. Obviously if anybody were to use a DTB written according to the deprecated binding that would no longer work. However I'd like to eventually convert the driver to use the new GPIO descriptor helpers because they make it a lot easier to deal with the GPIOs. And with the new gpiod_get() function you loose the ability to specify an exact property name as it appends the -gpios suffix automatically. The idea is to rectify this mistake now that there's still a manageable number of boards in the tree and we have never really supported stable devicetree bindings on Tegra anyway. Or to put it differently, there is not enough functionality on Tegra generally to make it practicable to use it in production. Therefore I think it makes sense to fix these issues while it's still a viable option. Thierry -- next part -- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/49bf0f3a/attachment.sig>
[Bug 73320] [radeonsi] LLVM runs out of registers during register allocation in Painkiller Hell & Damnation
https://bugs.freedesktop.org/show_bug.cgi?id=73320 --- Comment #29 from farmboy0+freedesktop at googlemail.com --- Patch doesnt compile: SIInstrInfo.cpp:198:41: error: invalid use of incomplete type ?const class llvm::Function? -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/971ef4fa/attachment.html>
[Bug 73320] [radeonsi] LLVM runs out of registers during register allocation in Painkiller Hell & Damnation
https://bugs.freedesktop.org/show_bug.cgi?id=73320 Tom Stellard changed: What|Removed |Added Attachment #97522|0 |1 is obsolete|| --- Comment #30 from Tom Stellard --- Created attachment 97539 --> https://bugs.freedesktop.org/attachment.cgi?id=97539&action=edit Work around v2 This one should compile. -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/dc8c69ae/attachment-0001.html>
[PATCH RFC 3/3] drm/exynos: use pending_components for components tracking
On Thu, Apr 17, 2014 at 01:28:50PM +0200, Andrzej Hajda wrote: > +out: > + if (ret != -EPROBE_DEFER) > + exynos_drm_dev_ready(&pdev->dev); So we end up with everyone needing a "ready" call in each sub-driver back into the main driver... this makes it impossible to write a generic subcomponent driver which is not tied in any way to the main driver. That is quite some restriction, and would prevent, for example, the TDA998x driver being used both with Armada DRM, tilcdc and any other driver. So, while your solution may work for exynos, it's not suitable for general use. -- FTTC broadband for 0.8mile line: now at 9.7Mbps down 460kbps up... slowly improving, and getting towards what was expected from it.
[Bug 75361] freeze in Mass Effect 3 (wine)
https://bugs.freedesktop.org/show_bug.cgi?id=75361 --- Comment #18 from Tom Stellard --- (In reply to comment #17) > Can you try this LLVM patch: > https://bugs.freedesktop.org/attachment.cgi?id=97522 > Make sure you have latest LLVM and Mesa from git. That patch won't build try this instead: https://bugs.freedesktop.org/attachment.cgi?id=97539 -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/64a7bc18/attachment.html>
[PATCH RFC 3/3] drm/exynos: use pending_components for components tracking
On Thu, Apr 17, 2014 at 01:28:50PM +0200, Andrzej Hajda wrote: > +static int exynos_drm_add_blocker(struct device *dev, void *data) > +{ > + struct device_driver *drv = data; > + > + if (!platform_bus_type.match(dev, drv)) > + return 0; > + > + device_lock(dev); > + if (!dev->driver) > + exynos_drm_dev_busy(dev); > + device_unlock(dev); > + > + return 0; > +} > + > +static void exynos_drm_init_blockers(struct device_driver *drv) > +{ > + bus_for_each_dev(&platform_bus_type, NULL, drv, exynos_drm_add_blocker); > +} This feels very wrong to be dumping the above code into every driver which wants to make use of some kind of componentised support. You also appear to need to know the struct device_driver's for every component. While that may work for exynos, it doesn't work elsewhere where the various components of the system are very real separate kernel modules - for example, a separate I2C driver such as the TDA998x case I mentioned in my first reply. I can't see how your solution would be usable in that circumstance. The third issue I have is that you're still needing to have internal exynos sub-device management - you're having to add the individual devices to some kind of list, array or static data, and during DRM probe you're having to then walk these lists/arrays/static data to locate these sub-devices and finish each of their individual initialisations. So you're ending up with a two-tier initialisation. That's not particularly good because it means you're exposed to problems where the state is different between two initialisations - when the device is recreated, your component attempts to re-finalise the initialisation a second time. It wouldn't take much for a field to be assumed to be zero at init time somewhere for a bug to creep in. -- FTTC broadband for 0.8mile line: now at 9.7Mbps down 460kbps up... slowly improving, and getting towards what was expected from it.
[Bug 73320] [radeonsi] LLVM runs out of registers during register allocation in Painkiller Hell & Damnation
https://bugs.freedesktop.org/show_bug.cgi?id=73320 --- Comment #31 from farmboy0+freedesktop at googlemail.com --- LLVM triggered Diagnostic Handler: SIInstrInfo::storeRegToStackSlot - Can't spill VGPR! ./Antichamber.sh: line 3: 3074 Segmentation fault ./UDKGame-Linux $@ Crash is gone. -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/21979920/attachment.html>
[Bug 77596] New: [r600g] random and reproducible crash in Left 4 Dead 2 (bisected)
https://bugs.freedesktop.org/show_bug.cgi?id=77596 Priority: medium Bug ID: 77596 Assignee: dri-devel at lists.freedesktop.org Summary: [r600g] random and reproducible crash in Left 4 Dead 2 (bisected) Severity: normal Classification: Unclassified OS: Linux (All) Reporter: b.bellec at gmail.com Hardware: x86 (IA32) Status: NEW Version: git Component: Drivers/Gallium/r600 Product: Mesa Left 4 Dead 2 crash quite randomly, most of the time between 45 minutes and 80 minutes for instance. But sometimes earlier (15 minutes). When the crash happens, it's always at the same moment in the game: it's in "Versus Mode" when you play an Infected character. The crash always occurs when you're in the mode where you can follow the survivors while the spawn counter is decreasing, and then reaching zero, you go in the POV of your infected character. The game crash in this transition. When the game crash, in fact it freeze during 10-15 seconds and then the game exit with a segfault. The first bad commit is: commit: cefa06cd6967f2c2db2acfb54a4bf3be398a3ce8 egl: Add STATIC_ASSERT() macro author: Chad Versace date: 2014-03-17 22:39:23 (GMT) I was quite surprised about this commit but it take me many time to bisect it given the nature of the crash. And I then take many time to be sure that this is the first bad commit. I just try with recent dev mesa (d3c0e236f23e66cb2b4a75f5161282b2d15ff73f) but the crash still occurs. Config: kernel 3.13.9-100.fc19.x86_64 libdrm 2.4.53-1.fc20 AMD Evergreen (Radeon HD 5850) OpenGL renderer string: Gallium 0.4 on AMD CYPRESS Build config: autogen.sh --with-gallium-drivers=r600 --with-dri-drivers= --enable-texture-float --disable-dri3 --disable-r600-llvm-compiler --disable-gallium-llvm --enable-32-bit CFLAGS="-O2 -m32" CXXFLAGS="-O2 -m32" --libdir=/usr/lib -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/8c73ac42/attachment.html>
[Bug 77596] [r600g] random and reproducible crash in Left 4 Dead 2 (bisected)
https://bugs.freedesktop.org/show_bug.cgi?id=77596 --- Comment #1 from Benjamin Bellec --- Created attachment 97541 --> https://bugs.freedesktop.org/attachment.cgi?id=97541&action=edit Example scene when the game will crash In this screenshot, the spawn counter reached zero and is now in "Respawn Mode". Next frame we go in Infected POV. Game crash during this transition. -- You are receiving this mail because: You are the assignee for the bug. -- next part -- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140417/9f9cb219/attachment.html>