]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
video: tegra: host: define new APIs to access registers
authorDeepak Nibade <dnibade@nvidia.com>
Wed, 29 Apr 2015 13:58:05 +0000 (19:28 +0530)
committerArto Merilainen <amerilainen@nvidia.com>
Thu, 7 May 2015 09:41:58 +0000 (02:41 -0700)
Define below set of new APIs :

1) for channel registers :
void host1x_channel_writel(struct nvhost_channel *ch, u32 r, u32 v)
u32 host1x_channel_readl(struct nvhost_channel *ch, u32 r)

2) for syncpoint or interrupt registers :
void host1x_sync_writel(struct platform_device *pdev, u32 r, u32 v)
u32 host1x_sync_readl(struct platform_device *pdev, u32 r)

Bug 1611482

Change-Id: I8db234870bbf23fc8509ac4bf70b562b84a3c55f
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: http://git-master/r/737748
Reviewed-by: Arto Merilainen <amerilainen@nvidia.com>
Tested-by: Arto Merilainen <amerilainen@nvidia.com>
drivers/video/tegra/host/bus_client.c
include/linux/nvhost.h

index 2ff11168170bbbbfa178082106a7d9709a404c4a..4c7559bfe1692962a9c3ab54055fa0b31bd9ca23 100644 (file)
@@ -116,6 +116,48 @@ u32 host1x_readl(struct platform_device *pdev, u32 r)
 }
 EXPORT_SYMBOL_GPL(host1x_readl);
 
+void host1x_channel_writel(struct nvhost_channel *ch, u32 r, u32 v)
+{
+       void __iomem *addr = ch->aperture + r;
+       nvhost_dbg(dbg_reg, " chid=%d r=0x%x v=0x%x", ch->chid, r, v);
+       writel(v, addr);
+}
+EXPORT_SYMBOL_GPL(host1x_channel_writel);
+
+u32 host1x_channel_readl(struct nvhost_channel *ch, u32 r)
+{
+       void __iomem *addr = ch->aperture + r;
+       u32 v;
+
+       nvhost_dbg(dbg_reg, " chid=%d r=0x%x", ch->chid, r);
+       v = readl(addr);
+       nvhost_dbg(dbg_reg, " chid=%d r=0x%x v=0x%x", ch->chid, r, v);
+
+       return v;
+}
+EXPORT_SYMBOL_GPL(host1x_channel_readl);
+
+void host1x_sync_writel(struct platform_device *pdev, u32 r, u32 v)
+{
+       void __iomem *addr = nvhost_get_host(pdev)->sync_aperture + r;
+       nvhost_dbg(dbg_reg, " d=%s r=0x%x v=0x%x", pdev->name, r, v);
+       writel(v, addr);
+}
+EXPORT_SYMBOL_GPL(host1x_sync_writel);
+
+u32 host1x_sync_readl(struct platform_device *pdev, u32 r)
+{
+       void __iomem *addr = nvhost_get_host(pdev)->sync_aperture + r;
+       u32 v;
+
+       nvhost_dbg(dbg_reg, " d=%s r=0x%x", pdev->name, r);
+       v = readl(addr);
+       nvhost_dbg(dbg_reg, " d=%s r=0x%x v=0x%x", pdev->name, r, v);
+
+       return v;
+}
+EXPORT_SYMBOL_GPL(host1x_sync_readl);
+
 int nvhost_read_module_regs(struct platform_device *ndev,
                        u32 offset, int count, u32 *values)
 {
index e719c38b4af447df3e125c1d5c0481d45a2cf9d4..a874b235f588ead899a34eb2a481997b9ea2c86c 100644 (file)
@@ -343,6 +343,12 @@ struct nvhost_device_power_attr {
 void host1x_writel(struct platform_device *dev, u32 r, u32 v);
 u32 host1x_readl(struct platform_device *dev, u32 r);
 
+void host1x_channel_writel(struct nvhost_channel *ch, u32 r, u32 v);
+u32 host1x_channel_readl(struct nvhost_channel *ch, u32 r);
+
+void host1x_sync_writel(struct platform_device *pdev, u32 r, u32 v);
+u32 host1x_sync_readl(struct platform_device *pdev, u32 r);
+
 /* public host1x power management APIs */
 bool nvhost_module_powered_ext(struct platform_device *dev);
 int nvhost_module_busy_ext(struct platform_device *dev);