[PATCH v2 00/10] drm/ast: Detect device type before init

Thomas Zimmermann tzimmermann at suse.de
Mon Nov 20 06:53:47 UTC 2023


Hi

Am 18.11.23 um 16:06 schrieb Sui Jingfeng:
> Hi,
> 
> 
> On 2023/11/16 17:59, Thomas Zimmermann wrote:
>> Detecting the ast device's chipset type and configuration mode
>> involves several registers, DT properties and possibly POSTing
>> parts of the chip. It is preferable to do this before initializing
>> the DRM driver, so that that each chip type can have an individual
>> setup code.
>>
>> The patchset addresses the problem by moving all early detection
>> code before the allocation of the ast device.
>>
>> Patch one gets a lock out of the way. The lock is only relevant
>> for mode setting. Move it there.
>>
>> Patches 2 and 3 rework the detection of the correct I/O memory
>> ranges. It is now self-contained, more readable and works without
>> an instance of struct ast_device.
>>
>> Patches 4 to 7 rework the setup of various registers that are
>> required for detection. Access helpers for I/O can now operate
>> without an instance of struct ast_device. The setup functions
>> operate on the I/O ranges that have been made available with
>> patch 3, but again without struct ast_device.
>>
>> With the detection's internals done, patches 8 and 9 rework the
>> chip's and config-mode's detection code to operate without struct
>> ast_device as well.
>>
>> Finally, patch 10 moves the detection code into the PCI probe
>> function. it runs before any of the DRM device code. The function
>> for creating an ast device, ast_device_create(), receives the
>> detected I/O memory ranges, chip type and configuration mode.
>>
>> This cleans up the detection code. There is more chip-specific
>> code in other parts of the driver. In a later patch, the ast device
>> setup can be split up so that each chip type gets its own code
>> path that does not interfere with other chips.
>>
>> Tested on AST1100 and AST2100.
> 
> 
> Tested-by: Sui Jingfeng <suijingfeng at loongson.cn>
> 
> 
> Still works, The whole series is tested with AST2400 hardware on X86-64.

Thanks a lot. I'll fix up the typo you spotted when I merge the patches.

Best regards
Thomas

> 
> 
> $ sudo dmesg | grep "03:00.0"
> 
> ast 0000:03:00.0: Using P2A bridge for configuration
> ast 0000:03:00.0: AST 2400 detected
> ast 0000:03:00.0: [drm] Using analog VGA
> ast 0000:03:00.0: [drm] dram MCLK=396 Mhz type=6 bus_width=16
> [drm] Initialized ast 0.1.0 20120228 for 0000:03:00.0 on minor 0
> ast 0000:03:00.0: [drm] fb0: astdrmfb frame buffer device
> 
> 
>> v2:
>>     * add missing break statements (Jocelyn)
>>     * fix length test for I/O range
>>
>> Thomas Zimmermann (10):
>>    drm/ast: Turn ioregs_lock to modeset_lock
>>    drm/ast: Rework I/O register setup
>>    drm/ast: Retrieve I/O-memory ranges without ast device
>>    drm/ast: Add I/O helpers without ast device
>>    drm/ast: Enable VGA without ast device instance
>>    drm/ast: Enable MMIO without ast device instance
>>    drm/ast: Partially implement POST without ast device instance
>>    drm/ast: Add enum ast_config_mode
>>    drm/ast: Detect ast device type and config mode without ast device
>>    drm/ast: Move detection code into PCI probe helper
>>
>>   drivers/gpu/drm/ast/ast_drv.c  | 263 ++++++++++++++++++++++++++++++++-
>>   drivers/gpu/drm/ast/ast_drv.h  | 101 +++++++++----
>>   drivers/gpu/drm/ast/ast_main.c | 244 ++----------------------------
>>   drivers/gpu/drm/ast/ast_mode.c |  26 ++--
>>   drivers/gpu/drm/ast/ast_post.c |  73 +++++----
>>   drivers/gpu/drm/ast/ast_reg.h  |  12 +-
>>   6 files changed, 413 insertions(+), 306 deletions(-)
>>
>>
>> base-commit: b7816c393496dc4497c1327310821407f7171d8b
>> prerequisite-patch-id: 0aa359f6144c4015c140c8a6750be19099c676fb
>> prerequisite-patch-id: c67e5d886a47b7d0266d81100837557fda34cb24
>> prerequisite-patch-id: cbc453ee02fae02af22fbfdce56ab732c7a88c36

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20231120/de46f285/attachment-0001.sig>


More information about the dri-devel mailing list