6.0 Basic Operation
CN8478/CN8474A/CN8472A/CN8471A
6.3 Channel Operation
Multichannel Synchronous Communications Controller (MUSYCC™)
6.3.2 Group Base Pointer
For the Group Base Pointer the host must allocate a 2 kB bound memory segment
for Channel Group 0. The value calculated as the address for a Group Base
Structure must be written into MUSYCC’s Group 0 Base Pointer register using a
PCI write cycle. After PCI configuration, this is a simple memory access by the
host.
A service request does not exist to update this pointer in MUSYCC because
all service requests reference this pointer value to gain access to the shared
memory resident group structure and the descriptors within it.
The components of the Group Base Pointer are listed in Table 6-1.
#define SIZE_OF_GROUP_STRUCTURE 1564
#define GROUP_STR_BOUNDARY 2048
GroupStr0.pGroupBase = malloc( SIZE_OF_GROUP_STRUCTURE + GROUP_STR_BOUNDARY );
GroupStr0.pGroupBase = ( GroupStr0.pGroupBase + GROUP_STR_BOUNDARY ) &
~(GROUP_STR_BOUNDARY -1);
/* group base pointer pointers must be a 2K byte aligned address */
/* above, there is enough space to first move forward 2K bytes, then */
/* lop off the 2K automatically. This will bring the pointer back */
/* to the original address or give us the next 2K byte boundary address */
/* IMPORTANT NOTE: be sure to save away the original pointer returned by the */
/* memory access routine as that same value will be required to free the space.
*/
/* must write directly into MUSYCC register */
*(MUSYCC_FUNC_0_BAR + GROUP_BASE_OFFSET) = GroupStr0.pGroupBase;
Table 6-1. Example—Components of Group Base Pointer
Descriptor
Component of Descriptor
Value of Components
Group
Base
Pointer to a shared memory segment large enough
for all configuration descriptors for Channel Group 0.
Return pointer from “malloc ( )” adjusted
to a 2 kB boundary.
Pointer
6-10
Conexant
100660E