msm: smem: split out shared memory initialization functionality

For historical reasons, the low level shared memory initialization
functionality exists in a combined driver with the higher level
communication protocols.  Move the low level shared memory functionality
out into its own driver to improve clarity and ease maintenance.

Change-Id: I675db52961df80d6e8e62e771630e562bf1a670c
Signed-off-by: Jeffrey Hugo <jhugo@codeaurora.org>
msm: smem: Add NAND Device Item

Add new SMEM item used for passing NAND device parameters between
subsystems.

CRs-Fixed: 487179
Change-Id: I823e5073e02795386700109ccdf9fb7efff03fe5
Signed-off-by: Eric Holmberg <eholmber@codeaurora.org>
msm: smd: add support for secondary channel table

The primary SMD channel table only supports 64 entries and is currently at
capacity. Since the primary channel table cannot be extended as the SMEM
item ids following the primary table are already reserved for other
usecases, create a secondary channel table by repurposing the unused block
channel table SMEM items.  This extention creates an additional 64 entries
for new SMD channels allowing the system to support a total of 128
channels.

CRs-Fixed: 525753
Change-Id: Ife9c822e46178b4a8bf21c34efabfd7133ed87b0
Signed-off-by: Jeffrey Hugo <jhugo@codeaurora.org>
msm: smem: add mpu based security support

Add support for the Memory Protection Unit (MPU) based shared memory
security feature.  This feature fragments shared memory into multiple
partitions and restricts access for each partition to a limited set of
processors which is enforced by MPUs.

Change-Id: I0878e1df3aad5aab49b845918be095c71956029d
Signed-off-by: Jeffrey Hugo <jhugo@codeaurora.org>
msm: gdsc: Make enable/disable function clock controls symmetric

Currently, resets are asserted and de-asserted in the same order,
which works fine for cores with only one resettable clock domain,
but causes issues on 8x10 (VFE) where multiple clock domains are
resettable and order matters.

For cleanliness, also make the order of setting/clearing the memory
retention signals symmetric, although order there doesn't matter
at all.

Change-Id: I0d5edcd0d9fe121ed63e032915830a9c82ae5da2
Signed-off-by: Matt Wagantall <mattw@codeaurora.org>
hammerhead: smem: split out shared memory initialization functionality
Linux 3.4.83

Conflicts:
	mm/vmscan.c