*/
 static void asd_chip_reset(struct asd_ha_struct *asd_ha)
 {
-       struct sas_ha_struct *sas_ha = &asd_ha->sas_ha;
-
        ASD_DPRINTK("chip reset for %s\n", pci_name(asd_ha->pcidev));
        asd_chip_hardrst(asd_ha);
-       sas_ha->notify_ha_event(sas_ha, HAE_RESET);
 }
 
 /* ---------- Done List Routines ---------- */
 
        hisi_sas_release_tasks(hisi_hba);
        spin_unlock_irqrestore(&hisi_hba->lock, flags);
 
-       sas_ha->notify_ha_event(sas_ha, HAE_RESET);
        clear_bit(HISI_SAS_REJECT_CMD_BIT, &hisi_hba->flags);
 
        /* Init and wait for PHYs to come up and all libsas event finished. */
 
 
 #include "sas_dump.h"
 
-static const char *sas_hae_str[] = {
-       [0] = "HAE_RESET",
-};
-
 static const char *sas_porte_str[] = {
        [0] = "PORTE_BYTES_DMAED",
        [1] = "PORTE_BROADCAST_RCVD",
        SAS_DPRINTK("phy%d: phy event: %s\n", phyid, sas_phye_str[pe]);
 }
 
-void sas_dprint_hae(struct sas_ha_struct *sas_ha, enum ha_event he)
-{
-       SAS_DPRINTK("ha %s: %s event\n", dev_name(sas_ha->dev),
-                   sas_hae_str[he]);
-}
-
 void sas_dump_port(struct asd_sas_port *port)
 {
        SAS_DPRINTK("port%d: class:0x%x\n", port->id, port->class);
 
 
 void sas_dprint_porte(int phyid, enum port_event pe);
 void sas_dprint_phye(int phyid, enum phy_event pe);
-void sas_dprint_hae(struct sas_ha_struct *sas_ha, enum ha_event he);
 void sas_dump_port(struct asd_sas_port *port);
 
        mutex_unlock(&ha->disco_mutex);
 }
 
-static int notify_ha_event(struct sas_ha_struct *sas_ha, enum ha_event event)
-{
-       BUG_ON(event >= HA_NUM_EVENTS);
-
-       return sas_queue_event(event, &sas_ha->pending,
-                              &sas_ha->ha_events[event].work, sas_ha);
-}
-
 static int notify_port_event(struct asd_sas_phy *phy, enum port_event event)
 {
        struct sas_ha_struct *ha = phy->ha;
 
 int sas_init_events(struct sas_ha_struct *sas_ha)
 {
-       static const work_func_t sas_ha_event_fns[HA_NUM_EVENTS] = {
-               [HAE_RESET] = sas_hae_reset,
-       };
-
-       int i;
-
-       for (i = 0; i < HA_NUM_EVENTS; i++) {
-               INIT_SAS_WORK(&sas_ha->ha_events[i].work, sas_ha_event_fns[i]);
-               sas_ha->ha_events[i].ha = sas_ha;
-       }
-
-       sas_ha->notify_ha_event = notify_ha_event;
        sas_ha->notify_port_event = notify_port_event;
        sas_ha->notify_phy_event = sas_notify_phy_event;
 
 
         hashed[2] = r & 0xFF;
 }
 
-
-/* ---------- HA events ---------- */
-
-void sas_hae_reset(struct work_struct *work)
-{
-       struct sas_ha_event *ev = to_sas_ha_event(work);
-       struct sas_ha_struct *ha = ev->ha;
-
-       clear_bit(HAE_RESET, &ha->pending);
-}
-
 int sas_register_ha(struct sas_ha_struct *sas_ha)
 {
        int error = 0;
        INIT_LIST_HEAD(&sas_ha->eh_ata_q);
 
        return 0;
-
 Undo_ports:
        sas_unregister_ports(sas_ha);
 Undo_phys:
 
  * so when updating/adding events here, please also
  * update the other file too.
  */
-enum ha_event {
-       HAE_RESET             = 0U,
-       HA_NUM_EVENTS         = 1,
-};
-
 enum port_event {
        PORTE_BYTES_DMAED     = 0U,
        PORTE_BROADCAST_RCVD  = 1,
 
 };
 
-struct sas_ha_event {
-       struct sas_work work;
-       struct sas_ha_struct *ha;
-};
-
-static inline struct sas_ha_event *to_sas_ha_event(struct work_struct *work)
-{
-       struct sas_ha_event *ev = container_of(work, typeof(*ev), work.work);
-
-       return ev;
-}
-
 enum sas_ha_state {
        SAS_HA_REGISTERED,
        SAS_HA_DRAINING,
 
 struct sas_ha_struct {
 /* private: */
-       struct sas_ha_event ha_events[HA_NUM_EVENTS];
-       unsigned long    pending;
-
        struct list_head  defer_q; /* work queued while draining */
        struct mutex      drain_mutex;
        unsigned long     state;
                                * their siblings when forming wide ports */
 
        /* LLDD calls these to notify the class of an event. */
-       int (*notify_ha_event)(struct sas_ha_struct *, enum ha_event);
        int (*notify_port_event)(struct asd_sas_phy *, enum port_event);
        int (*notify_phy_event)(struct asd_sas_phy *, enum phy_event);