mbox series

[v11,0/5] arm/arm64: mediatek: Fix mt8173 mmsys device probing

Message ID 20200311115614.1425528-1-enric.balletbo@collabora.com (mailing list archive)
Headers show
Series arm/arm64: mediatek: Fix mt8173 mmsys device probing | expand

Message

Enric Balletbo i Serra March 11, 2020, 11:56 a.m. UTC
Dear all,

These patches are intended to solve an old standing issue on some
Mediatek devices (mt8173, mt2701 and mt2712 are affected by this issue).

Up to now both drivers, clock and drm are probed with the same device tree
compatible. But only the first driver gets probed, which in effect breaks
graphics on those devices.

The MMSYS (Multimedia subsystem) in Mediatek SoCs has some registers to
control clock gates (which is used in the clk driver) and some registers
to set the routing and enable the differnet blocks of the display
and MDP (Media Data Path) subsystem. On this series the clk driver is
not a pure clock controller but a system controller that can provide
access to the shared registers between the different drivers that need
it (mediatek-drm and mediatek-mdp). Hence the MMSYS clk driver was moved
to drivers/soc/mediatek and is the entry point (parent) which will trigger
the probe of the corresponding mediatek-drm driver.

**IMPORTANT** This series only fixes the issue on mt8173 to make it
simple and as is the only platform I can test. Similar changes should be
applied for mt2701 and mt2712 to have display working.

These patches apply on top of linux-next.

For reference, here are the links to the old discussions:
* v10: https://patchwork.kernel.org/project/linux-mediatek/list/?series=248505
* v9: https://patchwork.kernel.org/project/linux-clk/list/?series=247591
* v8: https://patchwork.kernel.org/project/linux-mediatek/list/?series=244891
* v7: https://patchwork.kernel.org/project/linux-mediatek/list/?series=241217
* v6: https://patchwork.kernel.org/project/linux-mediatek/list/?series=213219
* v5: https://patchwork.kernel.org/project/linux-mediatek/list/?series=44063
* v4:
  * https://patchwork.kernel.org/patch/10530871/
  * https://patchwork.kernel.org/patch/10530883/
  * https://patchwork.kernel.org/patch/10530885/
  * https://patchwork.kernel.org/patch/10530911/
  * https://patchwork.kernel.org/patch/10530913/
* v3:
  * https://patchwork.kernel.org/patch/10367857/
  * https://patchwork.kernel.org/patch/10367861/
  * https://patchwork.kernel.org/patch/10367877/
  * https://patchwork.kernel.org/patch/10367875/
  * https://patchwork.kernel.org/patch/10367885/
  * https://patchwork.kernel.org/patch/10367883/
  * https://patchwork.kernel.org/patch/10367889/
  * https://patchwork.kernel.org/patch/10367907/
  * https://patchwork.kernel.org/patch/10367909/
  * https://patchwork.kernel.org/patch/10367905/
* v2: No relevant discussion, see v3
* v1:
  * https://patchwork.kernel.org/patch/10016497/
  * https://patchwork.kernel.org/patch/10016499/
  * https://patchwork.kernel.org/patch/10016505/
  * https://patchwork.kernel.org/patch/10016507/

Best regards,
 Enric

Changes in v11:
- Leave the clocks part in drivers/clk (clk-mt8173-mm)
- Instantiate the clock driver from the mtk-mmsys driver.
- Add default config option to not break anything.
- Removed the Reviewed-by CK tag as changed the organization.

Changes in v10:
- Update the binding documentation for the mmsys system controller.
- Renamed to be generic mtk-mmsys
- Add driver data support to be able to support diferent SoCs
- Select CONFIG_MTK_MMSYS (CK)
- Pass device pointer of mmsys device instead of config regs (CK)
- Match driver data to get display routing.

Changes in v9:
- Move mmsys to drivers/soc/mediatek (CK)
- Introduced a new patch to move routing control into mmsys driver.
- Removed the patch to use regmap as is not needed anymore.
- Do not move the display routing from the drm driver (CK)

Changes in v8:
- Be a builtin_platform_driver like other mediatek mmsys drivers.
- New patch introduced in this series.

Changes in v7:
- Free clk_data->clks as well
- Get rid of private data structure

Enric Balletbo i Serra (3):
  dt-bindings: mediatek: Update mmsys binding to reflect it is a system
    controller
  soc / drm: mediatek: Move routing control to mmsys device
  soc / drm: mediatek: Fix mediatek-drm device probing

Matthias Brugger (2):
  drm/mediatek: Omit warning on probe defers
  clk / soc: mediatek: Move mt8173 MMSYS to platform driver

 .../bindings/arm/mediatek/mediatek,mmsys.txt  |   7 +-
 drivers/clk/mediatek/Kconfig                  |   7 +
 drivers/clk/mediatek/Makefile                 |   1 +
 drivers/clk/mediatek/clk-mt8173-mm.c          | 146 ++++++++
 drivers/clk/mediatek/clk-mt8173.c             | 104 ------
 drivers/gpu/drm/mediatek/Kconfig              |   1 +
 drivers/gpu/drm/mediatek/mtk_disp_color.c     |   5 +-
 drivers/gpu/drm/mediatek/mtk_disp_ovl.c       |   5 +-
 drivers/gpu/drm/mediatek/mtk_disp_rdma.c      |   5 +-
 drivers/gpu/drm/mediatek/mtk_dpi.c            |  12 +-
 drivers/gpu/drm/mediatek/mtk_drm_crtc.c       |  19 +-
 drivers/gpu/drm/mediatek/mtk_drm_ddp.c        | 259 +-------------
 drivers/gpu/drm/mediatek/mtk_drm_ddp.h        |   7 -
 drivers/gpu/drm/mediatek/mtk_drm_drv.c        |  45 +--
 drivers/gpu/drm/mediatek/mtk_drm_drv.h        |   2 +-
 drivers/gpu/drm/mediatek/mtk_dsi.c            |   8 +-
 drivers/gpu/drm/mediatek/mtk_hdmi.c           |   4 +-
 drivers/soc/mediatek/Kconfig                  |   8 +
 drivers/soc/mediatek/Makefile                 |   1 +
 drivers/soc/mediatek/mtk-mmsys.c              | 335 ++++++++++++++++++
 include/linux/soc/mediatek/mtk-mmsys.h        |  20 ++
 21 files changed, 590 insertions(+), 411 deletions(-)
 create mode 100644 drivers/clk/mediatek/clk-mt8173-mm.c
 create mode 100644 drivers/soc/mediatek/mtk-mmsys.c
 create mode 100644 include/linux/soc/mediatek/mtk-mmsys.h

Comments

CK Hu (胡俊光) March 11, 2020, 1:01 p.m. UTC | #1
Hi, Enric:

I'm confused this is v11 or v12.
For v12, you've lost some 'Acked-by' and 'Reviewed-by' tag.

Regards,
CK

On Wed, 2020-03-11 at 12:56 +0100, Enric Balletbo i Serra wrote:
> Dear all,
> 
> These patches are intended to solve an old standing issue on some
> Mediatek devices (mt8173, mt2701 and mt2712 are affected by this issue).
> 
> Up to now both drivers, clock and drm are probed with the same device tree
> compatible. But only the first driver gets probed, which in effect breaks
> graphics on those devices.
> 
> The MMSYS (Multimedia subsystem) in Mediatek SoCs has some registers to
> control clock gates (which is used in the clk driver) and some registers
> to set the routing and enable the differnet blocks of the display
> and MDP (Media Data Path) subsystem. On this series the clk driver is
> not a pure clock controller but a system controller that can provide
> access to the shared registers between the different drivers that need
> it (mediatek-drm and mediatek-mdp). Hence the MMSYS clk driver was moved
> to drivers/soc/mediatek and is the entry point (parent) which will trigger
> the probe of the corresponding mediatek-drm driver.
> 
> **IMPORTANT** This series only fixes the issue on mt8173 to make it
> simple and as is the only platform I can test. Similar changes should be
> applied for mt2701 and mt2712 to have display working.
> 
> These patches apply on top of linux-next.
> 
> For reference, here are the links to the old discussions:
> * v10: https://patchwork.kernel.org/project/linux-mediatek/list/?series=248505
> * v9: https://patchwork.kernel.org/project/linux-clk/list/?series=247591
> * v8: https://patchwork.kernel.org/project/linux-mediatek/list/?series=244891
> * v7: https://patchwork.kernel.org/project/linux-mediatek/list/?series=241217
> * v6: https://patchwork.kernel.org/project/linux-mediatek/list/?series=213219
> * v5: https://patchwork.kernel.org/project/linux-mediatek/list/?series=44063
> * v4:
>   * https://patchwork.kernel.org/patch/10530871/
>   * https://patchwork.kernel.org/patch/10530883/
>   * https://patchwork.kernel.org/patch/10530885/
>   * https://patchwork.kernel.org/patch/10530911/
>   * https://patchwork.kernel.org/patch/10530913/
> * v3:
>   * https://patchwork.kernel.org/patch/10367857/
>   * https://patchwork.kernel.org/patch/10367861/
>   * https://patchwork.kernel.org/patch/10367877/
>   * https://patchwork.kernel.org/patch/10367875/
>   * https://patchwork.kernel.org/patch/10367885/
>   * https://patchwork.kernel.org/patch/10367883/
>   * https://patchwork.kernel.org/patch/10367889/
>   * https://patchwork.kernel.org/patch/10367907/
>   * https://patchwork.kernel.org/patch/10367909/
>   * https://patchwork.kernel.org/patch/10367905/
> * v2: No relevant discussion, see v3
> * v1:
>   * https://patchwork.kernel.org/patch/10016497/
>   * https://patchwork.kernel.org/patch/10016499/
>   * https://patchwork.kernel.org/patch/10016505/
>   * https://patchwork.kernel.org/patch/10016507/
> 
> Best regards,
>  Enric
> 
> Changes in v11:
> - Leave the clocks part in drivers/clk (clk-mt8173-mm)
> - Instantiate the clock driver from the mtk-mmsys driver.
> - Add default config option to not break anything.
> - Removed the Reviewed-by CK tag as changed the organization.
> 
> Changes in v10:
> - Update the binding documentation for the mmsys system controller.
> - Renamed to be generic mtk-mmsys
> - Add driver data support to be able to support diferent SoCs
> - Select CONFIG_MTK_MMSYS (CK)
> - Pass device pointer of mmsys device instead of config regs (CK)
> - Match driver data to get display routing.
> 
> Changes in v9:
> - Move mmsys to drivers/soc/mediatek (CK)
> - Introduced a new patch to move routing control into mmsys driver.
> - Removed the patch to use regmap as is not needed anymore.
> - Do not move the display routing from the drm driver (CK)
> 
> Changes in v8:
> - Be a builtin_platform_driver like other mediatek mmsys drivers.
> - New patch introduced in this series.
> 
> Changes in v7:
> - Free clk_data->clks as well
> - Get rid of private data structure
> 
> Enric Balletbo i Serra (3):
>   dt-bindings: mediatek: Update mmsys binding to reflect it is a system
>     controller
>   soc / drm: mediatek: Move routing control to mmsys device
>   soc / drm: mediatek: Fix mediatek-drm device probing
> 
> Matthias Brugger (2):
>   drm/mediatek: Omit warning on probe defers
>   clk / soc: mediatek: Move mt8173 MMSYS to platform driver
> 
>  .../bindings/arm/mediatek/mediatek,mmsys.txt  |   7 +-
>  drivers/clk/mediatek/Kconfig                  |   7 +
>  drivers/clk/mediatek/Makefile                 |   1 +
>  drivers/clk/mediatek/clk-mt8173-mm.c          | 146 ++++++++
>  drivers/clk/mediatek/clk-mt8173.c             | 104 ------
>  drivers/gpu/drm/mediatek/Kconfig              |   1 +
>  drivers/gpu/drm/mediatek/mtk_disp_color.c     |   5 +-
>  drivers/gpu/drm/mediatek/mtk_disp_ovl.c       |   5 +-
>  drivers/gpu/drm/mediatek/mtk_disp_rdma.c      |   5 +-
>  drivers/gpu/drm/mediatek/mtk_dpi.c            |  12 +-
>  drivers/gpu/drm/mediatek/mtk_drm_crtc.c       |  19 +-
>  drivers/gpu/drm/mediatek/mtk_drm_ddp.c        | 259 +-------------
>  drivers/gpu/drm/mediatek/mtk_drm_ddp.h        |   7 -
>  drivers/gpu/drm/mediatek/mtk_drm_drv.c        |  45 +--
>  drivers/gpu/drm/mediatek/mtk_drm_drv.h        |   2 +-
>  drivers/gpu/drm/mediatek/mtk_dsi.c            |   8 +-
>  drivers/gpu/drm/mediatek/mtk_hdmi.c           |   4 +-
>  drivers/soc/mediatek/Kconfig                  |   8 +
>  drivers/soc/mediatek/Makefile                 |   1 +
>  drivers/soc/mediatek/mtk-mmsys.c              | 335 ++++++++++++++++++
>  include/linux/soc/mediatek/mtk-mmsys.h        |  20 ++
>  21 files changed, 590 insertions(+), 411 deletions(-)
>  create mode 100644 drivers/clk/mediatek/clk-mt8173-mm.c
>  create mode 100644 drivers/soc/mediatek/mtk-mmsys.c
>  create mode 100644 include/linux/soc/mediatek/mtk-mmsys.h
>
Enric Balletbo i Serra March 11, 2020, 3:53 p.m. UTC | #2
Hi CK,

On 11/3/20 14:01, CK Hu wrote:
> Hi, Enric:
> 
> I'm confused this is v11 or v12.
> For v12, you've lost some 'Acked-by' and 'Reviewed-by' tag.
> 

Right, sorry about that, I messed my workflow after a patman upgrade that didn't
work. I'll collect the acks and reviews and send a v12 later today, so it's
clear which patches to apply.

Thanks,
 Enric

> Regards,
> CK
> 
> On Wed, 2020-03-11 at 12:56 +0100, Enric Balletbo i Serra wrote:
>> Dear all,
>>
>> These patches are intended to solve an old standing issue on some
>> Mediatek devices (mt8173, mt2701 and mt2712 are affected by this issue).
>>
>> Up to now both drivers, clock and drm are probed with the same device tree
>> compatible. But only the first driver gets probed, which in effect breaks
>> graphics on those devices.
>>
>> The MMSYS (Multimedia subsystem) in Mediatek SoCs has some registers to
>> control clock gates (which is used in the clk driver) and some registers
>> to set the routing and enable the differnet blocks of the display
>> and MDP (Media Data Path) subsystem. On this series the clk driver is
>> not a pure clock controller but a system controller that can provide
>> access to the shared registers between the different drivers that need
>> it (mediatek-drm and mediatek-mdp). Hence the MMSYS clk driver was moved
>> to drivers/soc/mediatek and is the entry point (parent) which will trigger
>> the probe of the corresponding mediatek-drm driver.
>>
>> **IMPORTANT** This series only fixes the issue on mt8173 to make it
>> simple and as is the only platform I can test. Similar changes should be
>> applied for mt2701 and mt2712 to have display working.
>>
>> These patches apply on top of linux-next.
>>
>> For reference, here are the links to the old discussions:
>> * v10: https://patchwork.kernel.org/project/linux-mediatek/list/?series=248505
>> * v9: https://patchwork.kernel.org/project/linux-clk/list/?series=247591
>> * v8: https://patchwork.kernel.org/project/linux-mediatek/list/?series=244891
>> * v7: https://patchwork.kernel.org/project/linux-mediatek/list/?series=241217
>> * v6: https://patchwork.kernel.org/project/linux-mediatek/list/?series=213219
>> * v5: https://patchwork.kernel.org/project/linux-mediatek/list/?series=44063
>> * v4:
>>   * https://patchwork.kernel.org/patch/10530871/
>>   * https://patchwork.kernel.org/patch/10530883/
>>   * https://patchwork.kernel.org/patch/10530885/
>>   * https://patchwork.kernel.org/patch/10530911/
>>   * https://patchwork.kernel.org/patch/10530913/
>> * v3:
>>   * https://patchwork.kernel.org/patch/10367857/
>>   * https://patchwork.kernel.org/patch/10367861/
>>   * https://patchwork.kernel.org/patch/10367877/
>>   * https://patchwork.kernel.org/patch/10367875/
>>   * https://patchwork.kernel.org/patch/10367885/
>>   * https://patchwork.kernel.org/patch/10367883/
>>   * https://patchwork.kernel.org/patch/10367889/
>>   * https://patchwork.kernel.org/patch/10367907/
>>   * https://patchwork.kernel.org/patch/10367909/
>>   * https://patchwork.kernel.org/patch/10367905/
>> * v2: No relevant discussion, see v3
>> * v1:
>>   * https://patchwork.kernel.org/patch/10016497/
>>   * https://patchwork.kernel.org/patch/10016499/
>>   * https://patchwork.kernel.org/patch/10016505/
>>   * https://patchwork.kernel.org/patch/10016507/
>>
>> Best regards,
>>  Enric
>>
>> Changes in v11:
>> - Leave the clocks part in drivers/clk (clk-mt8173-mm)
>> - Instantiate the clock driver from the mtk-mmsys driver.
>> - Add default config option to not break anything.
>> - Removed the Reviewed-by CK tag as changed the organization.
>>
>> Changes in v10:
>> - Update the binding documentation for the mmsys system controller.
>> - Renamed to be generic mtk-mmsys
>> - Add driver data support to be able to support diferent SoCs
>> - Select CONFIG_MTK_MMSYS (CK)
>> - Pass device pointer of mmsys device instead of config regs (CK)
>> - Match driver data to get display routing.
>>
>> Changes in v9:
>> - Move mmsys to drivers/soc/mediatek (CK)
>> - Introduced a new patch to move routing control into mmsys driver.
>> - Removed the patch to use regmap as is not needed anymore.
>> - Do not move the display routing from the drm driver (CK)
>>
>> Changes in v8:
>> - Be a builtin_platform_driver like other mediatek mmsys drivers.
>> - New patch introduced in this series.
>>
>> Changes in v7:
>> - Free clk_data->clks as well
>> - Get rid of private data structure
>>
>> Enric Balletbo i Serra (3):
>>   dt-bindings: mediatek: Update mmsys binding to reflect it is a system
>>     controller
>>   soc / drm: mediatek: Move routing control to mmsys device
>>   soc / drm: mediatek: Fix mediatek-drm device probing
>>
>> Matthias Brugger (2):
>>   drm/mediatek: Omit warning on probe defers
>>   clk / soc: mediatek: Move mt8173 MMSYS to platform driver
>>
>>  .../bindings/arm/mediatek/mediatek,mmsys.txt  |   7 +-
>>  drivers/clk/mediatek/Kconfig                  |   7 +
>>  drivers/clk/mediatek/Makefile                 |   1 +
>>  drivers/clk/mediatek/clk-mt8173-mm.c          | 146 ++++++++
>>  drivers/clk/mediatek/clk-mt8173.c             | 104 ------
>>  drivers/gpu/drm/mediatek/Kconfig              |   1 +
>>  drivers/gpu/drm/mediatek/mtk_disp_color.c     |   5 +-
>>  drivers/gpu/drm/mediatek/mtk_disp_ovl.c       |   5 +-
>>  drivers/gpu/drm/mediatek/mtk_disp_rdma.c      |   5 +-
>>  drivers/gpu/drm/mediatek/mtk_dpi.c            |  12 +-
>>  drivers/gpu/drm/mediatek/mtk_drm_crtc.c       |  19 +-
>>  drivers/gpu/drm/mediatek/mtk_drm_ddp.c        | 259 +-------------
>>  drivers/gpu/drm/mediatek/mtk_drm_ddp.h        |   7 -
>>  drivers/gpu/drm/mediatek/mtk_drm_drv.c        |  45 +--
>>  drivers/gpu/drm/mediatek/mtk_drm_drv.h        |   2 +-
>>  drivers/gpu/drm/mediatek/mtk_dsi.c            |   8 +-
>>  drivers/gpu/drm/mediatek/mtk_hdmi.c           |   4 +-
>>  drivers/soc/mediatek/Kconfig                  |   8 +
>>  drivers/soc/mediatek/Makefile                 |   1 +
>>  drivers/soc/mediatek/mtk-mmsys.c              | 335 ++++++++++++++++++
>>  include/linux/soc/mediatek/mtk-mmsys.h        |  20 ++
>>  21 files changed, 590 insertions(+), 411 deletions(-)
>>  create mode 100644 drivers/clk/mediatek/clk-mt8173-mm.c
>>  create mode 100644 drivers/soc/mediatek/mtk-mmsys.c
>>  create mode 100644 include/linux/soc/mediatek/mtk-mmsys.h
>>
>