raw/ifpga/base: add eth group driver
[dpdk.git] / drivers / raw / ifpga_rawdev / base / ifpga_api.c
index c447b3c..3ddbcdc 100644 (file)
@@ -170,7 +170,6 @@ struct opae_accelerator_ops ifpga_acc_ops = {
 };
 
 /* Bridge APIs */
-
 static int ifpga_br_reset(struct opae_bridge *br)
 {
        struct ifpga_port_hw *port = br->data;
@@ -192,8 +191,26 @@ static int ifpga_mgr_flash(struct opae_manager *mgr, int id, void *buf,
        return ifpga_pr(hw, id, buf, size, status);
 }
 
+static int ifpga_mgr_get_eth_group_region_info(struct opae_manager *mgr,
+               struct opae_eth_group_region_info *info)
+{
+       struct ifpga_fme_hw *fme = mgr->data;
+
+       if (info->group_id >= MAX_ETH_GROUP_DEVICES)
+               return -EINVAL;
+
+       info->phys_addr = fme->eth_group_region[info->group_id].phys_addr;
+       info->addr = fme->eth_group_region[info->group_id].addr;
+       info->len = fme->eth_group_region[info->group_id].len;
+
+       info->mem_idx = fme->nums_acc_region + info->group_id;
+
+       return 0;
+}
+
 struct opae_manager_ops ifpga_mgr_ops = {
        .flash = ifpga_mgr_flash,
+       .get_eth_group_region_info = ifpga_mgr_get_eth_group_region_info,
 };
 
 static int ifpga_mgr_read_mac_rom(struct opae_manager *mgr, int offset,
@@ -212,10 +229,65 @@ static int ifpga_mgr_write_mac_rom(struct opae_manager *mgr, int offset,
        return fme_mgr_write_mac_rom(fme, offset, buf, size);
 }
 
+static int ifpga_mgr_get_eth_group_nums(struct opae_manager *mgr)
+{
+       struct ifpga_fme_hw *fme = mgr->data;
+
+       return fme_mgr_get_eth_group_nums(fme);
+}
+
+static int ifpga_mgr_get_eth_group_info(struct opae_manager *mgr,
+               u8 group_id, struct opae_eth_group_info *info)
+{
+       struct ifpga_fme_hw *fme = mgr->data;
+
+       return fme_mgr_get_eth_group_info(fme, group_id, info);
+}
+
+static int ifpga_mgr_eth_group_reg_read(struct opae_manager *mgr, u8 group_id,
+               u8 type, u8 index, u16 addr, u32 *data)
+{
+       struct ifpga_fme_hw *fme = mgr->data;
+
+       return fme_mgr_eth_group_read_reg(fme, group_id,
+                       type, index, addr, data);
+}
+
+static int ifpga_mgr_eth_group_reg_write(struct opae_manager *mgr, u8 group_id,
+               u8 type, u8 index, u16 addr, u32 data)
+{
+       struct ifpga_fme_hw *fme = mgr->data;
+
+       return fme_mgr_eth_group_write_reg(fme, group_id,
+                       type, index, addr, data);
+}
+
+static int ifpga_mgr_get_retimer_info(struct opae_manager *mgr,
+               struct opae_retimer_info *info)
+{
+       struct ifpga_fme_hw *fme = mgr->data;
+
+       return fme_mgr_get_retimer_info(fme, info);
+}
+
+static int ifpga_mgr_get_retimer_status(struct opae_manager *mgr,
+               struct opae_retimer_status *status)
+{
+       struct ifpga_fme_hw *fme = mgr->data;
+
+       return fme_mgr_get_retimer_status(fme, status);
+}
+
 /* Network APIs in FME */
 struct opae_manager_networking_ops ifpga_mgr_network_ops = {
        .read_mac_rom = ifpga_mgr_read_mac_rom,
        .write_mac_rom = ifpga_mgr_write_mac_rom,
+       .get_eth_group_nums = ifpga_mgr_get_eth_group_nums,
+       .get_eth_group_info = ifpga_mgr_get_eth_group_info,
+       .eth_group_reg_read = ifpga_mgr_eth_group_reg_read,
+       .eth_group_reg_write = ifpga_mgr_eth_group_reg_write,
+       .get_retimer_info = ifpga_mgr_get_retimer_info,
+       .get_retimer_status = ifpga_mgr_get_retimer_status,
 };
 
 /* Adapter APIs */