]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
video: tegra: host: Store devfs name in pdata
authorArto Merilainen <amerilainen@nvidia.com>
Sun, 14 Dec 2014 15:58:05 +0000 (17:58 +0200)
committerArto Merilainen <amerilainen@nvidia.com>
Wed, 17 Dec 2014 15:50:20 +0000 (07:50 -0800)
Currently we use class and module ids to determine the device
devfs name. This approach causes having similar data in multiple
places (i.e. some data is in pdata and some in common code) and
therefore makes the code complex.

This patch moved devfs name into pdata.

Change-Id: Iaf47dbcc46f704ada3a998ef26ac16b4dec59faa
Signed-off-by: Arto Merilainen <amerilainen@nvidia.com>
Reviewed-on: http://git-master/r/663638

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

index 6a7dcabbabc4017460fd193c8fc0c616c41d19d2..a7802435c875f2bad68eda0d99208f6869ebb272 100644 (file)
@@ -1276,55 +1276,13 @@ static const struct file_operations nvhost_channelops = {
        .unlocked_ioctl = nvhost_channelctl
 };
 
-static struct {
-       int class_id;
-       const char *dev_name;
-} class_id_dev_name_map[] = {
-       /*      { NV_HOST1X_CLASS_ID, ""}, */
-       { NV_VIDEO_ENCODE_MPEG_CLASS_ID, "mpe" },
-       { NV_VIDEO_ENCODE_MSENC_CLASS_ID, "msenc" },
-       { NV_GRAPHICS_3D_CLASS_ID, "gr3d" },
-       { NV_GRAPHICS_GPU_CLASS_ID, "gpu"},
-       { NV_GRAPHICS_VIC_CLASS_ID, "vic"},
-       { NV_TSEC_CLASS_ID, "tsec" },
-       { NV_TSECB_CLASS_ID, "tsecb" },
-       { NV_NVDEC_CLASS_ID, "nvdec" },
-       { NV_NVJPG_CLASS_ID, "nvjpg" },
-};
-
-static struct {
-       int module_id;
-       const char *dev_name;
-} module_id_dev_name_map[] = {
-       { NVHOST_MODULE_VI, "vi"},
-       { NVHOST_MODULE_ISP, "isp"},
-       { NVHOST_MODULE_MPE, "mpe"},
-       { NVHOST_MODULE_NVJPG, "nvjpg"},
-       { NVHOST_MODULE_NVDEC, "nvdec"},
-       { NVHOST_MODULE_MSENC, "msenc"},
-       { NVHOST_MODULE_TSEC, "tsec"},
-       { NVHOST_MODULE_GPU, "gpu"},
-       { NVHOST_MODULE_VIC, "vic"},
-};
-
 static const char *get_device_name_for_dev(struct platform_device *dev)
 {
-       int i;
-       /* first choice is to use the class id if specified */
-       for (i = 0; i < ARRAY_SIZE(class_id_dev_name_map); i++) {
-               struct nvhost_device_data *pdata = nvhost_get_devdata(dev);
-               if (pdata->class == class_id_dev_name_map[i].class_id)
-                       return class_id_dev_name_map[i].dev_name;
-       }
+       struct nvhost_device_data *pdata = nvhost_get_devdata(dev);
 
-       /* second choice is module name if specified */
-       for (i = 0; i < ARRAY_SIZE(module_id_dev_name_map); i++) {
-               struct nvhost_device_data *pdata = nvhost_get_devdata(dev);
-               if (pdata->moduleid == module_id_dev_name_map[i].module_id)
-                       return module_id_dev_name_map[i].dev_name;
-       }
+       if (pdata->devfs_name)
+               return pdata->devfs_name;
 
-       /* last choice is to just use the given dev name */
        return dev->name;
 }
 
index ae56887f5caaa37eee6362896d4621266c12c319..77071b6aeb5b934d93277f3c0fed2402c7551b57 100644 (file)
@@ -124,6 +124,7 @@ struct nvhost_device_data t124_isp_info = {
        .moduleid        = NVHOST_MODULE_ISP,
        .class           = NV_VIDEO_STREAMING_ISP_CLASS_ID,
        .modulemutexes   = {NVMODMUTEX_ISP_0},
+       .devfs_name      = "isp",
        .exclusive       = true,
        .keepalive       = true,
        .powergate_ids   = {TEGRA_POWERGATE_VENC, -1},
@@ -162,6 +163,7 @@ struct nvhost_device_data t124_ispb_info = {
        .num_channels   = 1,
        /* FIXME: control clocks from user space instead of hard-coding here */
        .moduleid        = (1 << 16) | NVHOST_MODULE_ISP,
+       .devfs_name      = "isp.1",
        .class           = NV_VIDEO_STREAMING_ISPB_CLASS_ID,
        .modulemutexes   = {NVMODMUTEX_ISP_1},
        .exclusive       = true,
@@ -211,6 +213,7 @@ struct nvhost_device_data t124_vi_info = {
        .moduleid         = NVHOST_MODULE_VI,
        .class            = NV_VIDEO_STREAMING_VI_CLASS_ID,
        .modulemutexes    = {NVMODMUTEX_VI_0},
+       .devfs_name       = "vi",
        .exclusive        = true,
        .keepalive       = true,
        .powergate_ids    = {TEGRA_POWERGATE_VENC, -1},
@@ -251,6 +254,7 @@ struct nvhost_device_data t124_vi_info = {
        .moduleid         = NVHOST_MODULE_VI,
        .class            = NV_VIDEO_STREAMING_VI_CLASS_ID,
        .modulemutexes    = {NVMODMUTEX_VI_0},
+       .devfs_name       = "vi",
        .exclusive        = true,
        .keepalive       = true,
        .powergate_ids    = {TEGRA_POWERGATE_VENC, -1},
@@ -288,6 +292,7 @@ struct nvhost_device_data t124_vib_info = {
        .moduleid         = (1 << 16 | NVHOST_MODULE_VI),
        .class            = NV_VIDEO_STREAMING_VI_CLASS_ID,
        .modulemutexes    = {NVMODMUTEX_VI_1},
+       .devfs_name       = "vi",
        .exclusive        = true,
        .keepalive       = true,
        .powergate_ids    = {TEGRA_POWERGATE_VENC, -1},
@@ -333,6 +338,7 @@ struct nvhost_device_data t124_msenc_info = {
        .num_channels   = 1,
        .version        = NVHOST_ENCODE_FLCN_VER(3, 1),
        .modulemutexes  = {NVMODMUTEX_MSENC},
+       .devfs_name     = "msenc",
        .class          = NV_VIDEO_ENCODE_MSENC_CLASS_ID,
        .clocks         = {{"msenc", UINT_MAX, 0, TEGRA_MC_CLIENT_MSENC},
                          {"emc", HOST_EMC_FLOOR,
@@ -376,6 +382,7 @@ struct nvhost_device_data t124_tsec_info = {
        .version       = NVHOST_ENCODE_TSEC_VER(1, 0),
        .class         = NV_TSEC_CLASS_ID,
        .modulemutexes = {NVMODMUTEX_TSECA},
+       .devfs_name    = "tsec",
        .exclusive     = false,
        .clocks        = {{"tsec", UINT_MAX, 0, TEGRA_MC_CLIENT_TSEC},
                         {"emc", HOST_EMC_FLOOR} },
@@ -414,6 +421,7 @@ static struct resource vic03_resources[] = {
 struct nvhost_device_data t124_vic_info = {
        .num_channels   = 1,
        .modulemutexes  = {NVMODMUTEX_VIC},
+       .devfs_name     = "vic",
        .clocks         = {{"vic03", UINT_MAX, 0, TEGRA_MC_CLIENT_VIC},
                        {"emc", UINT_MAX,
                                NVHOST_MODULE_ID_EXTERNAL_MEMORY_CONTROLLER},
@@ -463,6 +471,7 @@ static struct platform_device tegra_vic03_device = {
 
 static struct nvhost_device_data t132_msenc_info = {
        .num_channels   = 1,
+       .devfs_name     = "msenc",
        .version        = NVHOST_ENCODE_FLCN_VER(3, 1),
        .modulemutexes  = {NVMODMUTEX_MSENC},
        .class          = NV_VIDEO_ENCODE_MSENC_CLASS_ID,
index 8405a6ab7b40d7a472291d0d357f80ccf2fe5d5f..49618159bafc56b6fe870410aed0d816d2cbf752 100644 (file)
@@ -77,6 +77,7 @@ struct nvhost_device_data t21_host1x_info = {
 struct nvhost_device_data t21_isp_info = {
        .num_channels           = 1,
        .moduleid               = NVHOST_MODULE_ISP,
+       .devfs_name             = "isp",
        .class                  = NV_VIDEO_STREAMING_ISP_CLASS_ID,
        .modulemutexes          = {NVMODMUTEX_ISP_0},
        .exclusive              = true,
@@ -101,6 +102,7 @@ struct nvhost_device_data t21_isp_info = {
 struct nvhost_device_data t21_ispb_info = {
        .num_channels           = 1,
        .moduleid               = (1 << 16) | NVHOST_MODULE_ISP,
+       .devfs_name             = "isp.1",
        .class                  = NV_VIDEO_STREAMING_ISPB_CLASS_ID,
        .modulemutexes          = {NVMODMUTEX_ISP_1},
        .exclusive              = true,
@@ -128,6 +130,7 @@ struct nvhost_device_data t21_ispb_info = {
 #ifdef CONFIG_VI_ONE_DEVICE
 struct nvhost_device_data t21_vi_info = {
        .modulemutexes          = {NVMODMUTEX_VI_0},
+       .devfs_name             = "vi",
        .exclusive              = true,
        .class                  = NV_VIDEO_STREAMING_VI_CLASS_ID,
        /* HACK: Mark as keepalive until 1188795 is fixed */
@@ -161,6 +164,7 @@ struct nvhost_device_data t21_vi_info = {
 #else
 struct nvhost_device_data t21_vib_info = {
        .modulemutexes          = {NVMODMUTEX_VI_1},
+       .devfs_name             = "vi",
        .class                  = NV_VIDEO_STREAMING_VI_CLASS_ID,
        .exclusive              = true,
        /* HACK: Mark as keepalive until 1188795 is fixed */
@@ -194,6 +198,7 @@ static struct platform_device tegra_vi01b_device = {
 
 struct nvhost_device_data t21_vi_info = {
        .modulemutexes          = {NVMODMUTEX_VI_0},
+       .devfs_name             = "vi",
        .class                  = NV_VIDEO_STREAMING_VI_CLASS_ID,
        .exclusive              = true,
        /* HACK: Mark as keepalive until 1188795 is fixed */
@@ -254,6 +259,7 @@ struct nvhost_device_data t21_msenc_info = {
        .version                = NVHOST_ENCODE_FLCN_VER(5, 0),
        .class                  = NV_VIDEO_ENCODE_NVENC_CLASS_ID,
        .modulemutexes          = {NVMODMUTEX_MSENC},
+       .devfs_name             = "msenc",
 #ifdef TEGRA_POWERGATE_NVENC
        .powergate_ids          = { TEGRA_POWERGATE_NVENC, -1 },
 #else
@@ -287,6 +293,7 @@ struct nvhost_device_data t21_nvdec_info = {
        .version                = NVHOST_ENCODE_NVDEC_VER(2, 0),
        .class                  = NV_NVDEC_CLASS_ID,
        .modulemutexes          = {NVMODMUTEX_NVDEC},
+       .devfs_name             = "nvdec",
 #ifdef TEGRA_POWERGATE_NVDEC
        .powergate_ids          = { TEGRA_POWERGATE_NVDEC, -1 },
 #else
@@ -320,6 +327,7 @@ struct nvhost_device_data t21_nvjpg_info = {
        .version                = NVHOST_ENCODE_FLCN_VER(1, 0),
        .class                  = NV_NVJPG_CLASS_ID,
        .modulemutexes          = {NVMODMUTEX_NVJPG},
+       .devfs_name             = "nvjpg",
 #ifdef TEGRA_POWERGATE_NVJPG
        .powergate_ids          = { TEGRA_POWERGATE_NVJPG, -1 },
 #else
@@ -352,6 +360,7 @@ struct nvhost_device_data t21_nvjpg_info = {
 struct nvhost_device_data t21_tsec_info = {
        .num_channels           = 1,
        .modulemutexes          = {NVMODMUTEX_TSECA},
+       .devfs_name             = "tsec",
        .version                = NVHOST_ENCODE_TSEC_VER(1, 0),
        .class                  = NV_TSEC_CLASS_ID,
        .exclusive              = false,
@@ -373,6 +382,7 @@ struct nvhost_device_data t21_tsec_info = {
 struct nvhost_device_data t21_tsecb_info = {
        .num_channels           = 1,
        .modulemutexes          = {NVMODMUTEX_TSECB},
+       .devfs_name             = "tsecb",
        .version                = NVHOST_ENCODE_TSEC_VER(1, 0),
        .class                  = NV_TSECB_CLASS_ID,
        .exclusive              = true,
@@ -396,6 +406,7 @@ struct nvhost_device_data t21_tsecb_info = {
 struct nvhost_device_data t21_vic_info = {
        .num_channels           = 1,
        .modulemutexes          = {NVMODMUTEX_VIC},
+       .devfs_name             = "vic",
        .clocks                 = {{"vic03", UINT_MAX, 0, TEGRA_MC_CLIENT_VIC},
                                   {"emc", UINT_MAX,
                                   NVHOST_MODULE_ID_EXTERNAL_MEMORY_CONTROLLER},
index 421b2cd274abd0d6bfadd8e2eed3aab0e1b1422d..1869efcfb6c3fe1e96c8d0dfe1def79e20b46d26 100644 (file)
@@ -159,6 +159,7 @@ struct nvhost_device_data {
        bool            push_work_done; /* Push_op done into push buffer */
        bool            poweron_reset;  /* Reset the engine before powerup */
        bool            virtual_dev;    /* True if virtualized device */
+       char            *devfs_name;    /* Name in devfs */
 
        char            *firmware_name; /* Name of firmware */