aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSalil <salil.mehta@huawei.com>2016-08-23 16:44:49 -0400
committerDoug Ledford <dledford@redhat.com>2016-08-25 10:05:10 -0400
commitd605916b76593417340397fe281acd2e8a953706 (patch)
tree2f8b179281043aa8874ad1a85d0be33f6cbba3be
parent204f69ba64122b1ee6732bab8cfd71fe2d68c188 (diff)
net: hns: Add support of ACPI to HNS driver RoCE Reset function
In the Hip06 SoC, the RoCE Engine is part of the Hisilicon Network Subsystem and is dependent upon DSAF module. Therefore, certain functions like RESET are exposed through the common registers of HNS DSAF module which are memory-mapped by the HNS driver and currently can only be accessed through DT/syscon interface. This patch adds the support of ACPI to the existing RoCE reset function in the HNS driver(please refer NOTE 2). Hisilicon RoCE driver (please refer NOTE 1) shall call this reset function during probe time to reset the RoCE Engine. The HNS Reset function indirectly ends up in calling the _DSM() function part of the DSDT ACPI Table. Actual reset functionality for ACPI is implemented within the ACPI DSDT Table which also has been enhanced to support this change. Support of ACPI in the HNS RoCE driver shall be pushed through a different accompanying below patch: "IB/hns: Add support of ACPI to the Hisilicon RoCE Driver" NOTE 1: HNS RoCE driver has already been accepted by its maintainer Doug Ledford<dledford@redhat.com>. Please refer below link: https://www.spinics.net/lists/linux-rdma/msg38850.html NOTE 2: RoCE reset function patch has been accepted and now is part of the net-next: https://www.mail-archive.com/netdev@vger.kernel.org/msg123867.html Signed-off-by: Salil Mehta <salil.mehta@huawei.com> Reviewed-by: Yisen Zhuang <yisen.zhuang@huawei.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c17
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c47
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.h9
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c53
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.h3
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h4
6 files changed, 92 insertions, 41 deletions
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c
index a834774fdb02..a68eef0ee65f 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c
@@ -644,21 +644,6 @@ hns_mac_phy_parse_addr(struct device *dev, struct fwnode_handle *fwnode)
644 return addr; 644 return addr;
645} 645}
646 646
647static int hns_mac_phydev_match(struct device *dev, void *fwnode)
648{
649 return dev->fwnode == fwnode;
650}
651
652static struct
653platform_device *hns_mac_find_platform_device(struct fwnode_handle *fwnode)
654{
655 struct device *dev;
656
657 dev = bus_find_device(&platform_bus_type, NULL,
658 fwnode, hns_mac_phydev_match);
659 return dev ? to_platform_device(dev) : NULL;
660}
661
662static int 647static int
663hns_mac_register_phydev(struct mii_bus *mdio, struct hns_mac_cb *mac_cb, 648hns_mac_register_phydev(struct mii_bus *mdio, struct hns_mac_cb *mac_cb,
664 u32 addr) 649 u32 addr)
@@ -724,7 +709,7 @@ static void hns_mac_register_phy(struct hns_mac_cb *mac_cb)
724 return; 709 return;
725 710
726 /* dev address in adev */ 711 /* dev address in adev */
727 pdev = hns_mac_find_platform_device(acpi_fwnode_handle(args.adev)); 712 pdev = hns_dsaf_find_platform_device(acpi_fwnode_handle(args.adev));
728 mii_bus = platform_get_drvdata(pdev); 713 mii_bus = platform_get_drvdata(pdev);
729 rc = hns_mac_register_phydev(mii_bus, mac_cb, addr); 714 rc = hns_mac_register_phydev(mii_bus, mac_cb, addr);
730 if (!rc) 715 if (!rc)
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c
index 05bd19f9ebc5..9283bc60bb24 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c
@@ -2788,7 +2788,7 @@ module_platform_driver(g_dsaf_driver);
2788 * @enable: false - request reset , true - drop reset 2788 * @enable: false - request reset , true - drop reset
2789 * retuen 0 - success , negative -fail 2789 * retuen 0 - success , negative -fail
2790 */ 2790 */
2791int hns_dsaf_roce_reset(struct fwnode_handle *dsaf_fwnode, bool enable) 2791int hns_dsaf_roce_reset(struct fwnode_handle *dsaf_fwnode, bool dereset)
2792{ 2792{
2793 struct dsaf_device *dsaf_dev; 2793 struct dsaf_device *dsaf_dev;
2794 struct platform_device *pdev; 2794 struct platform_device *pdev;
@@ -2817,24 +2817,44 @@ int hns_dsaf_roce_reset(struct fwnode_handle *dsaf_fwnode, bool enable)
2817 {DSAF_ROCE_SL_1, DSAF_ROCE_SL_1, DSAF_ROCE_SL_3}, 2817 {DSAF_ROCE_SL_1, DSAF_ROCE_SL_1, DSAF_ROCE_SL_3},
2818 }; 2818 };
2819 2819
2820 if (!is_of_node(dsaf_fwnode)) { 2820 /* find the platform device corresponding to fwnode */
2821 pr_err("hisi_dsaf: Only support DT node!\n"); 2821 if (is_of_node(dsaf_fwnode)) {
2822 pdev = of_find_device_by_node(to_of_node(dsaf_fwnode));
2823 } else if (is_acpi_device_node(dsaf_fwnode)) {
2824 pdev = hns_dsaf_find_platform_device(dsaf_fwnode);
2825 } else {
2826 pr_err("fwnode is neither OF or ACPI type\n");
2822 return -EINVAL; 2827 return -EINVAL;
2823 } 2828 }
2824 pdev = of_find_device_by_node(to_of_node(dsaf_fwnode)); 2829
2830 /* check if we were a success in fetching pdev */
2831 if (!pdev) {
2832 pr_err("couldn't find platform device for node\n");
2833 return -ENODEV;
2834 }
2835
2836 /* retrieve the dsaf_device from the driver data */
2825 dsaf_dev = dev_get_drvdata(&pdev->dev); 2837 dsaf_dev = dev_get_drvdata(&pdev->dev);
2838 if (!dsaf_dev) {
2839 dev_err(&pdev->dev, "dsaf_dev is NULL\n");
2840 return -ENODEV;
2841 }
2842
2843 /* now, make sure we are running on compatible SoC */
2826 if (AE_IS_VER1(dsaf_dev->dsaf_ver)) { 2844 if (AE_IS_VER1(dsaf_dev->dsaf_ver)) {
2827 dev_err(dsaf_dev->dev, "%s v1 chip doesn't support RoCE!\n", 2845 dev_err(dsaf_dev->dev, "%s v1 chip doesn't support RoCE!\n",
2828 dsaf_dev->ae_dev.name); 2846 dsaf_dev->ae_dev.name);
2829 return -ENODEV; 2847 return -ENODEV;
2830 } 2848 }
2831 2849
2832 if (!enable) { 2850 /* do reset or de-reset according to the flag */
2833 /* Reset rocee-channels in dsaf and rocee */ 2851 if (!dereset) {
2834 hns_dsaf_srst_chns(dsaf_dev, DSAF_CHNS_MASK, false); 2852 /* reset rocee-channels in dsaf and rocee */
2835 hns_dsaf_roce_srst(dsaf_dev, false); 2853 dsaf_dev->misc_op->hns_dsaf_srst_chns(dsaf_dev, DSAF_CHNS_MASK,
2854 false);
2855 dsaf_dev->misc_op->hns_dsaf_roce_srst(dsaf_dev, false);
2836 } else { 2856 } else {
2837 /* Configure dsaf tx roce correspond to port map and sl map */ 2857 /* configure dsaf tx roce correspond to port map and sl map */
2838 mp = dsaf_read_dev(dsaf_dev, DSAF_ROCE_PORT_MAP_REG); 2858 mp = dsaf_read_dev(dsaf_dev, DSAF_ROCE_PORT_MAP_REG);
2839 for (i = 0; i < DSAF_ROCE_CREDIT_CHN; i++) 2859 for (i = 0; i < DSAF_ROCE_CREDIT_CHN; i++)
2840 dsaf_set_field(mp, 7 << i * 3, i * 3, 2860 dsaf_set_field(mp, 7 << i * 3, i * 3,
@@ -2848,12 +2868,13 @@ int hns_dsaf_roce_reset(struct fwnode_handle *dsaf_fwnode, bool enable)
2848 sl_map[i][DSAF_ROCE_6PORT_MODE]); 2868 sl_map[i][DSAF_ROCE_6PORT_MODE]);
2849 dsaf_write_dev(dsaf_dev, DSAF_ROCE_SL_MAP_REG, sl); 2869 dsaf_write_dev(dsaf_dev, DSAF_ROCE_SL_MAP_REG, sl);
2850 2870
2851 /* De-reset rocee-channels in dsaf and rocee */ 2871 /* de-reset rocee-channels in dsaf and rocee */
2852 hns_dsaf_srst_chns(dsaf_dev, DSAF_CHNS_MASK, true); 2872 dsaf_dev->misc_op->hns_dsaf_srst_chns(dsaf_dev, DSAF_CHNS_MASK,
2873 true);
2853 msleep(SRST_TIME_INTERVAL); 2874 msleep(SRST_TIME_INTERVAL);
2854 hns_dsaf_roce_srst(dsaf_dev, true); 2875 dsaf_dev->misc_op->hns_dsaf_roce_srst(dsaf_dev, true);
2855 2876
2856 /* Eanble dsaf channel rocee credit */ 2877 /* enable dsaf channel rocee credit */
2857 credit = dsaf_read_dev(dsaf_dev, DSAF_SBM_ROCEE_CFG_REG_REG); 2878 credit = dsaf_read_dev(dsaf_dev, DSAF_SBM_ROCEE_CFG_REG_REG);
2858 dsaf_set_bit(credit, DSAF_SBM_ROCEE_CFG_CRD_EN_B, 0); 2879 dsaf_set_bit(credit, DSAF_SBM_ROCEE_CFG_CRD_EN_B, 0);
2859 dsaf_write_dev(dsaf_dev, DSAF_SBM_ROCEE_CFG_REG_REG, credit); 2880 dsaf_write_dev(dsaf_dev, DSAF_SBM_ROCEE_CFG_REG_REG, credit);
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.h b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.h
index f3681d566ae6..35df187e66f1 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.h
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.h
@@ -305,7 +305,7 @@ struct dsaf_misc_op {
305 void (*cpld_reset_led)(struct hns_mac_cb *mac_cb); 305 void (*cpld_reset_led)(struct hns_mac_cb *mac_cb);
306 int (*cpld_set_led_id)(struct hns_mac_cb *mac_cb, 306 int (*cpld_set_led_id)(struct hns_mac_cb *mac_cb,
307 enum hnae_led_state status); 307 enum hnae_led_state status);
308 /* reset seris function, it will be reset if the dereseet is 0 */ 308 /* reset series function, it will be reset if the dereset is 0 */
309 void (*dsaf_reset)(struct dsaf_device *dsaf_dev, bool dereset); 309 void (*dsaf_reset)(struct dsaf_device *dsaf_dev, bool dereset);
310 void (*xge_srst)(struct dsaf_device *dsaf_dev, u32 port, bool dereset); 310 void (*xge_srst)(struct dsaf_device *dsaf_dev, u32 port, bool dereset);
311 void (*xge_core_srst)(struct dsaf_device *dsaf_dev, u32 port, 311 void (*xge_core_srst)(struct dsaf_device *dsaf_dev, u32 port,
@@ -313,6 +313,9 @@ struct dsaf_misc_op {
313 void (*ge_srst)(struct dsaf_device *dsaf_dev, u32 port, bool dereset); 313 void (*ge_srst)(struct dsaf_device *dsaf_dev, u32 port, bool dereset);
314 void (*ppe_srst)(struct dsaf_device *dsaf_dev, u32 port, bool dereset); 314 void (*ppe_srst)(struct dsaf_device *dsaf_dev, u32 port, bool dereset);
315 void (*ppe_comm_srst)(struct dsaf_device *dsaf_dev, bool dereset); 315 void (*ppe_comm_srst)(struct dsaf_device *dsaf_dev, bool dereset);
316 void (*hns_dsaf_srst_chns)(struct dsaf_device *dsaf_dev, u32 msk,
317 bool dereset);
318 void (*hns_dsaf_roce_srst)(struct dsaf_device *dsaf_dev, bool dereset);
316 319
317 phy_interface_t (*get_phy_if)(struct hns_mac_cb *mac_cb); 320 phy_interface_t (*get_phy_if)(struct hns_mac_cb *mac_cb);
318 int (*get_sfp_prsnt)(struct hns_mac_cb *mac_cb, int *sfp_prsnt); 321 int (*get_sfp_prsnt)(struct hns_mac_cb *mac_cb, int *sfp_prsnt);
@@ -445,10 +448,6 @@ int hns_dsaf_get_mac_entry_by_index(
445 448
446void hns_dsaf_fix_mac_mode(struct hns_mac_cb *mac_cb); 449void hns_dsaf_fix_mac_mode(struct hns_mac_cb *mac_cb);
447 450
448void hns_dsaf_srst_chns(struct dsaf_device *dsaf_dev, u32 msk, bool enable);
449
450void hns_dsaf_roce_srst(struct dsaf_device *dsaf_dev, bool enable);
451
452int hns_dsaf_ae_init(struct dsaf_device *dsaf_dev); 451int hns_dsaf_ae_init(struct dsaf_device *dsaf_dev);
453void hns_dsaf_ae_uninit(struct dsaf_device *dsaf_dev); 452void hns_dsaf_ae_uninit(struct dsaf_device *dsaf_dev);
454 453
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c
index 36b9f791cf2f..67accce1d33d 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c
@@ -26,6 +26,8 @@ enum _dsm_rst_type {
26 HNS_XGE_CORE_RESET_FUNC = 0x3, 26 HNS_XGE_CORE_RESET_FUNC = 0x3,
27 HNS_XGE_RESET_FUNC = 0x4, 27 HNS_XGE_RESET_FUNC = 0x4,
28 HNS_GE_RESET_FUNC = 0x5, 28 HNS_GE_RESET_FUNC = 0x5,
29 HNS_DSAF_CHN_RESET_FUNC = 0x6,
30 HNS_ROCE_RESET_FUNC = 0x7,
29}; 31};
30 32
31const u8 hns_dsaf_acpi_dsm_uuid[] = { 33const u8 hns_dsaf_acpi_dsm_uuid[] = {
@@ -241,11 +243,11 @@ static void hns_dsaf_xge_core_srst_by_port(struct dsaf_device *dsaf_dev,
241 * bit18-19 for com/dfx 243 * bit18-19 for com/dfx
242 * @enable: false - request reset , true - drop reset 244 * @enable: false - request reset , true - drop reset
243 */ 245 */
244void hns_dsaf_srst_chns(struct dsaf_device *dsaf_dev, u32 msk, bool enable) 246void hns_dsaf_srst_chns(struct dsaf_device *dsaf_dev, u32 msk, bool dereset)
245{ 247{
246 u32 reg_addr; 248 u32 reg_addr;
247 249
248 if (!enable) 250 if (!dereset)
249 reg_addr = DSAF_SUB_SC_DSAF_RESET_REQ_REG; 251 reg_addr = DSAF_SUB_SC_DSAF_RESET_REQ_REG;
250 else 252 else
251 reg_addr = DSAF_SUB_SC_DSAF_RESET_DREQ_REG; 253 reg_addr = DSAF_SUB_SC_DSAF_RESET_DREQ_REG;
@@ -253,9 +255,27 @@ void hns_dsaf_srst_chns(struct dsaf_device *dsaf_dev, u32 msk, bool enable)
253 dsaf_write_sub(dsaf_dev, reg_addr, msk); 255 dsaf_write_sub(dsaf_dev, reg_addr, msk);
254} 256}
255 257
256void hns_dsaf_roce_srst(struct dsaf_device *dsaf_dev, bool enable) 258/**
259 * hns_dsaf_srst_chns - reset dsaf channels
260 * @dsaf_dev: dsaf device struct pointer
261 * @msk: xbar channels mask value:
262 * bit0-5 for xge0-5
263 * bit6-11 for ppe0-5
264 * bit12-17 for roce0-5
265 * bit18-19 for com/dfx
266 * @enable: false - request reset , true - drop reset
267 */
268void
269hns_dsaf_srst_chns_acpi(struct dsaf_device *dsaf_dev, u32 msk, bool dereset)
257{ 270{
258 if (!enable) { 271 hns_dsaf_acpi_srst_by_port(dsaf_dev, HNS_OP_RESET_FUNC,
272 HNS_DSAF_CHN_RESET_FUNC,
273 msk, dereset);
274}
275
276void hns_dsaf_roce_srst(struct dsaf_device *dsaf_dev, bool dereset)
277{
278 if (!dereset) {
259 dsaf_write_sub(dsaf_dev, DSAF_SUB_SC_ROCEE_RESET_REQ_REG, 1); 279 dsaf_write_sub(dsaf_dev, DSAF_SUB_SC_ROCEE_RESET_REQ_REG, 1);
260 } else { 280 } else {
261 dsaf_write_sub(dsaf_dev, 281 dsaf_write_sub(dsaf_dev,
@@ -267,6 +287,12 @@ void hns_dsaf_roce_srst(struct dsaf_device *dsaf_dev, bool enable)
267 } 287 }
268} 288}
269 289
290void hns_dsaf_roce_srst_acpi(struct dsaf_device *dsaf_dev, bool dereset)
291{
292 hns_dsaf_acpi_srst_by_port(dsaf_dev, HNS_OP_RESET_FUNC,
293 HNS_ROCE_RESET_FUNC, 0, dereset);
294}
295
270static void 296static void
271hns_dsaf_xge_core_srst_by_port_acpi(struct dsaf_device *dsaf_dev, 297hns_dsaf_xge_core_srst_by_port_acpi(struct dsaf_device *dsaf_dev,
272 u32 port, bool dereset) 298 u32 port, bool dereset)
@@ -575,6 +601,8 @@ struct dsaf_misc_op *hns_misc_op_get(struct dsaf_device *dsaf_dev)
575 misc_op->ge_srst = hns_dsaf_ge_srst_by_port; 601 misc_op->ge_srst = hns_dsaf_ge_srst_by_port;
576 misc_op->ppe_srst = hns_ppe_srst_by_port; 602 misc_op->ppe_srst = hns_ppe_srst_by_port;
577 misc_op->ppe_comm_srst = hns_ppe_com_srst; 603 misc_op->ppe_comm_srst = hns_ppe_com_srst;
604 misc_op->hns_dsaf_srst_chns = hns_dsaf_srst_chns;
605 misc_op->hns_dsaf_roce_srst = hns_dsaf_roce_srst;
578 606
579 misc_op->get_phy_if = hns_mac_get_phy_if; 607 misc_op->get_phy_if = hns_mac_get_phy_if;
580 misc_op->get_sfp_prsnt = hns_mac_get_sfp_prsnt; 608 misc_op->get_sfp_prsnt = hns_mac_get_sfp_prsnt;
@@ -591,6 +619,8 @@ struct dsaf_misc_op *hns_misc_op_get(struct dsaf_device *dsaf_dev)
591 misc_op->ge_srst = hns_dsaf_ge_srst_by_port_acpi; 619 misc_op->ge_srst = hns_dsaf_ge_srst_by_port_acpi;
592 misc_op->ppe_srst = hns_ppe_srst_by_port_acpi; 620 misc_op->ppe_srst = hns_ppe_srst_by_port_acpi;
593 misc_op->ppe_comm_srst = hns_ppe_com_srst; 621 misc_op->ppe_comm_srst = hns_ppe_com_srst;
622 misc_op->hns_dsaf_srst_chns = hns_dsaf_srst_chns_acpi;
623 misc_op->hns_dsaf_roce_srst = hns_dsaf_roce_srst_acpi;
594 624
595 misc_op->get_phy_if = hns_mac_get_phy_if_acpi; 625 misc_op->get_phy_if = hns_mac_get_phy_if_acpi;
596 misc_op->get_sfp_prsnt = hns_mac_get_sfp_prsnt; 626 misc_op->get_sfp_prsnt = hns_mac_get_sfp_prsnt;
@@ -603,3 +633,18 @@ struct dsaf_misc_op *hns_misc_op_get(struct dsaf_device *dsaf_dev)
603 633
604 return (void *)misc_op; 634 return (void *)misc_op;
605} 635}
636
637static int hns_dsaf_dev_match(struct device *dev, void *fwnode)
638{
639 return dev->fwnode == fwnode;
640}
641
642struct
643platform_device *hns_dsaf_find_platform_device(struct fwnode_handle *fwnode)
644{
645 struct device *dev;
646
647 dev = bus_find_device(&platform_bus_type, NULL,
648 fwnode, hns_dsaf_dev_match);
649 return dev ? to_platform_device(dev) : NULL;
650}
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.h b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.h
index f06bb03d47a6..310e80261366 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.h
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.h
@@ -34,5 +34,6 @@
34#define DSAF_LED_ANCHOR_B 5 34#define DSAF_LED_ANCHOR_B 5
35 35
36struct dsaf_misc_op *hns_misc_op_get(struct dsaf_device *dsaf_dev); 36struct dsaf_misc_op *hns_misc_op_get(struct dsaf_device *dsaf_dev);
37 37struct
38platform_device *hns_dsaf_find_platform_device(struct fwnode_handle *fwnode);
38#endif 39#endif
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h
index 13c16ab7be48..4b8b803822d1 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h
@@ -78,10 +78,10 @@
78#define DSAF_SUB_SC_RCB_PPE_COM_RESET_REQ_REG 0xA88 78#define DSAF_SUB_SC_RCB_PPE_COM_RESET_REQ_REG 0xA88
79#define DSAF_SUB_SC_RCB_PPE_COM_RESET_DREQ_REG 0xA8C 79#define DSAF_SUB_SC_RCB_PPE_COM_RESET_DREQ_REG 0xA8C
80#define DSAF_SUB_SC_DSAF_RESET_REQ_REG 0xAA8 80#define DSAF_SUB_SC_DSAF_RESET_REQ_REG 0xAA8
81#define DSAF_SUB_SC_ROCEE_RESET_REQ_REG 0xA50
82#define DSAF_SUB_SC_DSAF_RESET_DREQ_REG 0xAAC 81#define DSAF_SUB_SC_DSAF_RESET_DREQ_REG 0xAAC
83#define DSAF_SUB_SC_ROCEE_CLK_DIS_REG 0x32C 82#define DSAF_SUB_SC_ROCEE_RESET_REQ_REG 0xA50
84#define DSAF_SUB_SC_ROCEE_RESET_DREQ_REG 0xA54 83#define DSAF_SUB_SC_ROCEE_RESET_DREQ_REG 0xA54
84#define DSAF_SUB_SC_ROCEE_CLK_DIS_REG 0x32C
85#define DSAF_SUB_SC_ROCEE_CLK_EN_REG 0x328 85#define DSAF_SUB_SC_ROCEE_CLK_EN_REG 0x328
86#define DSAF_SUB_SC_LIGHT_MODULE_DETECT_EN_REG 0x2060 86#define DSAF_SUB_SC_LIGHT_MODULE_DETECT_EN_REG 0x2060
87#define DSAF_SUB_SC_TCAM_MBIST_EN_REG 0x2300 87#define DSAF_SUB_SC_TCAM_MBIST_EN_REG 0x2300