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: 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>