Commit Graph

595251 Commits

Author SHA1 Message Date
Jeffy Chen
3da282e238 ARM: dts: rockchip: add rockchip-vpu node for rk3288
Change-Id: I1821a9a00a8878e061385d841c5c447496bb9434
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
Signed-off-by: Yakir Yang <ykk@rock-chips.com>
2016-07-05 14:02:42 +08:00
Huang Jiachai
90f48406ac video: rockchip: vop: 3399: fix disable_irq() after local_irq_save()
[    0.654187] BUG: sleeping function called from invalid context at kernel/irq/manage.c:110
[    0.654905] in_atomic(): 0, irqs_disabled(): 128, pid: 1, name: swapper/0
[    0.655502] 2 locks held by swapper/0/1:
[    0.655849]  #0:  (&dev->mutex){......}, at: [<ffffff800848005c>] __driver_attach+0x38/0x98
[    0.656630]  #1:  (&dev->mutex){......}, at: [<ffffff800848007c>] __driver_attach+0x58/0x98
[    0.657395] irq event stamp: 419700
[    0.657705] hardirqs last  enabled at (419699): [<ffffff80081b3f54>] kfree+0x1d0/0x360
[    0.658409] hardirqs last disabled at (419700): [<ffffff800839933c>] rk_fb_register+0x8a4/0xc64
[    0.659181] softirqs last  enabled at (419668): [<ffffff80080a0d58>] __do_softirq+0x41c/0x53c
[    0.659937] softirqs last disabled at (419663): [<ffffff80080a1100>] irq_exit+0x70/0xc4
[    0.660651] CPU: 4 PID: 1 Comm: swapper/0 Not tainted 4.4.11 #1477
[    0.661194] Hardware name: Rockchip RK3399 Evaluation Board v1 (Android) (DT)
[    0.661819] Call trace:
[    0.662044] [<ffffff800808873c>] dump_backtrace+0x0/0x1a8
[    0.662521] [<ffffff80080888f8>] show_stack+0x14/0x1c
[    0.662970] [<ffffff800834fd18>] dump_stack+0xb0/0xec
[    0.663419] [<ffffff80080cd3e0>] ___might_sleep+0x1c8/0x1d8
[    0.663911] [<ffffff80080cd464>] __might_sleep+0x74/0x84
[    0.664383] [<ffffff80080fca98>] synchronize_irq+0x30/0x84
[    0.664867] [<ffffff80080fd230>] disable_irq+0x20/0x2c
[    0.665325] [<ffffff80083ae3c0>] vop_set_irq_to_cpu+0x20/0x2c
[    0.665832] [<ffffff8008396144>] rk_fb_poll_wait_frame_complete+0x38/0xd4
[    0.666429] [<ffffff80083993a4>] rk_fb_register+0x90c/0xc64
[    0.666922] [<ffffff80083afe44>] vop_probe+0x55c/0x5d4
[    0.667378] [<ffffff8008481a20>] platform_drv_probe+0x58/0xa4
[    0.667885] [<ffffff800847feb0>] driver_probe_device+0x114/0x288
[    0.668414] [<ffffff8008480090>] __driver_attach+0x6c/0x98
[    0.668899] [<ffffff800847e628>] bus_for_each_dev+0x64/0x88
[    0.669391] [<ffffff8008480298>] driver_attach+0x20/0x28
[    0.669861] [<ffffff800847ee14>] bus_add_driver+0xe8/0x1e0
[    0.670345] [<ffffff8008480fcc>] driver_register+0x98/0xe4
[    0.670829] [<ffffff8008482448>] __platform_driver_register+0x48/0x50
[    0.671398] [<ffffff8008db5f74>] vop_module_init+0x18/0x20
[    0.671885] [<ffffff8008d8facc>] do_one_initcall+0xf0/0x178
[    0.672378] [<ffffff8008d8fc9c>] kernel_init_freeable+0x148/0x1e8
[    0.672916] [<ffffff8008a03394>] kernel_init+0x10/0xf8
[    0.673370] [<ffffff80080844d0>] ret_from_fork+0x10/0x40

Change-Id: If9a39a6800a4a5dd1749f21125c6ba5204bee901
Signed-off-by: Huang Jiachai <hjc@rock-chips.com>
2016-07-05 14:00:10 +08:00
dalon.zhang
9b079452ac camsys driver: v0.0x21.3
Change-Id: Ibbea044aade566ee95184cc9f6dfec76752a3b0a
Signed-off-by: dalon.zhang <dalon.zhang@rock-chips.com>
2016-07-05 13:58:56 +08:00
dalon.zhang
890a61cf2c arm64: dts: rockchip: add isp0 and isp1 config for rk3399
Change-Id: I27d5843f1cf549e145d1950c5c40796c55896bff
Signed-off-by: dalon.zhang <dalon.zhang@rock-chips.com>
2016-07-05 13:57:56 +08:00
Huang Jiachai
a34d9b0b26 ARM64: dts: rk3399: android: add memory reserved for logo and enable uboot logo
Change-Id: I284d69c6156d2191b96aed92b98c13386a5f5fd9
Signed-off-by: Huang Jiachai <hjc@rock-chips.com>
2016-07-05 12:02:16 +08:00
Huang Jiachai
fdb800ac2d video: rockchip: fb: use memory reserved for logo
Change-Id: I19e8b1d0cce5b9d025975ca080f56af3b67c67fb
Signed-off-by: Huang Jiachai <hjc@rock-chips.com>
2016-07-05 12:01:30 +08:00
Finley Xiao
670ad70989 ARM64: dts: rockchip: Rename OPP nodes as opp@<opp-hz>
It would be better to name OPP nodes as opp@<opp-hz> as that will ensure
that multiple DT nodes don't contain the same frequency. Of course we
expect the writer to name the node with its opp-hz frequency and not any
other frequency.

And that will let the compile error out if multiple nodes are using the
same opp-hz frequency.

Change-Id: Icefba93f7a95752e344b5a092a83931bf4d1e682
Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
2016-07-05 10:33:20 +08:00
Huang, Tao
62473fb31e stmmac: do not sleep in atomic context while suspend/resume
Change-Id: Ie5da56ec33b202825e23d3a6fde499a6b831004b
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
2016-07-04 19:11:52 +08:00
Huang, Tao
92d66262c7 Revert "net: stmmac: replace msleep with mdelay between spinlock and spinunlock"
This reverts commit b664a51a07.
Upstream commit f55d84b07c ("stmmac: do not sleep in atomic context for mdio_reset")
fixes this bug.

Change-Id: I7332b3586640667f551c7e83eafff560a4f5a478
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
2016-07-04 18:24:18 +08:00
Vincent Palatin
6d7cc1fdfa UPSTREAM: stmmac: do not sleep in atomic context for mdio_reset
stmmac_mdio_reset() has been updated to use msleep rather udelay
(as some PHY requires a one second delay there).
It called from stmmac_resume() within the spin_lock_irqsave block
atomic context triggering 'scheduling while atomic'.

The stmmac_priv lock usage is not fully documented, but it seems
to protect the access to the MAC registers / DMA structures rather
than the MDIO bus or the PHY (which have separate locking),
so we can push the spin_lock after the stmmac_mdio_reset call.

Change-Id: I0e8a0f7e798f89678d59eefdfd251f217c00787e
Signed-off-by: Vincent Palatin <vpalatin@chromium.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
(cherry picked from commit f55d84b07c)
2016-07-04 18:01:40 +08:00
chenzhen
54543b877d MALI: midgard: rockchip: add .shutdown of GPU platform_driver
Change-Id: I5af2a464db88b08530b063d90b3a7ce61e26f201
Signed-off-by: chenzhen <chenzhen@rock-chips.com>
2016-07-04 15:23:01 +08:00
chenzhen
0556935fb1 MALI: midgard: rockchip: not to enable clk_gpu when probing
Otherwise, clk_gpu won't be disabled actually in the runtime.

Change-Id: If1e32061cbffc1564a5cf95fbf01aa91c827550d
Signed-off-by: chenzhen <chenzhen@rock-chips.com>
2016-07-04 15:22:48 +08:00
Huang Jiachai
0a7235769c video: rockchip: vop: 3399: fix layer index for disp info error
Change-Id: I2c45b204d9fafa01b3b05dbb0378bb1b05bd0642
Signed-off-by: Huang Jiachai <hjc@rock-chips.com>
2016-07-04 15:20:52 +08:00
Mark Yao
7af0c9a9ca drm/rockchip: vop: correct the source size of uv scale factor setting
When the input color format is YUV, we need to do some external scale
for CBCR. Like,
 * In YUV420 data format:
     cbcr_xscale = dst_w / src_w * 2;
     cbcr_yscale = dst_h / src_h * 2;
 * In YUV422 data format:
     cbcr_xscale = dst_w / src_w * 2;
     cbcr_yscale = dst_h / src_h;
 * In YUV444 data format
     cbcr_xscale = dst_w / src_w;
     cbcr_yscale = dst_h / src_h;

Change-Id: I08678fdcc13a5c4055fcc46f20b378ad7fa16761
Signed-off-by: Yakir Yang <ykk@rock-chips.com>
(am from https://patchwork.kernel.org/patch/9157353/)
2016-07-04 14:02:25 +08:00
Yakir Yang
e92970aaab FROMLIST: drm/rockchip: vop: add uv_vir register field for RK3036 VOP
The WIN0 of RK3036 VOP could support YUV data format, but driver
forget to add the uv_vir register field for it.

Change-Id: I1fd6be43308468cf0718b113be74d2170f71eebe
Signed-off-by: Yakir Yang <ykk@rock-chips.com>
(am from https://patchwork.kernel.org/patch/9157349/)
2016-07-04 14:02:15 +08:00
Arnd Bergmann
7b5585cd22 UPSTREAM: mmc: dw_mmc: use resource_size_t to store physical address
The dw_mmc driver stores the physical address of the MMIO registers
in a pointer, which requires the use of type casts, and is actually
broken if anyone ever has this device on a 32-bit SoC in registers
above 4GB. Gcc warns about this possibility when the driver is built
with ARM LPAE enabled:

mmc/host/dw_mmc.c: In function 'dw_mci_edmac_start_dma':
mmc/host/dw_mmc.c:702:17: warning: cast from pointer to integer of different size
  cfg.dst_addr = (dma_addr_t)(host->phy_regs + fifo_offset);
                 ^
mmc/host/dw_mmc-pltfm.c: In function 'dw_mci_pltfm_register':
mmc/host/dw_mmc-pltfm.c:63:19: warning: cast to pointer from integer of different size
  host->phy_regs = (void *)(regs->start);

This changes the code to use resource_size_t, which gets rid of the
warning, the bug and the useless casts.

Change-Id: I894c49cede8f0626efb80a9a3181a5385bbb2bcd
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
(cherry picked from commit 260b316436)
2016-07-04 12:01:36 +08:00
Xing Zheng
1ce7fa58a3 UPSTREAM: ARM: dts: rockchip: add support rk3229 evb board
Initial release for rk3229 evb board, and turn the GMAC on.

Signed-off-by: Xing Zheng <zhengxing@rock-chips.com>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
(cherry picked from git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git
v4.8-armsoc/dts32 commit 241eff3c19)

Conflicts:

	Documentation/devicetree/bindings/arm/rockchip.txt
[zx: RK3399 FPGA conflicts with RK3399 evb board, fix it.]

Change-Id: I95cfe430aa0975a748aa203c1f78ba7fceedf9af
Signed-off-by: Xing Zheng <zhengxing@rock-chips.com>
2016-07-01 19:47:28 +08:00
Ulf Hansson
1771adf9a9 UPSTREAM: PM / Domains: Fix potential deadlock while adding/removing subdomains
We must preserve the same order of how we acquire and release the lock for
genpd, as otherwise we may encounter deadlocks.

The power on phase of a genpd starts by acquiring its lock. Then it walks
the hierarchy of its parent domains to be able to power on these first, as
per design of genpd.

From a locking perspective this means the locks of the parents becomes
acquired after the lock of the subdomain.

Let's fix pm_genpd_add|remove_subdomain() to maintain the same order of
acquiring/releasing the genpd lock as being applied in the power on/off
sequence.

Change-Id: I7f56875b7620eee6247efecd502a3ada4bfa4e24
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Caesar Wang <wxt@rock-chips.com>
(cherry picked from commit cdb300a041)
2016-07-01 19:38:51 +08:00
Marek Szyprowski
5655ffbda2 UPSTREAM: PM / domains: fix lockdep issue for all subdomains
During genpd_poweron, genpd->lock is acquired recursively for each
parent (master) domain, which are separate objects. This confuses
lockdep, which considers every operation on genpd->lock as being done on
the same lock class. This leads to the following false positive warning:

=============================================
[ INFO: possible recursive locking detected ]
4.4.0-rc4-xu3s #32 Not tainted
---------------------------------------------
swapper/0/1 is trying to acquire lock:
 (&genpd->lock){+.+...}, at: [<c0361550>] __genpd_poweron+0x64/0x108

but task is already holding lock:
 (&genpd->lock){+.+...}, at: [<c0361af8>] genpd_dev_pm_attach+0x168/0x1b8

other info that might help us debug this:
 Possible unsafe locking scenario:

       CPU0
       ----
  lock(&genpd->lock);
  lock(&genpd->lock);

 *** DEADLOCK ***

 May be due to missing lock nesting notation

3 locks held by swapper/0/1:
 #0:  (&dev->mutex){......}, at: [<c0350910>] __driver_attach+0x48/0x98
 #1:  (&dev->mutex){......}, at: [<c0350920>] __driver_attach+0x58/0x98
 #2:  (&genpd->lock){+.+...}, at: [<c0361af8>] genpd_dev_pm_attach+0x168/0x1b8

stack backtrace:
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.4.0-rc4-xu3s #32
Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
[<c0016c98>] (unwind_backtrace) from [<c00139c4>] (show_stack+0x10/0x14)
[<c00139c4>] (show_stack) from [<c0270df0>] (dump_stack+0x84/0xc4)
[<c0270df0>] (dump_stack) from [<c00780b8>] (__lock_acquire+0x1f88/0x215c)
[<c00780b8>] (__lock_acquire) from [<c007886c>] (lock_acquire+0xa4/0xd0)
[<c007886c>] (lock_acquire) from [<c0641f2c>] (mutex_lock_nested+0x70/0x4d4)
[<c0641f2c>] (mutex_lock_nested) from [<c0361550>] (__genpd_poweron+0x64/0x108)
[<c0361550>] (__genpd_poweron) from [<c0361b00>] (genpd_dev_pm_attach+0x170/0x1b8)
[<c0361b00>] (genpd_dev_pm_attach) from [<c03520a8>] (platform_drv_probe+0x2c/0xac)
[<c03520a8>] (platform_drv_probe) from [<c03507d4>] (driver_probe_device+0x208/0x2fc)
[<c03507d4>] (driver_probe_device) from [<c035095c>] (__driver_attach+0x94/0x98)
[<c035095c>] (__driver_attach) from [<c034ec14>] (bus_for_each_dev+0x68/0x9c)
[<c034ec14>] (bus_for_each_dev) from [<c034fec8>] (bus_add_driver+0x1a0/0x218)
[<c034fec8>] (bus_add_driver) from [<c035115c>] (driver_register+0x78/0xf8)
[<c035115c>] (driver_register) from [<c0338488>] (exynos_drm_register_drivers+0x28/0x74)
[<c0338488>] (exynos_drm_register_drivers) from [<c0338594>] (exynos_drm_init+0x6c/0xc4)
[<c0338594>] (exynos_drm_init) from [<c00097f4>] (do_one_initcall+0x90/0x1dc)
[<c00097f4>] (do_one_initcall) from [<c0895e08>] (kernel_init_freeable+0x158/0x1f8)
[<c0895e08>] (kernel_init_freeable) from [<c063ecac>] (kernel_init+0x8/0xe8)
[<c063ecac>] (kernel_init) from [<c000f7d0>] (ret_from_fork+0x14/0x24)

This patch replaces mutex_lock with mutex_lock_nested() and uses
recursion depth to annotate each genpd->lock operation with separate
lockdep subclass.

Change-Id: I9b94b2a571f906ea9e5300abc6f40db343af49e3
Reported-by: Anand Moon <linux.amoon@gmail.com>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Tested-by: Anand Moon <linux.amoon@gmail.com>
Tested-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Caesar Wang <wxt@rock-chips.com>
(cherry picked from commit 0106ef5146)
2016-07-01 19:38:43 +08:00
Chris Zhong
cc5b412807 arm64: dts: rockchip: add a power-domain node for mipi dsi on rk3399
Change-Id: I48ef7a7b209b0766a4277c3d9db0d74deee19c50
Signed-off-by: Chris Zhong <zyw@rock-chips.com>
2016-07-01 19:35:34 +08:00
Mark Yao
d011da3c9c drm/rockchip: mipi: return probe defer if attach panel failed
Return -EINVAL would cause mipi dsi bad behavior, probe defer
to ensure mipi find the correct mode,

Change-Id: I0bb8e97dd6bd19f66052b4e985e95d8d82faf29b
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2016-07-01 19:30:13 +08:00
Mark Yao
4108b18710 drm/rockchip: disabled the plane alpha if it's bottom layer
HardWare limited, the bottom layer not support per-pixel alpha,

Change-Id: I174da1d3d3cfff8d0b6cd6dfab4873438895e56d
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2016-07-01 19:29:33 +08:00
Mark Yao
7589135587 drm/rockchip: set unused layer with top zpos
Hardware limited, we should keep all unused layer same
with the same zpos, otherwise, would get display abnormal.

Change-Id: I417a6a14731148a89f0372cc028e43a94b56e4d3
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2016-07-01 19:29:20 +08:00
Mark Yao
15780585a7 drm/rockchip: fix vop value mask
Change-Id: Iedfb871f2909a427ca97f3014f4b0e0b565d06f0
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2016-07-01 19:25:41 +08:00
Mark Yao
0710683e29 drm/rockchip: add DRM_RENDER_ALLOW
Change-Id: Ia0159b877f7d8b2bb5cecf3b352b67d9c76c7c97
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2016-07-01 19:25:07 +08:00
Mark Yao
90efdd4531 drm/rockchip: vop: use new crtc state on atomic check
That is wrong use old crtc mode on atomic check.

Change-Id: Ie37bd842f8bafca04303d641269a84a6016457f4
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2016-07-01 19:24:49 +08:00
Mark Yao
45079dcfc7 drm/rockchip: move rockchip drm core compile to the last one
All rockchip drm modules are module_init, so the probe sequence
is judged by compile sequence.

We want the rockchip drm core probe on the last one, so if components
call probe defer on bind, would use rockchip drm core to do probe defer.

Change-Id: Ibda12998545a93327bdf35bc1b8386034189ba6a
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
2016-07-01 19:24:35 +08:00
Zhangbin Tong
3ec19efebe ARM64: dts: rk3399-box-808-android: modify pinctrl for spdif
Change-Id: I0e9dd45820900463c7c144b8eff4e89c64618061
Signed-off-by: Zhangbin Tong <zebulun.tong@rock-chips.com>
2016-07-01 15:37:23 +08:00
chenzhen
20355450bc MALI: rockchip: add utgard(mali400) src dir
Change-Id: I519dfc05fa762e9145404a9f12b4c0092364c4a8
Signed-off-by: chenzhen <chenzhen@rock-chips.com>
2016-07-01 14:41:11 +08:00
chenzhen
bef7d0902a MALI: rockchip: upgrade utgard DDK to r6p0-01rel1
Change-Id: I0c88698a29855905da05b45c54f37beddcb6fcd6
Signed-off-by: chenzhen <chenzhen@rock-chips.com>
2016-07-01 14:35:23 +08:00
chenzhen
a1d37e6589 MALI: utgard: rockchip: tidy the files to track
Change-Id: I8629720bc63eae8b2c309d89d2370623ef614948
Signed-off-by: chenzhen <chenzhen@rock-chips.com>
2016-07-01 14:35:07 +08:00
chenzhen
3446f414bc MALI: rockchip: upgrade utgard DDK to r6p0-01rel0
Conflicts:

	drivers/gpu/arm/mali400/mali/common/mali_control_timer.c
	drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_uk_types.h
	drivers/gpu/arm/mali400/mali/linux/mali_osk_mali.c
	drivers/gpu/arm/mali400/mali/linux/mali_ukk_wrappers.h

Change-Id: I13d02e836efcebd0dd2367ce138aac258dacda24
Signed-off-by: chenzhen <chenzhen@rock-chips.com>
2016-07-01 14:34:39 +08:00
Marc Zyngier
ac48253072 UPSTREAM: DT/arm,gic-v3: Documment PPI partition support
Add a decription of the PPI partitioning support.

Change-Id: I11bb88c45556630207fb3ff534fa5645b73cb3f0
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Acked-by: Rob Herring <robh+dt@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: devicetree@vger.kernel.org
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Will Deacon <will.deacon@arm.com>
Link: http://lkml.kernel.org/r/1460365075-7316-6-git-send-email-marc.zyngier@arm.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Caesar Wang <wxt@rock-chips.com>
(cherry picked from commit 287e9357ab)
2016-07-01 14:20:47 +08:00
Marc Zyngier
ee6804db8e UPSTREAM: irqchip/gic-v3: Add support for partitioned PPIs
Plug the partitioning layer into the GICv3 PPI code, parsing the
DT and building the partition affinities and providing the generic
code with partition data and callbacks.

Change-Id: I1f9049d48388b899e99bcadd6be729729d0fe6bb
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: devicetree@vger.kernel.org
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Rob Herring <robh+dt@kernel.org>
Link: http://lkml.kernel.org/r/1460365075-7316-5-git-send-email-marc.zyngier@arm.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Caesar Wang <wxt@rock-chips.com>
(cherry picked from commit e3825ba1af)
2016-07-01 14:20:47 +08:00
Marc Zyngier
fdf35d1ad4 UPSTREAM: irqchip: Add per-cpu interrupt partitioning library
We've unfortunately started seeing a situation where percpu interrupts
are partitioned in the system: one arbitrary set of CPUs has an
interrupt connected to a type of device, while another disjoint
set of CPUs has the same interrupt connected to another type of device.

This makes it impossible to have a device driver requesting this interrupt
using the current percpu-interrupt abstraction, as the same interrupt number
is now potentially claimed by at least two drivers, and we forbid interrupt
sharing on per-cpu interrupt.

A solution to this is to turn things upside down. Let's assume that our
system describes all the possible partitions for a given interrupt, and
give each of them a unique identifier. It is then possible to create
a namespace where the affinity identifier itself is a form of interrupt
number. At this point, it becomes easy to implement a set of partitions
as a cascaded irqchip, each affinity identifier being the HW irq.

This allows us to keep a number of nice properties:
- Each partition results in a separate percpu-interrupt (with a restrictied
  affinity), which keeps drivers happy.
- Because the underlying interrupt is still per-cpu, the overhead of
  the indirection can be kept pretty minimal.
- The core code can ignore most of that crap.

For that purpose, we implement a small library that deals with some of
the boilerplate code, relying on platform-specific drivers to provide
a description of the affinity sets and a set of callbacks.

Conflicts:
	drivers/irqchip/Kconfig
	drivers/irqchip/Makefile

Change-Id: Ie6b2bc8c4c152f0dcd3fbcab8950fae781338322
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: devicetree@vger.kernel.org
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Rob Herring <robh+dt@kernel.org>
Link: http://lkml.kernel.org/r/1460365075-7316-4-git-send-email-marc.zyngier@arm.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Caesar Wang <wxt@rock-chips.com>
(cherry picked from commit 9e2c986cb4)
2016-07-01 14:20:47 +08:00
Marc Zyngier
1c458f91ad UPSTREAM: genirq: Allow the affinity of a percpu interrupt to be set/retrieved
In order to prepare the genirq layer for the concept of partitionned
percpu interrupts, let's allow an affinity to be associated with
such an interrupt. We introduce:

- irq_set_percpu_devid_partition: flag an interrupt as a percpu-devid
  interrupt, and associate it with an affinity
- irq_get_percpu_devid_partition: allow the affinity of that interrupt
  to be retrieved.

This will allow a driver to discover which CPUs the per-cpu interrupt
can actually fire on.

Change-Id: I251774db34d1f0145d6c051265886c22f41d941e
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: devicetree@vger.kernel.org
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Rob Herring <robh+dt@kernel.org>
Link: http://lkml.kernel.org/r/1460365075-7316-3-git-send-email-marc.zyngier@arm.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Caesar Wang <wxt@rock-chips.com>
(cherry picked from commit 222df54fd8)
2016-07-01 14:20:47 +08:00
Marc Zyngier
16722ef682 UPSTREAM: irqdomain: Allow domain matching on irq_fwspec
When iterating over the irq domain list, we try to match a domain
either by calling a match() function or by comparing a number
of fields passed as parameters.

Both approaches are a bit restrictive:
- match() is DT specific and only takes a device node
- the fallback case only deals with the fwnode_handle

It would be useful if we had a per-domain function that would
actually perform the matching check on the whole of the
irq_fwspec structure. This would allow for a domain to triage
matching attempts that need to extend beyond the fwnode.

Let's introduce irq_find_matching_fwspec(), which takes a full
blown irq_fwspec structure, and call into a select() function
implemented by the irqdomain. irq_find_matching_fwnode() is
made a wrapper around irq_find_matching_fwspec in order to
preserve compatibility.

Change-Id: I07df9af068d114c80cd97b9cb987a70c0e24afda
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: devicetree@vger.kernel.org
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Rob Herring <robh+dt@kernel.org>
Link: http://lkml.kernel.org/r/1460365075-7316-2-git-send-email-marc.zyngier@arm.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Caesar Wang <wxt@rock-chips.com>
(cherry picked from commit 651e8b54ab)
2016-07-01 14:20:47 +08:00
Tomasz Nowicki
b90092bac2 UPSTREAM: irqchip/gic-v3: Refactor gic_of_init() for GICv3 driver
Isolate hardware abstraction (FDT) code to gic_of_init().
Rest of the logic goes to gic_init_bases() and expects well
defined data to initialize GIC properly. The same solution
is used for GICv2 driver.

This is needed for ACPI initialization later.

Change-Id: I61fcbd96ecd2dc8130cdd2d6ce79841eb184e87b
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Caesar Wang <wxt@rock-chips.com>
(cherry picked from commit db57d7460e)
2016-07-01 14:20:47 +08:00
Will Deacon
923b1ab5f5 UPSTREAM: dt-bindings: arm, gic-v3: require that reserved cells are always 0
The arm,gic-v3 binding was written with good intentions and doesn't
enforce interrupt-cells to be 3, therefore making it easy to extend
the irq description in future if necessary:

  > Cells 4 and beyond are reserved for future use.

Unfortunately, this sentence is immediately followed up with:

  > When the 1st cell has a value of 0 or 1, cells 4 and beyond act as
  > padding, and may be ignored. It is recommended that padding cells
  > have a value of 0.

Consequently, any extensions to the PPI or SPI interrupt specifiers must
be able to work with random crap from legacy DTs, effectively
necessitating a new interrupt type in the first cell. Sigh.

This patch fixes the text so that additional, reserved cells are
required to be zero. This looks like a reasonable thing to require and
is already satisifed by the .dts files in-tree.

Change-Id: Ia5b07ab4243c0a4492b7c4516af95b86974c42a0
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Caesar Wang <wxt@rock-chips.com>
(cherry picked from commit 4aff7b8546)
2016-07-01 14:20:47 +08:00
Marc Zyngier
fcd98e59c2 UPSTREAM: irqdomain: Allow domain lookup with DOMAIN_BUS_WIRED token
Let's take the (outlandish) example of an interrupt controller
capable of handling both wired interrupts and PCI MSIs.

With the current code, the PCI MSI domain is going to be tagged
with DOMAIN_BUS_PCI_MSI, and the wired domain with DOMAIN_BUS_ANY.

Things get hairy when we start looking up the domain for a wired
interrupt (typically when creating it based on some firmware
information - DT or ACPI).

In irq_create_fwspec_mapping(), we perform the lookup using
DOMAIN_BUS_ANY, which is actually used as a wildcard. This gives
us one chance out of two to end up with the wrong domain, and
we try to configure a wired interrupt with the MSI domain.
Everything grinds to a halt pretty quickly.

What we really need to do is to start looking for a domain that
would uniquely identify a wired interrupt domain, and only use
DOMAIN_BUS_ANY as a fallback.

In order to solve this, let's introduce a new DOMAIN_BUS_WIRED
token, which is going to be used exactly as described above.
Of course, this depends on the irqchip to setup the domain
bus_token, and nobody had to implement this so far.

Only so far.

Change-Id: Ia71c7475354eb38ab9b15423560aa3d28ae16381
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Frank Rowand <frowand.list@gmail.com>
Cc: Grant Likely <grant.likely@linaro.org>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Link: http://lkml.kernel.org/r/1453816347-32720-2-git-send-email-marc.zyngier@arm.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Caesar Wang <wxt@rock-chips.com>
(cherry picked from commit 530cbe100e)
2016-07-01 14:20:47 +08:00
Suravee Suthikulpanit
ee879bd87b UPSTREAM: irqdomain: Introduce is_fwnode_irqchip helper
Since there will be several places checking if fwnode.type
is equal FWNODE_IRQCHIP, this patch adds a convenient function
for this purpose.

Change-Id: I65ab9e1350428de18864ba493256b959efc01f45
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Caesar Wang <wxt@rock-chips.com>
(cherry picked from commit 75aba7b0e9)
2016-07-01 14:20:47 +08:00
Will Deacon
ebfa195a6c UPSTREAM: arm64: perf: add support for Cortex-A72
Cortex-A72 has a PMUv3 implementation that is compatible with the PMU
implemented by Cortex-A57.

This patch hooks up the new compatible string so that the Cortex-A57
event mappings are used.

Change-Id: I06b39699fa019d61be81a1a275f7eb6eed17808a
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
(cherry picked from commit 5d7ee87708)
2016-07-01 10:42:12 +08:00
Will Deacon
f041656313 UPSTREAM: arm64: perf: add format entry to describe event -> config mapping
It's all very well providing an events directory to userspace that
details our events in terms of "event=0xNN", but if we don't define how
to encode the "event" field in the perf attr.config, then it's a waste
of time.

This patch adds a single format entry to describe that the event field
occupies the bottom 10 bits of our config field on ARMv8 (PMUv3).

Change-Id: I71f9ebf92cd2f7083c10f20a8707a91d4517cbcb
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
(cherry picked from commit 57d7412395)
2016-07-01 10:41:51 +08:00
Geert Uytterhoeven
86ae6a01e9 UPSTREAM: arm64: perf: Correct Cortex-A53/A57 compatible values
Use commas instead of periods.

Change-Id: I6762decd0390c9f8914e4f314a5212875d200ed5
Acked-by: Mark Rutland <mark.rutland@arm.com>
Acked-by: Dirk Behme <dirk.behme@gmail.com>
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
(cherry picked from commit aae881ad73)
2016-07-01 10:37:08 +08:00
Drew Richardson
8a0b69d145 UPSTREAM: arm64: perf: Add event descriptions
Add additional information about the ARM architected hardware events
to make counters self describing. This makes the hardware PMUs easier
to use as perf list contains possible events instead of users having
to refer to documentation like the ARM TRMs.

Change-Id: Idb004bb6d9889f8e63f518d105e238d43956b561
Signed-off-by: Drew Richardson <drew.richardson@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
(cherry picked from commit 9e9caa6a49)
2016-07-01 10:36:29 +08:00
Drew Richardson
bf9237a60b UPSTREAM: arm64: perf: Convert event enums to #defines
The enums are not necessary and this allows the event values to be
used to construct static strings at compile time.

Change-Id: I01049434e5ddc5c51b7ae914e9c55a0ef6bf66d9
Signed-off-by: Drew Richardson <drew.richardson@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
(cherry picked from commit 90381cba64)
2016-07-01 10:35:51 +08:00
Huang Jiachai
96ecee29d4 video: rockchip: fb: update format define
Change-Id: Ief308474bfdbacadcc85e5a662d2f0a070c0c5cf
Signed-off-by: Huang Jiachai <hjc@rock-chips.com>
2016-07-01 10:30:19 +08:00
Huang Jiachai
a75b244f20 video: rockchip: rk fb: disable all layer and update vop state when switch screen
Change-Id: Ibdd82c477b2fdd2f21b5cbb708048bebbf1dfc7b
Signed-off-by: Huang Jiachai <hjc@rock-chips.com>
2016-07-01 10:29:54 +08:00
Huang Jiachai
40440f37d0 video: rockchip: vop: 3399: close vop when hdmi unplug
Change-Id: Ia75972e95aa738a4da5e766f9363250a63154cc3
Signed-off-by: Huang Jiachai <hjc@rock-chips.com>
2016-07-01 10:26:14 +08:00
Jeffy Chen
17464199f0 [media] rockchip-vpu: change V4L2_CTRL_ID2CLASS to V4L2_CTRL_ID2WHICH
Change-Id: I700e8564caa08eb3239d4801cef9c1e04699fe6f
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
Signed-off-by: Yakir Yang <ykk@rock-chips.com>
2016-06-30 20:03:20 +08:00