On 2019/07/22, Sam Ravnborg wrote: > Hi Email. > > > > > IMHO a far better idea is to expand these macros as static inline functions. > > > > The extra bonus here is that the pseudo-magical VIA_BASE will also disappear. > > > > > > > > Since all the VIA_READ8 are used for masking, one might as well drop > > > > them in favour of via_mask(). > > Like this: > static inline u32 via_read(struct drm_via_private *dev_priv, u32 reg) > { > return readl((void __iomem *)(dev_priv->mmio->handle + reg)); > } > > static inline void via_write(struct drm_via_private *dev_priv, u32 reg, > u32 val) > { > writel(val, (void __iomem *)(dev_priv->mmio->handle + reg)); > } > > static inline void via_write8(struct drm_via_private *dev_priv, u32 reg, > u32 val) > { > writeb(val, (void __iomem *)(dev_priv->mmio->handle + reg)); > } > > static inline void via_write8_mask_or(struct drm_via_private *dev_priv, > u32 reg, u32 mask) > { > u32 val; > > val = readb((void __iomem *)(dev_priv->mmio->handle + reg)); > writeb(val | mask, (void __iomem *)(dev_priv->mmio->handle + reg)); > } > > static inline void via_write8_mask_and(struct drm_via_private *dev_priv, > u32 reg, u32 mask) > { > u32 val; > > val = readb((void __iomem *)(dev_priv->mmio->handle + reg)); > writeb(val & mask, (void __iomem *)(dev_priv->mmio->handle + reg)); > } > > Patches are almost ready, but if there is any quick feedback let me > know. > Don't think I've seen any "mask_and" "mask_or" API in DRM. The common theme seems to be: mtk_cec_mask(driver_priv, offset, value, mask) malidp_write32_mask(driver_priv, offset, mask, value) nvif_mask(driver_priv, address, mask, value) HTH Emil _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel