Print this page
NEX-8705 Drivers for ATTO Celerity FC-162E Gen 5 and Celerity FC-162P Gen 6 16GB FC cards support
Reviewed by: Dan Fields <dan.fields@nexenta.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
NEX-1878 update emlxs from source provided by Emulex

@@ -1059,10 +1059,45 @@
         return;
 
 } /* emlxs_mb_heartbeat() */
 
 
+/*ARGSUSED*/
+extern void
+emlxs_mb_gpio_write(emlxs_hba_t *hba, MAILBOXQ *mbq, uint8_t pin, uint8_t val)
+{
+        emlxs_port_t *port = &PPORT;
+        MAILBOX4 *mb4;
+        be_req_hdr_t *be_req;
+        mbox_req_hdr_t *hdr_req;
+        IOCTL_LOWLEVEL_GPIO_RDWR *gpio;
+
+        bzero((void *) mbq, sizeof (MAILBOXQ));
+
+        mbq->port = port;
+
+        mb4 = (MAILBOX4 *)mbq->mbox;
+        mb4->mbxCommand = MBX_SLI_CONFIG;
+        mb4->mbxOwner = OWN_HOST;
+
+        be_req = (be_req_hdr_t *)&mb4->un.varSLIConfig.be;
+        be_req->embedded = 1;
+        be_req->payload_length = sizeof (mbox_req_hdr_t) +
+            sizeof (IOCTL_LOWLEVEL_GPIO_RDWR);
+
+        hdr_req = &be_req->un_hdr.hdr_req;
+        hdr_req->subsystem = IOCTL_SUBSYSTEM_LOWLEVEL;
+        hdr_req->opcode = LOWLEVEL_OPCODE_GPIO_RDWR;
+        hdr_req->timeout = 0;
+        hdr_req->req_length = sizeof (IOCTL_LOWLEVEL_GPIO_RDWR);
+
+        gpio = (IOCTL_LOWLEVEL_GPIO_RDWR *)&mb4->un.varSLIConfig.payload;
+        gpio->params.request.GpioAction = LOWLEVEL_GPIO_ACT_WRITE;
+        gpio->params.request.LogicalPin = pin;
+        gpio->params.request.PinValue = val;
+} /* emlxs_mb_gpio_write */
+
 #ifdef MSI_SUPPORT
 
 /*ARGSUSED*/
 extern void
 emlxs_mb_config_msi(emlxs_hba_t *hba, MAILBOXQ *mbq, uint32_t *intr_map,