aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYu Zhang <yu.c.zhang@linux.intel.com>2014-10-23 03:28:24 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2014-10-24 10:34:13 -0400
commit43d942a780efe72b426d30dc112f5eb2fc7eec3a (patch)
treef015945224461a740f233edaf6d683c766b2f996
parent6d729bff304f3b81062e21cd333a639fda4244b3 (diff)
drm/i915: use macros to assign mmio access functions
This is beautification prep work since vgt will add even more special cases. With these macros it's much easier to see what's going on really. Signed-off-by: Yu Zhang <yu.c.zhang@linux.intel.com> [danvet: #undef the temporary macros after the function again. And write a commit message.] Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--drivers/gpu/drm/i915/intel_uncore.c78
1 files changed, 30 insertions, 48 deletions
diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
index 0b0f4f85c4f2..964805ce4d2c 100644
--- a/drivers/gpu/drm/i915/intel_uncore.c
+++ b/drivers/gpu/drm/i915/intel_uncore.c
@@ -823,6 +823,22 @@ __gen4_write(64)
823#undef REG_WRITE_FOOTER 823#undef REG_WRITE_FOOTER
824#undef REG_WRITE_HEADER 824#undef REG_WRITE_HEADER
825 825
826#define ASSIGN_WRITE_MMIO_VFUNCS(x) \
827do { \
828 dev_priv->uncore.funcs.mmio_writeb = x##_write8; \
829 dev_priv->uncore.funcs.mmio_writew = x##_write16; \
830 dev_priv->uncore.funcs.mmio_writel = x##_write32; \
831 dev_priv->uncore.funcs.mmio_writeq = x##_write64; \
832} while (0)
833
834#define ASSIGN_READ_MMIO_VFUNCS(x) \
835do { \
836 dev_priv->uncore.funcs.mmio_readb = x##_read8; \
837 dev_priv->uncore.funcs.mmio_readw = x##_read16; \
838 dev_priv->uncore.funcs.mmio_readl = x##_read32; \
839 dev_priv->uncore.funcs.mmio_readq = x##_read64; \
840} while (0)
841
826void intel_uncore_init(struct drm_device *dev) 842void intel_uncore_init(struct drm_device *dev)
827{ 843{
828 struct drm_i915_private *dev_priv = dev->dev_private; 844 struct drm_i915_private *dev_priv = dev->dev_private;
@@ -879,76 +895,42 @@ void intel_uncore_init(struct drm_device *dev)
879 switch (INTEL_INFO(dev)->gen) { 895 switch (INTEL_INFO(dev)->gen) {
880 default: 896 default:
881 if (IS_CHERRYVIEW(dev)) { 897 if (IS_CHERRYVIEW(dev)) {
882 dev_priv->uncore.funcs.mmio_writeb = chv_write8; 898 ASSIGN_WRITE_MMIO_VFUNCS(chv);
883 dev_priv->uncore.funcs.mmio_writew = chv_write16; 899 ASSIGN_READ_MMIO_VFUNCS(chv);
884 dev_priv->uncore.funcs.mmio_writel = chv_write32;
885 dev_priv->uncore.funcs.mmio_writeq = chv_write64;
886 dev_priv->uncore.funcs.mmio_readb = chv_read8;
887 dev_priv->uncore.funcs.mmio_readw = chv_read16;
888 dev_priv->uncore.funcs.mmio_readl = chv_read32;
889 dev_priv->uncore.funcs.mmio_readq = chv_read64;
890 900
891 } else { 901 } else {
892 dev_priv->uncore.funcs.mmio_writeb = gen8_write8; 902 ASSIGN_WRITE_MMIO_VFUNCS(gen8);
893 dev_priv->uncore.funcs.mmio_writew = gen8_write16; 903 ASSIGN_READ_MMIO_VFUNCS(gen6);
894 dev_priv->uncore.funcs.mmio_writel = gen8_write32;
895 dev_priv->uncore.funcs.mmio_writeq = gen8_write64;
896 dev_priv->uncore.funcs.mmio_readb = gen6_read8;
897 dev_priv->uncore.funcs.mmio_readw = gen6_read16;
898 dev_priv->uncore.funcs.mmio_readl = gen6_read32;
899 dev_priv->uncore.funcs.mmio_readq = gen6_read64;
900 } 904 }
901 break; 905 break;
902 case 7: 906 case 7:
903 case 6: 907 case 6:
904 if (IS_HASWELL(dev)) { 908 if (IS_HASWELL(dev)) {
905 dev_priv->uncore.funcs.mmio_writeb = hsw_write8; 909 ASSIGN_WRITE_MMIO_VFUNCS(hsw);
906 dev_priv->uncore.funcs.mmio_writew = hsw_write16;
907 dev_priv->uncore.funcs.mmio_writel = hsw_write32;
908 dev_priv->uncore.funcs.mmio_writeq = hsw_write64;
909 } else { 910 } else {
910 dev_priv->uncore.funcs.mmio_writeb = gen6_write8; 911 ASSIGN_WRITE_MMIO_VFUNCS(gen6);
911 dev_priv->uncore.funcs.mmio_writew = gen6_write16;
912 dev_priv->uncore.funcs.mmio_writel = gen6_write32;
913 dev_priv->uncore.funcs.mmio_writeq = gen6_write64;
914 } 912 }
915 913
916 if (IS_VALLEYVIEW(dev)) { 914 if (IS_VALLEYVIEW(dev)) {
917 dev_priv->uncore.funcs.mmio_readb = vlv_read8; 915 ASSIGN_READ_MMIO_VFUNCS(vlv);
918 dev_priv->uncore.funcs.mmio_readw = vlv_read16;
919 dev_priv->uncore.funcs.mmio_readl = vlv_read32;
920 dev_priv->uncore.funcs.mmio_readq = vlv_read64;
921 } else { 916 } else {
922 dev_priv->uncore.funcs.mmio_readb = gen6_read8; 917 ASSIGN_READ_MMIO_VFUNCS(gen6);
923 dev_priv->uncore.funcs.mmio_readw = gen6_read16;
924 dev_priv->uncore.funcs.mmio_readl = gen6_read32;
925 dev_priv->uncore.funcs.mmio_readq = gen6_read64;
926 } 918 }
927 break; 919 break;
928 case 5: 920 case 5:
929 dev_priv->uncore.funcs.mmio_writeb = gen5_write8; 921 ASSIGN_WRITE_MMIO_VFUNCS(gen5);
930 dev_priv->uncore.funcs.mmio_writew = gen5_write16; 922 ASSIGN_READ_MMIO_VFUNCS(gen5);
931 dev_priv->uncore.funcs.mmio_writel = gen5_write32;
932 dev_priv->uncore.funcs.mmio_writeq = gen5_write64;
933 dev_priv->uncore.funcs.mmio_readb = gen5_read8;
934 dev_priv->uncore.funcs.mmio_readw = gen5_read16;
935 dev_priv->uncore.funcs.mmio_readl = gen5_read32;
936 dev_priv->uncore.funcs.mmio_readq = gen5_read64;
937 break; 923 break;
938 case 4: 924 case 4:
939 case 3: 925 case 3:
940 case 2: 926 case 2:
941 dev_priv->uncore.funcs.mmio_writeb = gen4_write8; 927 ASSIGN_WRITE_MMIO_VFUNCS(gen4);
942 dev_priv->uncore.funcs.mmio_writew = gen4_write16; 928 ASSIGN_READ_MMIO_VFUNCS(gen4);
943 dev_priv->uncore.funcs.mmio_writel = gen4_write32;
944 dev_priv->uncore.funcs.mmio_writeq = gen4_write64;
945 dev_priv->uncore.funcs.mmio_readb = gen4_read8;
946 dev_priv->uncore.funcs.mmio_readw = gen4_read16;
947 dev_priv->uncore.funcs.mmio_readl = gen4_read32;
948 dev_priv->uncore.funcs.mmio_readq = gen4_read64;
949 break; 929 break;
950 } 930 }
951} 931}
932#undef ASSIGN_WRITE_MMIO_VFUNCS
933#undef ASSIGN_READ_MMIO_VFUNCS
952 934
953void intel_uncore_fini(struct drm_device *dev) 935void intel_uncore_fini(struct drm_device *dev)
954{ 936{