Home
last modified time | relevance | path

Searched refs:osdev (Results 1 – 25 of 106) sorted by relevance

12345

/wlan-driver/qca-wifi-host-cmn/qdf/inc/
Dqdf_mem.h225 void qdf_mem_multi_pages_alloc_debug(qdf_device_t osdev,
248 #define qdf_mem_multi_pages_alloc(osdev, pages, element_size, element_num,\ argument
250 qdf_mem_multi_pages_alloc_debug(osdev, pages, element_size, \
267 void qdf_mem_multi_pages_free_debug(qdf_device_t osdev,
283 #define qdf_mem_multi_pages_free(osdev, pages, memctxt, cacheable) \ argument
284 qdf_mem_multi_pages_free_debug(osdev, pages, memctxt, cacheable, \
328 #define qdf_mem_alloc_consistent(osdev, dev, size, paddr) \ argument
329 qdf_mem_alloc_consistent_debug(osdev, dev, size, paddr, \
331 void *qdf_mem_alloc_consistent_debug(qdf_device_t osdev, void *dev,
347 #define qdf_mem_free_consistent(osdev, dev, size, vaddr, paddr, memctx) \ argument
[all …]
Dqdf_nbuf.h1267 qdf_nbuf_dmamap_create(qdf_device_t osdev, qdf_dma_map_t *dmap) in qdf_nbuf_dmamap_create() argument
1269 return __qdf_nbuf_dmamap_create(osdev, dmap); in qdf_nbuf_dmamap_create()
1273 qdf_nbuf_dmamap_destroy(qdf_device_t osdev, qdf_dma_map_t dmap) in qdf_nbuf_dmamap_destroy() argument
1275 __qdf_nbuf_dmamap_destroy(osdev, dmap); in qdf_nbuf_dmamap_destroy()
1303 QDF_STATUS qdf_nbuf_map_debug(qdf_device_t osdev,
1309 #define qdf_nbuf_map(osdev, buf, dir) \ argument
1310 qdf_nbuf_map_debug(osdev, buf, dir, __func__, __LINE__)
1312 void qdf_nbuf_unmap_debug(qdf_device_t osdev,
1318 #define qdf_nbuf_unmap(osdev, buf, dir) \ argument
1319 qdf_nbuf_unmap_debug(osdev, buf, dir, __func__, __LINE__)
[all …]
Dqdf_nbuf_frag.h281 static inline QDF_STATUS qdf_mem_map_page(qdf_device_t osdev, qdf_frag_t buf, in qdf_mem_map_page() argument
285 return __qdf_mem_map_page(osdev, buf, dir, nbytes, phy_addr); in qdf_mem_map_page()
295 static inline void qdf_mem_unmap_page(qdf_device_t osdev, qdf_dma_addr_t paddr, in qdf_mem_unmap_page() argument
298 __qdf_mem_unmap_page(osdev, paddr, nbytes, dir); in qdf_mem_unmap_page()
/wlan-driver/qca-wifi-host-cmn/qdf/linux/src/
Di_qdf_mem.h163 static inline uint32_t __qdf_mem_map_nbytes_single(qdf_device_t osdev, in __qdf_mem_map_nbytes_single() argument
169 *phy_addr = dma_map_single(osdev->dev, buf, nbytes, in __qdf_mem_map_nbytes_single()
171 return dma_mapping_error(osdev->dev, *phy_addr) ? in __qdf_mem_map_nbytes_single()
176 static inline void __qdf_mem_dma_cache_sync(qdf_device_t osdev, in __qdf_mem_dma_cache_sync() argument
181 dma_cache_sync(osdev->dev, buf, nbytes, __qdf_dma_dir_to_os(dir)); in __qdf_mem_dma_cache_sync()
184 static inline void __qdf_mem_dma_cache_sync(qdf_device_t osdev, in __qdf_mem_dma_cache_sync() argument
189 dma_sync_single_for_cpu(osdev->dev, buf, nbytes, in __qdf_mem_dma_cache_sync()
204 static inline void __qdf_mem_unmap_nbytes_single(qdf_device_t osdev, in __qdf_mem_unmap_nbytes_single() argument
208 dma_unmap_single(osdev->dev, phy_addr, nbytes, in __qdf_mem_unmap_nbytes_single()
225 int __qdf_mempool_init(qdf_device_t osdev, __qdf_mempool_t *pool_addr,
[all …]
Dqdf_mem.c1195 int __qdf_mempool_init(qdf_device_t osdev, __qdf_mempool_t *pool_addr, in __qdf_mempool_init() argument
1224 if (!osdev->mem_pool[pool_id]) in __qdf_mempool_init()
1231 new_pool = osdev->mem_pool[pool_id] = (__qdf_mempool_ctxt_t *) in __qdf_mempool_init()
1250 osdev->mem_pool[pool_id] = NULL; in __qdf_mempool_init()
1273 void __qdf_mempool_destroy(qdf_device_t osdev, __qdf_mempool_t pool) in __qdf_mempool_destroy() argument
1290 osdev->mem_pool[pool_id] = NULL; in __qdf_mempool_destroy()
1294 void *__qdf_mempool_alloc(qdf_device_t osdev, __qdf_mempool_t pool) in __qdf_mempool_alloc() argument
1319 void __qdf_mempool_free(qdf_device_t osdev, __qdf_mempool_t pool, void *buf) in __qdf_mempool_free() argument
1704 void qdf_mem_multi_pages_alloc_debug(qdf_device_t osdev, in qdf_mem_multi_pages_alloc_debug() argument
1757 osdev, osdev->dev, pages->page_size, in qdf_mem_multi_pages_alloc_debug()
[all …]
Dqdf_nbuf.c519 struct sk_buff *__qdf_nbuf_alloc(qdf_device_t osdev, size_t size, int reserve, in __qdf_nbuf_alloc() argument
569 struct sk_buff *__qdf_nbuf_alloc(qdf_device_t osdev, size_t size, int reserve, in __qdf_nbuf_alloc() argument
573 return __qdf_nbuf_frag_alloc(osdev, size, reserve, align, prio, func, in __qdf_nbuf_alloc()
578 struct sk_buff *__qdf_nbuf_alloc(qdf_device_t osdev, size_t size, int reserve, in __qdf_nbuf_alloc() argument
617 struct sk_buff *__qdf_nbuf_frag_alloc(qdf_device_t osdev, size_t size, in __qdf_nbuf_frag_alloc() argument
735 __qdf_nbuf_page_frag_alloc(qdf_device_t osdev, size_t size, int reserve, in __qdf_nbuf_page_frag_alloc() argument
758 return __qdf_nbuf_alloc(osdev, orig_size, reserve, align, 0, in __qdf_nbuf_page_frag_alloc()
1084 QDF_STATUS qdf_nbuf_map_debug(qdf_device_t osdev, in qdf_nbuf_map_debug() argument
1096 status = __qdf_nbuf_map(osdev, buf, dir); in qdf_nbuf_map_debug()
1110 void qdf_nbuf_unmap_debug(qdf_device_t osdev, in qdf_nbuf_unmap_debug() argument
[all …]
Di_qdf_nbuf.h328 __qdf_nbuf_alloc(__qdf_device_t osdev, size_t size, int reserve, int align,
331 __qdf_nbuf_t __qdf_nbuf_alloc_simple(__qdf_device_t osdev, size_t size,
352 __qdf_nbuf_t __qdf_nbuf_alloc_ppe_ds(__qdf_device_t osdev, size_t size,
378 __qdf_nbuf_frag_alloc(__qdf_device_t osdev, size_t size, int reserve, int align,
419 __qdf_nbuf_page_frag_alloc(__qdf_device_t osdev, size_t size, int reserve,
453 QDF_STATUS __qdf_nbuf_map(__qdf_device_t osdev,
464 void __qdf_nbuf_unmap(__qdf_device_t osdev,
475 QDF_STATUS __qdf_nbuf_map_single(__qdf_device_t osdev,
486 void __qdf_nbuf_unmap_single(__qdf_device_t osdev,
519 QDF_STATUS __qdf_nbuf_dmamap_create(qdf_device_t osdev, __qdf_dma_map_t *dmap);
[all …]
Dqdf_nbuf_frag.c785 QDF_STATUS __qdf_mem_map_page(qdf_device_t osdev, __qdf_frag_t buf, in __qdf_mem_map_page() argument
794 *phy_addr = dma_map_page(osdev->dev, page, offset, nbytes, in __qdf_mem_map_page()
797 return dma_mapping_error(osdev->dev, *phy_addr) ? in __qdf_mem_map_page()
801 QDF_STATUS __qdf_mem_map_page(qdf_device_t osdev, __qdf_frag_t buf, in __qdf_mem_map_page() argument
812 void __qdf_mem_unmap_page(qdf_device_t osdev, qdf_dma_addr_t paddr, in __qdf_mem_unmap_page() argument
815 dma_unmap_page(osdev->dev, paddr, nbytes, in __qdf_mem_unmap_page()
819 void __qdf_mem_unmap_page(qdf_device_t osdev, qdf_dma_addr_t paddr, in __qdf_mem_unmap_page() argument
Di_qdf_nbuf_frag.h118 void __qdf_mem_unmap_page(qdf_device_t osdev, qdf_dma_addr_t paddr,
131 QDF_STATUS __qdf_mem_map_page(qdf_device_t osdev, __qdf_frag_t buf,
/wlan-driver/fw-api/fw/
Da_osapi.h57 #define HIF_MALLOC_DIAGMEM(osdev, size, pa, context, retry) \ argument
58 os_malloc_CONSISTENT(osdev, size, pa, context, retry)
59 #define HIF_FREE_DIAGMEM(osdev, size, vaddr, pa, context) \ argument
60 OS_FREE_CONSISTENT(osdev, size, vaddr, pa, context)
61 #define HIF_DIAGMEM_SYNC(osdev, pa, size, dir, context) argument
63 #define HIF_MALLOC_DIAGMEM(osdev, size, pa, context, retry) \ argument
64 os_malloc_NONCONSISTENT(osdev, size, pa, context, retry)
65 #define HIF_FREE_DIAGMEM(osdev, size, vaddr, pa, context) \ argument
66 OS_FREE_NONCONSISTENT(osdev, size, vaddr, pa, context)
67 #define HIF_DIAGMEM_SYNC(osdev, pa, size, dir, context) \ argument
[all …]
/wlan-driver/qcacld-3.0/core/dp/htt/
Dhtt_rx.c272 qdf_mem_shared_mem_alloc(pdev->osdev, in htt_rx_ipa_uc_alloc_wdi2_rsc()
283 qdf_mem_shared_mem_alloc(pdev->osdev, 4); in htt_rx_ipa_uc_alloc_wdi2_rsc()
288 qdf_mem_shared_mem_free(pdev->osdev, in htt_rx_ipa_uc_alloc_wdi2_rsc()
304 qdf_mem_shared_mem_free(pdev->osdev, pdev->ipa_uc_rx_rsc.rx2_ind_ring); in htt_rx_ipa_uc_free_wdi2_rsc()
305 qdf_mem_shared_mem_free(pdev->osdev, in htt_rx_ipa_uc_free_wdi2_rsc()
340 qdf_mem_shared_mem_alloc(pdev->osdev, in htt_rx_ipa_uc_attach()
351 qdf_mem_shared_mem_alloc(pdev->osdev, 4); in htt_rx_ipa_uc_attach()
356 qdf_mem_shared_mem_free(pdev->osdev, in htt_rx_ipa_uc_attach()
363 qdf_mem_shared_mem_free(pdev->osdev, pdev->ipa_uc_rx_rsc.rx_ind_ring); in htt_rx_ipa_uc_attach()
364 qdf_mem_shared_mem_free(pdev->osdev, in htt_rx_ipa_uc_attach()
[all …]
Dhtt_h2t.c159 pdev->osdev, in htt_h2t_frag_desc_bank_cfg_msg()
263 msg = qdf_nbuf_alloc(pdev->osdev, HTT_MSG_BUF_SIZE(msg_size), in htt_h2t_ver_req_msg()
340 msg = qdf_nbuf_alloc(pdev->osdev, in htt_h2t_rx_ring_rfs_cfg_msg_ll()
432 msg = qdf_nbuf_alloc(pdev->osdev, in htt_h2t_rx_ring_cfg_msg_ll()
642 pdev->osdev, in htt_h2t_rx_ring_cfg_msg_hl()
818 msg = qdf_nbuf_alloc(pdev->osdev, in htt_h2t_dbg_stats_get()
899 msg = qdf_nbuf_alloc(pdev->osdev, HTT_MSG_BUF_SIZE(HTT_H2T_SYNC_MSG_SZ), in htt_h2t_sync_msg()
953 msg = qdf_nbuf_alloc(pdev->osdev, HTT_MSG_BUF_SIZE(HTT_AGGR_CFG_MSG_SZ), in htt_h2t_aggr_cfg_msg()
1036 msg = qdf_nbuf_alloc(pdev->osdev, HTT_MSG_BUF_SIZE(HTT_WDI_IPA_CFG_SZ), in htt_h2t_ipa_uc_rsc_cfg_msg()
1060 (unsigned int)qdf_mem_get_dma_addr(pdev->osdev, in htt_h2t_ipa_uc_rsc_cfg_msg()
[all …]
Dhtt_rx_ll.c120 if (qdf_mem_smmu_s1_enabled(pdev->osdev) && in htt_rx_ring_smmu_mapped()
177 net_buf = qdf_nbuf_alloc(pdev->osdev, in htt_rx_buff_pool_init()
251 net_buf = qdf_nbuf_alloc(pdev->osdev, in htt_rx_buff_pool_refill()
333 qdf_nbuf_alloc(pdev->osdev, HTT_RX_BUF_SIZE, in htt_rx_ring_buf_attach()
457 status = qdf_nbuf_map(pdev->osdev, rx_netbuf, in htt_rx_ring_fill_n()
460 status = qdf_nbuf_map(pdev->osdev, rx_netbuf, in htt_rx_ring_fill_n()
477 qdf_nbuf_unmap(pdev->osdev, rx_netbuf, in htt_rx_ring_fill_n()
480 qdf_nbuf_unmap(pdev->osdev, rx_netbuf, in htt_rx_ring_fill_n()
494 qdf_update_mem_map_table(pdev->osdev, &mem_map_table, in htt_rx_ring_fill_n()
954 qdf_nbuf_unmap(pdev->osdev, buf, QDF_DMA_BIDIRECTIONAL); in htt_rx_offload_msdu_pop_ll()
[all …]
Dhtt_tx.c167 qdf_mem_multi_pages_alloc(pdev->osdev, &pdev->frag_descs.desc_pages, in htt_tx_frag_desc_attach()
188 qdf_mem_multi_pages_free(pdev->osdev, &pdev->frag_descs.desc_pages, in htt_tx_frag_desc_detach()
348 qdf_mem_multi_pages_alloc(pdev->osdev, &pdev->tx_descs.desc_pages, in htt_tx_attach()
401 qdf_mem_multi_pages_free(pdev->osdev, &pdev->tx_descs.desc_pages, in htt_tx_attach()
416 qdf_mem_multi_pages_free(pdev->osdev, &pdev->tx_descs.desc_pages, in htt_tx_detach()
518 qdf_mem_multi_pages_alloc(pdev->osdev, &pdev->tx_descs.desc_pages, in htt_tx_attach()
569 qdf_mem_multi_pages_free(pdev->osdev, &pdev->tx_descs.desc_pages, in htt_tx_attach()
583 qdf_mem_multi_pages_free(pdev->osdev, &pdev->tx_descs.desc_pages, in htt_tx_detach()
1150 shared_tx_buffer = qdf_mem_shared_mem_alloc(pdev->osdev, in htt_tx_ipa_uc_wdi_tx_buf_alloc()
1159 buffer_paddr = qdf_mem_get_dma_addr(pdev->osdev, in htt_tx_ipa_uc_wdi_tx_buf_alloc()
[all …]
/wlan-driver/qcacld-3.0/core/dp/txrx/
Dol_txrx_ipa.c116 qdf_device_t osdev = cds_get_context(QDF_MODULE_ID_QDF_DEVICE); in ol_txrx_ipa_uc_get_resource() local
123 if (!osdev) in ol_txrx_ipa_uc_get_resource()
138 if ((0 == qdf_mem_get_dma_addr(osdev, in ol_txrx_ipa_uc_get_resource()
140 (0 == qdf_mem_get_dma_addr(osdev, in ol_txrx_ipa_uc_get_resource()
142 (0 == qdf_mem_get_dma_addr(osdev, in ol_txrx_ipa_uc_get_resource()
145 || (0 == qdf_mem_get_dma_addr(osdev, in ol_txrx_ipa_uc_get_resource()
296 if (!qdf_mem_smmu_s1_enabled(htt_pdev->osdev)) { in __ol_txrx_ipa_tx_buf_smmu_mapping()
341 if (!qdf_mem_smmu_s1_enabled(pdev->htt_pdev->osdev)) { in ol_txrx_ipa_tx_buf_smmu_mapping()
364 if (!qdf_mem_smmu_s1_enabled(pdev->htt_pdev->osdev)) { in ol_txrx_ipa_tx_buf_smmu_unmapping()
550 qdf_device_t osdev = cds_get_context(QDF_MODULE_ID_QDF_DEVICE); in ol_txrx_ipa_wdi_tx_params() local
[all …]
Dol_txrx_ipa.h97 #define OL_TXRX_IPA_WDI2_SET(pipe_in, ipa_res, osdev) \ argument
102 qdf_mem_get_dma_addr(osdev, \
107 qdf_mem_get_dma_addr(osdev, \
114 #define OL_TXRX_IPA_WDI2_SET(pipe_in, ipa_res, osdev) argument
/wlan-driver/qca-wifi-host-cmn/dp/wifi3.0/
Ddp_rx_buffer_pool.c56 refill_nbuf = qdf_nbuf_alloc(soc->osdev, rx_desc_pool->buf_size, in dp_rx_buffer_pool_refill()
130 dev = soc->osdev; in dp_rx_refill_buff_pool_enqueue()
232 nbuf = qdf_nbuf_alloc(soc->osdev, rx_desc_pool->buf_size, in dp_rx_buffer_pool_nbuf_alloc()
267 ret = qdf_nbuf_map_nbytes_single(soc->osdev, in dp_rx_buffer_pool_nbuf_map()
272 dp_audio_smmu_map(soc->osdev, in dp_rx_buffer_pool_nbuf_map()
273 qdf_mem_paddr_from_dmaaddr(soc->osdev, in dp_rx_buffer_pool_nbuf_map()
313 nbuf = qdf_nbuf_alloc(soc->osdev, rx_desc_pool->buf_size, in dp_rx_refill_buff_pool_init()
319 ret = qdf_nbuf_map_nbytes_single(soc->osdev, nbuf, in dp_rx_refill_buff_pool_init()
327 dp_audio_smmu_map(soc->osdev, in dp_rx_refill_buff_pool_init()
328 qdf_mem_paddr_from_dmaaddr(soc->osdev, in dp_rx_refill_buff_pool_init()
[all …]
Ddp_ipa.c133 qdf_update_mem_map_table(soc->osdev, &mem_map_table, in __dp_ipa_handle_buf_smmu_mapping()
177 !qdf_mem_smmu_s1_enabled(soc->osdev)) in dp_ipa_handle_rx_buf_smmu_mapping()
281 if (!qdf_mem_smmu_s1_enabled(soc->osdev)) in dp_ipa_handle_rx_buf_pool_smmu_mapping()
342 if (!qdf_mem_smmu_s1_enabled(soc->osdev)) in dp_ipa_handle_rx_buf_pool_smmu_mapping()
397 static QDF_STATUS dp_ipa_get_shared_mem_info(qdf_device_t osdev, in dp_ipa_get_shared_mem_info() argument
407 qdf_mem_set_dma_size(osdev, &shared_mem->mem_info, size); in dp_ipa_get_shared_mem_info()
408 *qdf_mem_get_dma_addr_ptr(osdev, &shared_mem->mem_info) = dma_addr; in dp_ipa_get_shared_mem_info()
410 paddr = qdf_mem_paddr_from_dmaaddr(osdev, dma_addr); in dp_ipa_get_shared_mem_info()
411 qdf_mem_set_dma_pa(osdev, &shared_mem->mem_info, paddr); in dp_ipa_get_shared_mem_info()
413 ret = qdf_mem_dma_get_sgtable(osdev->dev, &shared_mem->sgtable, in dp_ipa_get_shared_mem_info()
[all …]
Ddp_rx_buffer_pool.h198 return qdf_nbuf_alloc(soc->osdev, rx_desc_pool->buf_size, in dp_rx_buffer_pool_nbuf_alloc()
218 status = qdf_nbuf_map_nbytes_single(soc->osdev, in dp_rx_buffer_pool_nbuf_map()
225 dp_audio_smmu_map(soc->osdev, in dp_rx_buffer_pool_nbuf_map()
226 qdf_mem_paddr_from_dmaaddr(soc->osdev, in dp_rx_buffer_pool_nbuf_map()
Ddp_umac_reset.c67 ret = pld_get_user_msi_assignment(soc->osdev->dev, "DP", in dp_umac_reset_send_setup_cmd()
117 qdf_mem_alloc_consistent(soc->osdev, soc->osdev->dev, in dp_soc_umac_reset_init()
141 qdf_mem_free_consistent(soc->osdev, soc->osdev->dev, in dp_soc_umac_reset_init()
584 if (pld_get_enable_intx(soc->osdev->dev)) { in dp_umac_reset_interrupt_attach()
589 ret = pld_get_user_msi_assignment(soc->osdev->dev, "DP", in dp_umac_reset_interrupt_attach()
613 umac_reset_irq = pld_get_msi_irq(soc->osdev->dev, in dp_umac_reset_interrupt_attach()
948 qdf_mem_free_consistent(soc->osdev, soc->osdev->dev, in dp_soc_umac_reset_deinit()
Ddp_cal_client_api.h42 struct cdp_pdev *pdev, qdf_device_t osdev,
54 struct cdp_pdev *pdev, qdf_device_t osdev, in dp_cal_client_attach() argument
/wlan-driver/qca-wifi-host-cmn/target_if/direct_buf_rx/src/
Dtarget_if_direct_buf_rx_api.c180 void *hal_soc, qdf_device_t osdev) in direct_buf_rx_target_attach() argument
184 if (!hal_soc || !osdev) { in direct_buf_rx_target_attach()
200 dbr_psoc_obj->osdev = osdev; in direct_buf_rx_target_attach()
/wlan-driver/qca-wifi-host-cmn/hif/src/snoc/
Dif_snoc.c231 static int hif_set_dma_coherent_mask(qdf_device_t osdev) in hif_set_dma_coherent_mask() argument
236 return qdf_set_dma_coherent_mask(osdev->dev, in hif_set_dma_coherent_mask()
244 return qdf_set_dma_coherent_mask(osdev->dev, addr_bits); in hif_set_dma_coherent_mask()
247 static int hif_set_dma_coherent_mask(qdf_device_t osdev) in hif_set_dma_coherent_mask() argument
249 return qdf_set_dma_coherent_mask(osdev->dev, in hif_set_dma_coherent_mask()
/wlan-driver/qcacld-3.0/core/cds/src/
Dcds_api.c2923 QDF_STATUS cds_smmu_mem_map_setup(qdf_device_t osdev, bool ipa_present) in cds_smmu_mem_map_setup() argument
2929 domain = pld_smmu_get_domain(osdev->dev); in cds_smmu_mem_map_setup()
2943 osdev->smmu_s1_enabled = false; in cds_smmu_mem_map_setup()
2948 osdev->smmu_s1_enabled = true; in cds_smmu_mem_map_setup()
2954 osdev->smmu_s1_enabled = ipa_smmu_enabled && wlan_smmu_enabled; in cds_smmu_mem_map_setup()
2963 osdev->domain = domain; in cds_smmu_mem_map_setup()
2965 cds_info("SMMU S1 %s", osdev->smmu_s1_enabled ? "enabled" : "disabled"); in cds_smmu_mem_map_setup()
2971 QDF_STATUS cds_smmu_mem_map_setup(qdf_device_t osdev, bool ipa_present) in cds_smmu_mem_map_setup() argument
2977 mapping = pld_smmu_get_mapping(osdev->dev); in cds_smmu_mem_map_setup()
2991 osdev->smmu_s1_enabled = false; in cds_smmu_mem_map_setup()
[all …]
/wlan-driver/qca-wifi-host-cmn/dp/wifi3.0/rh/
Ddp_rh_htt.c153 msg = qdf_nbuf_alloc(soc->osdev, in dp_htt_h2t_rx_ring_rfs_cfg()
430 HTT_T2H_MSG_BUF_REINIT(htt_t2h_msg, soc->osdev); in dp_htt_t2h_msg_handler_fast()
532 hal_soc_handle_t hal_soc_hdl, qdf_device_t osdev) in dp_htt_soc_initialize_rh() argument
536 soc->osdev = osdev; in dp_htt_soc_initialize_rh()

12345