drivers/gpu/drm/Makefile | 2 - drivers/gpu/drm/via/Kconfig | 2 - drivers/gpu/drm/via/Makefile | 2 - drivers/gpu/drm/via/via_drv.c | 5 +-- drivers/gpu/drm/via/via_drv.h | 12 +++---- drivers/gpu/drm/via/via_ioctl.c | 25 +++------------ include/uapi/drm/via_drm.h | 66 ++++++++++++++++++++++++++++------------ 7 files changed, 62 insertions(+), 52 deletions(-)
New commits: commit ded8ec0d2643f48fe857df54a64d22e4aef8ab95 Author: Kevin Brace <kevinbr...@bracecomputerlab.com> Date: Thu Sep 8 16:37:54 2022 -0700 drm/via: Version bumped to 3.6.0 Signed-off-by: Kevin Brace <kevinbr...@bracecomputerlab.com> diff --git a/drivers/gpu/drm/via/via_drv.h b/drivers/gpu/drm/via/via_drv.h index 4d8ca542575b..282231c467ac 100644 --- a/drivers/gpu/drm/via/via_drv.h +++ b/drivers/gpu/drm/via/via_drv.h @@ -49,11 +49,11 @@ #define DRIVER_MAJOR 3 -#define DRIVER_MINOR 5 -#define DRIVER_PATCHLEVEL 8 +#define DRIVER_MINOR 6 +#define DRIVER_PATCHLEVEL 0 #define DRIVER_NAME "via" #define DRIVER_DESC "OpenChrome DRM for VIA Technologies Chrome" -#define DRIVER_DATE "20220728" +#define DRIVER_DATE "20220908" #define DRIVER_AUTHOR "OpenChrome Project" commit fb3aaee89bf148aefdd72d6c9d7080ea647e6125 Author: Kevin Brace <kevinbr...@bracecomputerlab.com> Date: Thu Sep 8 16:37:52 2022 -0700 drm/via: Change the makefile configuration name back to VIA Suggested-by: Sam Ravnborg <s...@ravnborg.org> Signed-off-by: Kevin Brace <kevinbr...@bracecomputerlab.com> diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile index 7f76270c2b47..cda36292decd 100644 --- a/drivers/gpu/drm/Makefile +++ b/drivers/gpu/drm/Makefile @@ -98,7 +98,7 @@ obj-$(CONFIG_DRM_VC4) += vc4/ obj-$(CONFIG_DRM_SIS) += sis/ obj-$(CONFIG_DRM_SAVAGE)+= savage/ obj-$(CONFIG_DRM_VMWGFX)+= vmwgfx/ -obj-$(CONFIG_DRM_OPENCHROME) +=via/ +obj-$(CONFIG_DRM_VIA) += via/ obj-$(CONFIG_DRM_VGEM) += vgem/ obj-$(CONFIG_DRM_VKMS) += vkms/ obj-$(CONFIG_DRM_NOUVEAU) +=nouveau/ diff --git a/drivers/gpu/drm/via/Kconfig b/drivers/gpu/drm/via/Kconfig index 7c4656a1d473..fa6ade047a37 100644 --- a/drivers/gpu/drm/via/Kconfig +++ b/drivers/gpu/drm/via/Kconfig @@ -1,4 +1,4 @@ -config DRM_OPENCHROME +config DRM_VIA tristate "OpenChrome (VIA Technologies Chrome)" depends on DRM && PCI && X86 select DRM_KMS_HELPER diff --git a/drivers/gpu/drm/via/Makefile b/drivers/gpu/drm/via/Makefile index 73ccacb4cd11..096128c9d910 100644 --- a/drivers/gpu/drm/via/Makefile +++ b/drivers/gpu/drm/via/Makefile @@ -23,4 +23,4 @@ via-y := via_crtc.o \ via_ttm.o \ via_vt1632.o -obj-$(CONFIG_DRM_OPENCHROME) += via.o +obj-$(CONFIG_DRM_VIA) += via.o commit 45213acf1ec9c362f487214da61feb5f8f7a2158 Author: Kevin Brace <kevinbr...@bracecomputerlab.com> Date: Thu Sep 8 16:37:50 2022 -0700 drm/via: Update uAPI header copyright Signed-off-by: Kevin Brace <kevinbr...@bracecomputerlab.com> diff --git a/include/uapi/drm/via_drm.h b/include/uapi/drm/via_drm.h index 129dfcd28feb..e36c1656f237 100644 --- a/include/uapi/drm/via_drm.h +++ b/include/uapi/drm/via_drm.h @@ -1,5 +1,5 @@ /* - * Copyright © 2020 Kevin Brace + * Copyright © 2020-2022 Kevin Brace * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved. * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved. * commit 0a4a5dc1458979fab92a08535b64e96d5bffaf0f Author: Kevin Brace <kevinbr...@bracecomputerlab.com> Date: Thu Sep 8 16:37:47 2022 -0700 drm/via: Add comments to uAPI IOCTL structs Suggested-by: Sam Ravnborg <s...@ravnborg.org> Signed-off-by: Kevin Brace <kevinbr...@bracecomputerlab.com> diff --git a/include/uapi/drm/via_drm.h b/include/uapi/drm/via_drm.h index a880b154ee74..129dfcd28feb 100644 --- a/include/uapi/drm/via_drm.h +++ b/include/uapi/drm/via_drm.h @@ -292,18 +292,41 @@ typedef struct drm_via_dmablit { /* * OpenChrome DRM IOCTL structs */ + +/** + * struct drm_via_gem_alloc - IOCTL argument for allocating a GEM based BO + * (Buffer Object). + */ struct drm_via_gem_alloc { + /* Alignment of the BO. */ __u32 alignment; __u32 pad; + + /* Size of the BO. Note that the actual size gets returned from DRM.*/ __u64 size; + + /* + * TTM domain of the BO. Note that the actual domain gets returned + * from DRM. + */ __u32 domain; + + /* GEM handle to the BO returned from DRM. */ __u32 handle; + + /* Offset returned from DRM. */ __u64 offset; }; +/** + * struct drm_via_gem_mmap - IOCTL argument for mapping a GEM based BO. + */ struct drm_via_gem_mmap { + /* GEM handle of the BO. */ __u32 handle; __u32 pad; + + /* Offset returned from DRM. */ __u64 offset; }; commit 38d791fb0c4a9cf0f1f668f6e1a11a5ad71db21e Author: Kevin Brace <kevinbr...@bracecomputerlab.com> Date: Thu Sep 8 16:37:45 2022 -0700 drm/via: Pad uAPI IOCTL structs to a 64-bit boundary Suggested-by: Daniel Vetter <dan...@ffwll.ch> Signed-off-by: Kevin Brace <kevinbr...@bracecomputerlab.com> Link: https://blog.ffwll.ch/2013/11/botching-up-ioctls.html diff --git a/include/uapi/drm/via_drm.h b/include/uapi/drm/via_drm.h index f2560cbef029..a880b154ee74 100644 --- a/include/uapi/drm/via_drm.h +++ b/include/uapi/drm/via_drm.h @@ -294,6 +294,7 @@ typedef struct drm_via_dmablit { */ struct drm_via_gem_alloc { __u32 alignment; + __u32 pad; __u64 size; __u32 domain; __u32 handle; @@ -302,6 +303,7 @@ struct drm_via_gem_alloc { struct drm_via_gem_mmap { __u32 handle; + __u32 pad; __u64 offset; }; commit 07c3a37aafd4057628640900809ace83ffa2d2b7 Author: Kevin Brace <kevinbr...@bracecomputerlab.com> Date: Thu Sep 8 16:37:42 2022 -0700 drm/via: Convert from uint*_t to __u* Examples include conversion to __u32 and __u64 types. Suggested-by: Daniel Vetter <dan...@ffwll.ch> Signed-off-by: Kevin Brace <kevinbr...@bracecomputerlab.com> Link: https://blog.ffwll.ch/2013/11/botching-up-ioctls.html diff --git a/include/uapi/drm/via_drm.h b/include/uapi/drm/via_drm.h index 1cceba529d9e..f2560cbef029 100644 --- a/include/uapi/drm/via_drm.h +++ b/include/uapi/drm/via_drm.h @@ -293,16 +293,16 @@ typedef struct drm_via_dmablit { * OpenChrome DRM IOCTL structs */ struct drm_via_gem_alloc { - uint32_t alignment; - uint64_t size; - uint32_t domain; - uint32_t handle; - uint64_t offset; + __u32 alignment; + __u64 size; + __u32 domain; + __u32 handle; + __u64 offset; }; struct drm_via_gem_mmap { - uint32_t handle; - uint64_t offset; + __u32 handle; + __u64 offset; }; #if defined(__cplusplus) commit 45fc9f643f5ab3443325a1b405716060c3633e43 Author: Kevin Brace <kevinbr...@bracecomputerlab.com> Date: Thu Sep 8 16:37:40 2022 -0700 drm/via: Rearrange and rename uAPI IOCTL struct members Signed-off-by: Kevin Brace <kevinbr...@bracecomputerlab.com> diff --git a/drivers/gpu/drm/via/via_ioctl.c b/drivers/gpu/drm/via/via_ioctl.c index 1300ce467fec..1d694d5f04ba 100644 --- a/drivers/gpu/drm/via/via_ioctl.c +++ b/drivers/gpu/drm/via/via_ioctl.c @@ -87,7 +87,7 @@ int via_gem_mmap_ioctl(struct drm_device *dev, void *data, ttm_bo = container_of(gem, struct ttm_buffer_object, base); - args->map_offset = drm_vma_node_offset_addr(&ttm_bo->base.vma_node); + args->offset = drm_vma_node_offset_addr(&ttm_bo->base.vma_node); exit: DRM_DEBUG_KMS("Exiting %s.\n", __func__); return ret; diff --git a/include/uapi/drm/via_drm.h b/include/uapi/drm/via_drm.h index 55b69ac025ce..1cceba529d9e 100644 --- a/include/uapi/drm/via_drm.h +++ b/include/uapi/drm/via_drm.h @@ -293,8 +293,8 @@ typedef struct drm_via_dmablit { * OpenChrome DRM IOCTL structs */ struct drm_via_gem_alloc { - uint64_t size; uint32_t alignment; + uint64_t size; uint32_t domain; uint32_t handle; uint64_t offset; @@ -302,7 +302,7 @@ struct drm_via_gem_alloc { struct drm_via_gem_mmap { uint32_t handle; - uint64_t map_offset; + uint64_t offset; }; #if defined(__cplusplus) commit 7ed42894c8a511538d0ad2c1df4ee1bc06f29032 Author: Kevin Brace <kevinbr...@bracecomputerlab.com> Date: Thu Sep 8 16:37:37 2022 -0700 drm/via: Rename two uAPI IOCTLs to new names Move them to an address starting from 0x20. Signed-off-by: Kevin Brace <kevinbr...@bracecomputerlab.com> diff --git a/drivers/gpu/drm/via/via_drv.c b/drivers/gpu/drm/via/via_drv.c index 3cf72d2f3e61..274df166b394 100644 --- a/drivers/gpu/drm/via/via_drv.c +++ b/drivers/gpu/drm/via/via_drv.c @@ -169,8 +169,8 @@ static const struct drm_ioctl_desc via_driver_ioctls[] = { DRM_IOCTL_DEF_DRV(VIA_WAIT_IRQ, drm_invalid_op, DRM_AUTH), DRM_IOCTL_DEF_DRV(VIA_DMA_BLIT, drm_invalid_op, DRM_AUTH), DRM_IOCTL_DEF_DRV(VIA_BLIT_SYNC, drm_invalid_op, DRM_AUTH), - DRM_IOCTL_DEF_DRV(VIA_GEM_CREATE, via_gem_create_ioctl, DRM_AUTH | DRM_UNLOCKED), - DRM_IOCTL_DEF_DRV(VIA_GEM_MAP, via_gem_map_ioctl, DRM_AUTH | DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(VIA_GEM_ALLOC, via_gem_alloc_ioctl, DRM_AUTH | DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(VIA_GEM_MMAP, via_gem_mmap_ioctl, DRM_AUTH | DRM_UNLOCKED), }; static const struct file_operations via_driver_fops = { diff --git a/drivers/gpu/drm/via/via_drv.h b/drivers/gpu/drm/via/via_drv.h index 5e794544f813..4d8ca542575b 100644 --- a/drivers/gpu/drm/via/via_drv.h +++ b/drivers/gpu/drm/via/via_drv.h @@ -423,9 +423,9 @@ void via_ext_dvi_init(struct drm_device *dev); void via_tmds_init(struct drm_device *dev); void via_lvds_init(struct drm_device *dev); -int via_gem_create_ioctl(struct drm_device *dev, void *data, +int via_gem_alloc_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); -int via_gem_map_ioctl(struct drm_device *dev, void *data, +int via_gem_mmap_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); #endif /* _VIA_DRV_H */ diff --git a/drivers/gpu/drm/via/via_ioctl.c b/drivers/gpu/drm/via/via_ioctl.c index 8eba350bffee..1300ce467fec 100644 --- a/drivers/gpu/drm/via/via_ioctl.c +++ b/drivers/gpu/drm/via/via_ioctl.c @@ -33,10 +33,10 @@ #include "via_drv.h" -int via_gem_create_ioctl(struct drm_device *dev, void *data, +int via_gem_alloc_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv) { - struct drm_via_gem_create *args = data; + struct drm_via_gem_alloc *args = data; struct ttm_buffer_object *ttm_bo; struct via_drm_priv *dev_priv = to_via_drm_priv(dev); struct via_bo *bo; @@ -69,10 +69,10 @@ exit: return ret; } -int via_gem_map_ioctl(struct drm_device *dev, void *data, +int via_gem_mmap_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv) { - struct drm_via_gem_map *args = data; + struct drm_via_gem_mmap *args = data; struct drm_gem_object *gem; struct ttm_buffer_object *ttm_bo; int ret = 0; diff --git a/include/uapi/drm/via_drm.h b/include/uapi/drm/via_drm.h index 5c15fc81c7f3..55b69ac025ce 100644 --- a/include/uapi/drm/via_drm.h +++ b/include/uapi/drm/via_drm.h @@ -82,8 +82,11 @@ extern "C" { #define DRM_VIA_DMA_BLIT 0x0e #define DRM_VIA_BLIT_SYNC 0x0f -#define DRM_VIA_GEM_CREATE 0x10 -#define DRM_VIA_GEM_MAP 0x11 +/* + * OpenChrome DRM IOCTLs + */ +#define DRM_VIA_GEM_ALLOC 0x20 +#define DRM_VIA_GEM_MMAP 0x21 #define DRM_IOCTL_VIA_ALLOCMEM DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_ALLOCMEM, drm_via_mem_t) @@ -102,8 +105,11 @@ extern "C" { #define DRM_IOCTL_VIA_DMA_BLIT DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_DMA_BLIT, drm_via_dmablit_t) #define DRM_IOCTL_VIA_BLIT_SYNC DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_BLIT_SYNC, drm_via_blitsync_t) -#define DRM_IOCTL_VIA_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_GEM_CREATE, struct drm_via_gem_create) -#define DRM_IOCTL_VIA_GEM_MAP DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_GEM_MAP, struct drm_via_gem_map) +/* + * OpenChrome DRM IOCTLs + */ +#define DRM_IOCTL_VIA_GEM_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_GEM_ALLOC, struct drm_via_gem_alloc) +#define DRM_IOCTL_VIA_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_GEM_MMAP, struct drm_via_gem_mmap) /* Indices into buf.Setup where various bits of state are mirrored per * context and per buffer. These can be fired at the card as a unit, @@ -283,7 +289,10 @@ typedef struct drm_via_dmablit { drm_via_blitsync_t sync; } drm_via_dmablit_t; -struct drm_via_gem_create { +/* + * OpenChrome DRM IOCTL structs + */ +struct drm_via_gem_alloc { uint64_t size; uint32_t alignment; uint32_t domain; @@ -291,7 +300,7 @@ struct drm_via_gem_create { uint64_t offset; }; -struct drm_via_gem_map { +struct drm_via_gem_mmap { uint32_t handle; uint64_t map_offset; }; commit f2ebc05cb994de749211ed72d0950ead64733336 Author: Kevin Brace <kevinbr...@bracecomputerlab.com> Date: Thu Sep 8 16:37:35 2022 -0700 drm/via: Discontinue DRM_VIA_GEM_UNMAP uAPI IOCTL Signed-off-by: Kevin Brace <kevinbr...@bracecomputerlab.com> diff --git a/drivers/gpu/drm/via/via_drv.c b/drivers/gpu/drm/via/via_drv.c index 1fa0d624b895..3cf72d2f3e61 100644 --- a/drivers/gpu/drm/via/via_drv.c +++ b/drivers/gpu/drm/via/via_drv.c @@ -171,7 +171,6 @@ static const struct drm_ioctl_desc via_driver_ioctls[] = { DRM_IOCTL_DEF_DRV(VIA_BLIT_SYNC, drm_invalid_op, DRM_AUTH), DRM_IOCTL_DEF_DRV(VIA_GEM_CREATE, via_gem_create_ioctl, DRM_AUTH | DRM_UNLOCKED), DRM_IOCTL_DEF_DRV(VIA_GEM_MAP, via_gem_map_ioctl, DRM_AUTH | DRM_UNLOCKED), - DRM_IOCTL_DEF_DRV(VIA_GEM_UNMAP, via_gem_unmap_ioctl, DRM_AUTH | DRM_UNLOCKED), }; static const struct file_operations via_driver_fops = { diff --git a/drivers/gpu/drm/via/via_drv.h b/drivers/gpu/drm/via/via_drv.h index baf4f9e4c120..5e794544f813 100644 --- a/drivers/gpu/drm/via/via_drv.h +++ b/drivers/gpu/drm/via/via_drv.h @@ -427,7 +427,5 @@ int via_gem_create_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); int via_gem_map_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); -int via_gem_unmap_ioctl(struct drm_device *dev, void *data, - struct drm_file *file_priv); #endif /* _VIA_DRV_H */ diff --git a/drivers/gpu/drm/via/via_ioctl.c b/drivers/gpu/drm/via/via_ioctl.c index 3c772f73fbc0..8eba350bffee 100644 --- a/drivers/gpu/drm/via/via_ioctl.c +++ b/drivers/gpu/drm/via/via_ioctl.c @@ -92,18 +92,3 @@ exit: DRM_DEBUG_KMS("Exiting %s.\n", __func__); return ret; } - -int via_gem_unmap_ioctl(struct drm_device *dev, - void *data, - struct drm_file *file_priv) -{ - struct drm_via_gem_unmap *args = data; - int ret; - - DRM_DEBUG_KMS("Entered %s.\n", __func__); - - ret = drm_gem_handle_delete(file_priv, args->handle); - - DRM_DEBUG_KMS("Exiting %s.\n", __func__); - return ret; -} diff --git a/include/uapi/drm/via_drm.h b/include/uapi/drm/via_drm.h index e9da45ce130a..5c15fc81c7f3 100644 --- a/include/uapi/drm/via_drm.h +++ b/include/uapi/drm/via_drm.h @@ -84,7 +84,6 @@ extern "C" { #define DRM_VIA_GEM_CREATE 0x10 #define DRM_VIA_GEM_MAP 0x11 -#define DRM_VIA_GEM_UNMAP 0x12 #define DRM_IOCTL_VIA_ALLOCMEM DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_ALLOCMEM, drm_via_mem_t) @@ -105,7 +104,6 @@ extern "C" { #define DRM_IOCTL_VIA_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_GEM_CREATE, struct drm_via_gem_create) #define DRM_IOCTL_VIA_GEM_MAP DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_GEM_MAP, struct drm_via_gem_map) -#define DRM_IOCTL_VIA_GEM_UNMAP DRM_IOR(DRM_COMMAND_BASE + DRM_VIA_GEM_UNMAP, struct drm_via_gem_unmap) /* Indices into buf.Setup where various bits of state are mirrored per * context and per buffer. These can be fired at the card as a unit, @@ -298,10 +296,6 @@ struct drm_via_gem_map { uint64_t map_offset; }; -struct drm_via_gem_unmap { - uint32_t handle; -}; - #if defined(__cplusplus) } #endif