video: tegra: host: Reassign T124 sync points
Terje Bergstrom [Fri, 1 Mar 2013 11:46:02 +0000 (13:46 +0200)]
Reassign T124 sync points and remove overlaps. Also add a second
sync point for MSENC. Also moves all sync point definitions to the
same file.

Change-Id: I5f9fe9f671edc92f6b0fe35c521a1e896f5d3e48
Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com>
Reviewed-on: http://git-master/r/205566
Reviewed-by: Amit Arora <amita@nvidia.com>
Reviewed-by: Juha Tukkinen <jtukkinen@nvidia.com>

drivers/video/tegra/host/t124/syncpt_t124.h
drivers/video/tegra/host/t124/t124.c
drivers/video/tegra/host/t124/t124.h
include/linux/nvhost.h

index 04bc9bf..8e19782 100644 (file)
 #ifndef __NVHOST_SYNCPT_T124_H
 #define __NVHOST_SYNCPT_T124_H
 
-#include "host1x/host1x_syncpt.h"
+#include <linux/nvhost.h>
 
-#define NVSYNCPT_ISP_0_0       NVSYNCPT_MPE
-#define NVSYNCPT_ISP_0_1       1
-#define NVSYNCPT_ISP_0_2       2
-#define NVSYNCPT_ISP_0_3       3
-#define NVSYNCPT_ISP_1_0       4
-#define NVSYNCPT_ISP_1_1       5
-#define NVSYNCPT_ISP_1_2       6
-#define NVSYNCPT_ISP_1_3       7
-#define NVSYNCPT_VI_0_0                NVSYNCPT_VI_ISP_0
-#define NVSYNCPT_VI_0_1                NVSYNCPT_VI_ISP_1
-#define NVSYNCPT_VI_0_2                NVSYNCPT_VI_ISP_2
-#define NVSYNCPT_VI_0_3                NVSYNCPT_VI_ISP_3
-#define NVSYNCPT_VI_0_4                NVSYNCPT_VI_ISP_4
-#define NVSYNCPT_VI_1_0                NVSYNCPT_MPE_EBM_EOF
-#define NVSYNCPT_VI_1_1                NVSYNCPT_MPE_WR_SAFE
-#define NVSYNCPT_VI_1_2                NVSYNCPT_DISP0_B /* !!!FIXME!!! */
-#define NVSYNCPT_VI_1_3                NVSYNCPT_DISP1_B /* !!!FIXME!!! */
-#define NVSYNCPT_VI_1_4                NVSYNCPT_DISP0_C /* !!!FIXME!!! */
-#define NVSYNCPT_TSEC          NVSYNCPT_DISP1_C /* !!!FIXME!!! */
-#define NVSYNCPT_MSENC         NVSYNCPT_MPE
-
-#ifdef CONFIG_ARCH_TEGRA_VIC
-#define NVSYNCPT_VIC           NVSYNCPT_2D_0
-#endif
-
-#define NVSYNCPT_GK20A_BASE 32
+#define NVSYNCPT_GK20A_BASE 64
 /* following is base + number of gk20a channels. TODO: remove magic */
 #define NVSYNCPT_GK20A_LAST (NVSYNCPT_GK20A_BASE + 127)
 
        NVSYNCPT_ISP_1_2, \
        NVSYNCPT_ISP_1_3}
 
-#define NVCAMERA_MANAGED_SYNCPTS { \
-       NV_VI_0_SYNCPTS, NV_VI_1_SYNCPTS, \
-       NV_ISP_0_SYNCPTS, NV_ISP_1_SYNCPTS}
-
 #define NVWAITBASE_3D   (3)
 #define NVWAITBASE_MSENC  (4)
 #define NVWAITBASE_TSEC   (5)
index 77652e5..8ba871f 100644 (file)
@@ -42,6 +42,18 @@ static int t124_num_alloc_channels = 0;
 
 #define HOST_EMC_FLOOR 300000000
 
+#define BIT64(nr) (1ULL << (nr))
+#define NVSYNCPTS_CLIENT_MANAGED_T124 ( \
+       BIT64(NVSYNCPT_DISP0_A) | BIT64(NVSYNCPT_DISP1_A) | \
+       BIT64(NVSYNCPT_DISP0_B) | BIT64(NVSYNCPT_DISP1_B) | \
+       BIT64(NVSYNCPT_DISP0_C) | BIT64(NVSYNCPT_DISP1_C) | \
+       BIT64(NVSYNCPT_DSI) | \
+       BIT64(NVSYNCPT_VBLANK0) | BIT64(NVSYNCPT_VBLANK1) | \
+       BIT64(NVSYNCPT_ISP_0_0) | BIT64(NVSYNCPT_ISP_0_1) | \
+       BIT64(NVSYNCPT_ISP_0_3) | \
+       BIT64(NVSYNCPT_ISP_1_0) | BIT64(NVSYNCPT_ISP_1_1) | \
+       BIT64(NVSYNCPT_ISP_1_3) | BIT64(NVSYNCPT_AVP_0))
+
 static struct resource tegra_host1x04_resources[] = {
        {
                .start = TEGRA_HOST1X_BASE,
@@ -92,7 +104,7 @@ static struct host1x_device_info host1x04_info = {
        .nb_mlocks      = NV_HOST1X_NB_MLOCKS,
        .nb_bases       = NV_HOST1X_SYNCPT_NB_BASES,
        .syncpt_names   = s_syncpt_names,
-       .client_managed = NVSYNCPTS_CLIENT_MANAGED,
+       .client_managed = NVSYNCPTS_CLIENT_MANAGED_T124,
 };
 
 static struct nvhost_device_data tegra_host1x04_info = {
@@ -234,7 +246,7 @@ static struct resource msenc_resources[] = {
 
 static struct nvhost_device_data tegra_msenc03_info = {
        .version       = NVHOST_ENCODE_MSENC_VER(3, 1),
-       .syncpts       = {NVSYNCPT_MSENC},
+       .syncpts       = {NVSYNCPT_MSENC, NVSYNCPT_MSENC_SLICE},
        .waitbases     = {NVWAITBASE_MSENC},
        .class         = NV_VIDEO_ENCODE_MSENC_CLASS_ID,
        .clocks = {{"msenc", UINT_MAX}, {"emc", HOST_EMC_FLOOR} },
index 70bed76..bb3325a 100644 (file)
 #define T124_NVHOST_NUMCHANNELS 12
 #define NVHOST_CHANNEL_BASE 0
 
-/*
- * NOTE: currently we have user-mode code which is relying upon
- * this *exact* ordering of module mutexes across *all* SOCs.
- * For now just deal with it as we have the space to accomodate.
- * The entries marked "n/a" below can be removed when that issue is
- * fixed (and the entries could then be re-ordered/packed).
- */
-#define NVMODMUTEX_2D_FULL_X   (1) /* n/a */
-#define NVMODMUTEX_2D_SIMPLE_X (2) /* n/a */
-#define NVMODMUTEX_2D_SB_A_X   (3) /* n/a */
-#define NVMODMUTEX_2D_SB_B_X   (4) /* n/a */
-#define NVMODMUTEX_3D        (5)
-#define NVMODMUTEX_DISPLAYA  (6)
-#define NVMODMUTEX_DISPLAYB  (7)
-#define NVMODMUTEX_VI_0      (8)
-#define NVMODMUTEX_DSI       (9)
-#ifdef CONFIG_ARCH_TEGRA_VIC
-#define NVMODMUTEX_VIC       (10)
-#endif
-#define NVMODMUTEX_VI_1      (11)
-#define NVMODMUTEX_ISP_0     (1) /* above "1" isn't used in practice on t124 */
-#define NVMODMUTEX_ISP_1     (2) /* above "2" isn't used in practice on t124 */
-
 struct nvhost_chip_support;
 
 int nvhost_init_t124_support(struct nvhost_master *,
index a1b5fc8..43bb62a 100644 (file)
@@ -63,7 +63,9 @@ struct mem_mgr;
 #define NVSYNCPT_VI_ISP_3              (16)    /* t20, t30, t114, t148 */
 #define NVSYNCPT_VI_ISP_4              (17)    /* t20, t30, t114, t148 */
 #define NVSYNCPT_2D_0                  (18)    /* t20, t30, t114, t148 */
+#define NVSYNCPT_VIC                   (18)    /* t124 */
 #define NVSYNCPT_2D_1                  (19)    /* t20, t30, t114, t148 */
+#define NVSYNCPT_MSENC_SLICE           (19)    /* t124 */
 #define NVSYNCPT_DISP0_B               (20)    /* t20, t30, t114, t148 */
 #define NVSYNCPT_DISP1_B               (21)    /* t20, t30, t114, t148 */
 #define NVSYNCPT_3D                    (22)    /* t20, t30, t114, t148 */
@@ -77,6 +79,24 @@ struct mem_mgr;
 #define NVSYNCPT_TSEC                  (28)    /* t114, t148 */
 #define NVSYNCPT_MPE_WR_SAFE           (29)    /* t20, t30 */
 #define NVSYNCPT_DSI                   (31)    /* t20, t30, t114, t148 */
+#define NVSYNCPT_ISP_0_0               (32)    /* t124 */
+#define NVSYNCPT_ISP_0_1               (33)    /* t124 */
+#define NVSYNCPT_ISP_0_2               (34)    /* t124 */
+#define NVSYNCPT_ISP_0_3               (35)    /* t124 */
+#define NVSYNCPT_ISP_1_0               (36)    /* t124 */
+#define NVSYNCPT_ISP_1_1               (37)    /* t124 */
+#define NVSYNCPT_ISP_1_2               (38)    /* t124 */
+#define NVSYNCPT_ISP_1_3               (39)    /* t124 */
+#define NVSYNCPT_VI_0_0                        (40)    /* t124 */
+#define NVSYNCPT_VI_0_1                        (41)    /* t124 */
+#define NVSYNCPT_VI_0_2                        (42)    /* t124 */
+#define NVSYNCPT_VI_0_3                        (43)    /* t124 */
+#define NVSYNCPT_VI_0_4                        (44)    /* t124 */
+#define NVSYNCPT_VI_1_0                        (45)    /* t124 */
+#define NVSYNCPT_VI_1_1                        (46)    /* t124 */
+#define NVSYNCPT_VI_1_2                        (47)    /* t124 */
+#define NVSYNCPT_VI_1_3                        (48)    /* t124 */
+#define NVSYNCPT_VI_1_4                        (49)    /* t124 */
 
 #define NVWAITBASE_2D_0                        (1)     /* t20, t30, t114 */
 #define NVWAITBASE_2D_1                        (2)     /* t20, t30, t114 */
@@ -86,7 +106,9 @@ struct mem_mgr;
 #define NVWAITBASE_TSEC                        (5)     /* t114, t148 */
 
 #define NVMODMUTEX_2D_FULL             (1)     /* t20, t30, t114, t148 */
+#define NVMODMUTEX_ISP_0               (1)     /* t124 */
 #define NVMODMUTEX_2D_SIMPLE           (2)     /* t20, t30, t114, t148 */
+#define NVMODMUTEX_ISP_1               (2)     /* t124 */
 #define NVMODMUTEX_2D_SB_A             (3)     /* t20, t30, t114, t148 */
 #define NVMODMUTEX_2D_SB_B             (4)     /* t20, t30, t114, t148 */
 #define NVMODMUTEX_3D                  (5)     /* t20, t30, t114, t148 */
@@ -95,7 +117,8 @@ struct mem_mgr;
 #define NVMODMUTEX_VI                  (8)     /* t20, t30, t114 */
 #define NVMODMUTEX_VI_0                        (8)     /* t148 */
 #define NVMODMUTEX_DSI                 (9)     /* t20, t30, t114, t148 */
-#define NVMODMUTEX_VI_1                        (10)    /* t148 */
+#define NVMODMUTEX_VIC                 (10)    /* t124 */
+#define NVMODMUTEX_VI_1                        (11)    /* t124 */
 
 /* sync points that are wholly managed by the client */
 #define NVSYNCPTS_CLIENT_MANAGED ( \