POWERPC: Bring the fs_no calculation to the relevant SoC enumeration
The fs_no mean used to be fs_enet driver driven, hence it was an enumeration across all the possible fs_enet "users" in the SoC. Now, with QE on the pipeline, and to make DTS descriptions more clear, fs_no features relevant SoC part number, with additional field to describe the SoC type. Another reason for that is now not only fs_enet is going to utilize those stuff. There might be UART, HLDC, and even USB, so to prevent confusion and be ready for upcoming OF_device transfer, fs_enet and cpm_uart drivers were updated in that concern, as well as the relevant DTS. Signed-off-by: Vitaly Bordug <vbordug@ru.mvista.com>
This commit is contained in:
@@ -55,6 +55,30 @@ static inline int fs_get_scc_index(enum fs_id id)
|
||||
return -1;
|
||||
}
|
||||
|
||||
static inline int fs_fec_index2id(int index)
|
||||
{
|
||||
int id = fsid_fec1 + index - 1;
|
||||
if (id >= fsid_fec1 && id <= fsid_fec2)
|
||||
return id;
|
||||
return FS_MAX_INDEX;
|
||||
}
|
||||
|
||||
static inline int fs_fcc_index2id(int index)
|
||||
{
|
||||
int id = fsid_fcc1 + index - 1;
|
||||
if (id >= fsid_fcc1 && id <= fsid_fcc3)
|
||||
return id;
|
||||
return FS_MAX_INDEX;
|
||||
}
|
||||
|
||||
static inline int fs_scc_index2id(int index)
|
||||
{
|
||||
int id = fsid_scc1 + index - 1;
|
||||
if (id >= fsid_scc1 && id <= fsid_scc4)
|
||||
return id;
|
||||
return FS_MAX_INDEX;
|
||||
}
|
||||
|
||||
enum fs_mii_method {
|
||||
fsmii_fixed,
|
||||
fsmii_fec,
|
||||
@@ -91,6 +115,7 @@ struct fs_platform_info {
|
||||
void(*init_ioports)(struct fs_platform_info *);
|
||||
/* device specific information */
|
||||
int fs_no; /* controller index */
|
||||
char fs_type[4]; /* controller type */
|
||||
|
||||
u32 cp_page; /* CPM page */
|
||||
u32 cp_block; /* CPM sblock */
|
||||
@@ -126,4 +151,16 @@ struct fs_mii_fec_platform_info {
|
||||
u32 irq[32];
|
||||
u32 mii_speed;
|
||||
};
|
||||
|
||||
static inline int fs_get_id(struct fs_platform_info *fpi)
|
||||
{
|
||||
if(strstr(fpi->fs_type, "SCC"))
|
||||
return fs_scc_index2id(fpi->fs_no);
|
||||
if(strstr(fpi->fs_type, "FCC"))
|
||||
return fs_fcc_index2id(fpi->fs_no);
|
||||
if(strstr(fpi->fs_type, "FEC"))
|
||||
return fs_fec_index2id(fpi->fs_no);
|
||||
return fpi->fs_no;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user