Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/cxgbe/t4_main.c
- This file is larger than 256 KB, so syntax highlighting is disabled by default.
Show First 20 Lines • Show All 1,794 Lines • ▼ Show 20 Lines | fail: | ||||
case SIOCGIFMEDIA: | case SIOCGIFMEDIA: | ||||
case SIOCGIFXMEDIA: | case SIOCGIFXMEDIA: | ||||
ifmedia_ioctl(ifp, ifr, &pi->media, cmd); | ifmedia_ioctl(ifp, ifr, &pi->media, cmd); | ||||
break; | break; | ||||
case SIOCGI2C: { | case SIOCGI2C: { | ||||
struct ifi2creq i2c; | struct ifi2creq i2c; | ||||
rc = copyin(ifr->ifr_data, &i2c, sizeof(i2c)); | rc = copyin(ifr_data_get_ptr(ifr), &i2c, sizeof(i2c)); | ||||
if (rc != 0) | if (rc != 0) | ||||
break; | break; | ||||
if (i2c.dev_addr != 0xA0 && i2c.dev_addr != 0xA2) { | if (i2c.dev_addr != 0xA0 && i2c.dev_addr != 0xA2) { | ||||
rc = EPERM; | rc = EPERM; | ||||
break; | break; | ||||
} | } | ||||
if (i2c.len > sizeof(i2c.data)) { | if (i2c.len > sizeof(i2c.data)) { | ||||
rc = EINVAL; | rc = EINVAL; | ||||
break; | break; | ||||
} | } | ||||
rc = begin_synchronized_op(sc, vi, SLEEP_OK | INTR_OK, "t4i2c"); | rc = begin_synchronized_op(sc, vi, SLEEP_OK | INTR_OK, "t4i2c"); | ||||
if (rc) | if (rc) | ||||
return (rc); | return (rc); | ||||
rc = -t4_i2c_rd(sc, sc->mbox, pi->port_id, i2c.dev_addr, | rc = -t4_i2c_rd(sc, sc->mbox, pi->port_id, i2c.dev_addr, | ||||
i2c.offset, i2c.len, &i2c.data[0]); | i2c.offset, i2c.len, &i2c.data[0]); | ||||
end_synchronized_op(sc, 0); | end_synchronized_op(sc, 0); | ||||
if (rc == 0) | if (rc == 0) | ||||
rc = copyout(&i2c, ifr->ifr_data, sizeof(i2c)); | rc = copyout(&i2c, ifr_data_get_ptr(ifr), sizeof(i2c)); | ||||
break; | break; | ||||
} | } | ||||
default: | default: | ||||
rc = ether_ioctl(ifp, cmd, data); | rc = ether_ioctl(ifp, cmd, data); | ||||
} | } | ||||
return (rc); | return (rc); | ||||
▲ Show 20 Lines • Show All 8,613 Lines • Show Last 20 Lines |