habanalabs: define ASIC-dependent interface for signal/wait
This feature requires handling h/w resources which are a bit different from one ASIC to the other. Therefore, we need to define a set of interfaces the ASIC code provides to the common code to signal, wait, reset sync object and to reset and init a queue. As this feature is not supported in Goya, provide an empty implementation of those functions. Signed-off-by: Omer Shpigelman <oshpigelman@habana.ai> Reviewed-by: Oded Gabbay <oded.gabbay@gmail.com> Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
This commit is contained in:
Родитель
f9e5f29518
Коммит
ec2f8a306a
|
@ -5137,6 +5137,42 @@ u32 goya_get_queue_id_for_cq(struct hl_device *hdev, u32 cq_idx)
|
||||||
return cq_idx;
|
return cq_idx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void goya_ext_queue_init(struct hl_device *hdev, u32 q_idx)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void goya_ext_queue_reset(struct hl_device *hdev, u32 q_idx)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static u32 goya_get_signal_cb_size(struct hl_device *hdev)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static u32 goya_get_wait_cb_size(struct hl_device *hdev)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void goya_gen_signal_cb(struct hl_device *hdev, void *data, u16 sob_id)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void goya_gen_wait_cb(struct hl_device *hdev, void *data, u16 sob_id,
|
||||||
|
u16 sob_val, u16 mon_id, u32 q_idx)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void goya_reset_sob(struct hl_device *hdev, void *data)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
static void goya_set_dma_mask_from_fw(struct hl_device *hdev)
|
static void goya_set_dma_mask_from_fw(struct hl_device *hdev)
|
||||||
{
|
{
|
||||||
if (RREG32(mmPSOC_GLOBAL_CONF_NON_RST_FLOPS_0) ==
|
if (RREG32(mmPSOC_GLOBAL_CONF_NON_RST_FLOPS_0) ==
|
||||||
|
@ -5222,6 +5258,13 @@ static const struct hl_asic_funcs goya_funcs = {
|
||||||
.read_device_fw_version = goya_read_device_fw_version,
|
.read_device_fw_version = goya_read_device_fw_version,
|
||||||
.load_firmware_to_device = goya_load_firmware_to_device,
|
.load_firmware_to_device = goya_load_firmware_to_device,
|
||||||
.load_boot_fit_to_device = goya_load_boot_fit_to_device,
|
.load_boot_fit_to_device = goya_load_boot_fit_to_device,
|
||||||
|
.ext_queue_init = goya_ext_queue_init,
|
||||||
|
.ext_queue_reset = goya_ext_queue_reset,
|
||||||
|
.get_signal_cb_size = goya_get_signal_cb_size,
|
||||||
|
.get_wait_cb_size = goya_get_wait_cb_size,
|
||||||
|
.gen_signal_cb = goya_gen_signal_cb,
|
||||||
|
.gen_wait_cb = goya_gen_wait_cb,
|
||||||
|
.reset_sob = goya_reset_sob,
|
||||||
.set_dma_mask_from_fw = goya_set_dma_mask_from_fw,
|
.set_dma_mask_from_fw = goya_set_dma_mask_from_fw,
|
||||||
.get_device_time = goya_get_device_time
|
.get_device_time = goya_get_device_time
|
||||||
};
|
};
|
||||||
|
|
|
@ -553,6 +553,13 @@ enum hl_pll_frequency {
|
||||||
* contained in registers
|
* contained in registers
|
||||||
* @load_firmware_to_device: load the firmware to the device's memory
|
* @load_firmware_to_device: load the firmware to the device's memory
|
||||||
* @load_boot_fit_to_device: load boot fit to device's memory
|
* @load_boot_fit_to_device: load boot fit to device's memory
|
||||||
|
* @ext_queue_init: Initialize the given external queue.
|
||||||
|
* @ext_queue_reset: Reset the given external queue.
|
||||||
|
* @get_signal_cb_size: Get signal CB size.
|
||||||
|
* @get_wait_cb_size: Get wait CB size.
|
||||||
|
* @gen_signal_cb: Generate a signal CB.
|
||||||
|
* @gen_wait_cb: Generate a wait CB.
|
||||||
|
* @reset_sob: Reset a SOB.
|
||||||
* @set_dma_mask_from_fw: set the DMA mask in the driver according to the
|
* @set_dma_mask_from_fw: set the DMA mask in the driver according to the
|
||||||
* firmware configuration
|
* firmware configuration
|
||||||
* @get_device_time: Get the device time.
|
* @get_device_time: Get the device time.
|
||||||
|
@ -648,6 +655,14 @@ struct hl_asic_funcs {
|
||||||
enum hl_fw_component fwc);
|
enum hl_fw_component fwc);
|
||||||
int (*load_firmware_to_device)(struct hl_device *hdev);
|
int (*load_firmware_to_device)(struct hl_device *hdev);
|
||||||
int (*load_boot_fit_to_device)(struct hl_device *hdev);
|
int (*load_boot_fit_to_device)(struct hl_device *hdev);
|
||||||
|
void (*ext_queue_init)(struct hl_device *hdev, u32 hw_queue_id);
|
||||||
|
void (*ext_queue_reset)(struct hl_device *hdev, u32 hw_queue_id);
|
||||||
|
u32 (*get_signal_cb_size)(struct hl_device *hdev);
|
||||||
|
u32 (*get_wait_cb_size)(struct hl_device *hdev);
|
||||||
|
void (*gen_signal_cb)(struct hl_device *hdev, void *data, u16 sob_id);
|
||||||
|
void (*gen_wait_cb)(struct hl_device *hdev, void *data, u16 sob_id,
|
||||||
|
u16 sob_val, u16 mon_id, u32 q_idx);
|
||||||
|
void (*reset_sob)(struct hl_device *hdev, void *data);
|
||||||
void (*set_dma_mask_from_fw)(struct hl_device *hdev);
|
void (*set_dma_mask_from_fw)(struct hl_device *hdev);
|
||||||
u64 (*get_device_time)(struct hl_device *hdev);
|
u64 (*get_device_time)(struct hl_device *hdev);
|
||||||
};
|
};
|
||||||
|
|
Загрузка…
Ссылка в новой задаче