/**
  * struct pcc_chan_info - PCC channel specific information
  *
+ * @chan: PCC channel information with Shared Memory Region info
  * @db_vaddr: cached virtual address for doorbell register
  * @db_ack_vaddr: cached virtual address for doorbell ack register
  * @db_irq: doorbell interrupt
  */
 struct pcc_chan_info {
+       struct pcc_mbox_chan chan;
        void __iomem *db_vaddr;
        void __iomem *db_ack_vaddr;
        int db_irq;
                                                  db_reg->bit_width / 8);
 }
 
+/**
+ * pcc_parse_subspace_shmem - Parse the PCC Shared Memory Region information
+ *
+ * @pchan: Pointer to the PCC channel info structure.
+ * @pcct_entry: Pointer to the ACPI subtable header.
+ *
+ */
+static void pcc_parse_subspace_shmem(struct pcc_chan_info *pchan,
+                                    struct acpi_subtable_header *pcct_entry)
+{
+       struct acpi_pcct_subspace *pcct_ss;
+
+       pcct_ss = (struct acpi_pcct_subspace *)pcct_entry;
+
+       pchan->chan.shmem_base_addr = pcct_ss->base_address;
+       pchan->chan.shmem_size = pcct_ss->length;
+       pchan->chan.latency = pcct_ss->latency;
+       pchan->chan.max_access_rate = pcct_ss->max_access_rate;
+       pchan->chan.min_turnaround_time = pcct_ss->min_turnaround_time;
+}
+
 /**
  * acpi_pcc_probe - Parse the ACPI tree for the PCCT.
  *
                struct pcc_chan_info *pchan = chan_info + i;
                pcc_mbox_channels[i].con_priv = pcct_entry;
 
+               pchan->chan.mchan = &pcc_mbox_channels[i];
+
                if (pcc_mbox_ctrl.txdone_irq) {
                        rc = pcc_parse_subspace_irq(pchan, pcct_entry);
                        if (rc < 0)
                }
                pcc_parse_subspace_db_reg(pchan, pcct_entry);
 
+               pcc_parse_subspace_shmem(pchan, pcct_entry);
+
                pcct_entry = (struct acpi_subtable_header *)
                        ((unsigned long) pcct_entry + pcct_entry->length);
        }
 
 #include <linux/mailbox_controller.h>
 #include <linux/mailbox_client.h>
 
+struct pcc_mbox_chan {
+       struct mbox_chan *mchan;
+       u64 shmem_base_addr;
+       u64 shmem_size;
+       u32 latency;
+       u32 max_access_rate;
+       u16 min_turnaround_time;
+};
+
 #define MAX_PCC_SUBSPACES      256
 #ifdef CONFIG_PCC
 extern struct mbox_chan *pcc_mbox_request_channel(struct mbox_client *cl,