summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Dearman <chris.dearman@imgtec.com>2016-02-25 11:21:51 -0800
committerChris Dearman <chris.dearman@imgtec.com>2016-03-04 10:32:39 -0800
commitb739414901d9cd13eda7c644e2873edf41fa9215 (patch)
tree6b3b828da4e8f8d5ae67234e10399e179480a643
parent65d3e31da5517250a54351630afeaf35fee924ae (diff)
downloadimagination-b739414901d9cd13eda7c644e2873edf41fa9215.tar.gz
Set WiFi MAC addresses from OTP data
Bug:27479111 Change-Id: I44ede163dfed607d103fc81da2b21694976c5508
-rw-r--r--peripheral/wifi/uccp420/Android.mk10
-rw-r--r--peripheral/wifi/uccp420/peripheral.mk8
-rw-r--r--peripheral/wifi/uccp420/sepolicy/file_contexts1
-rw-r--r--peripheral/wifi/uccp420/sepolicy/wifisetmac.te12
-rw-r--r--peripheral/wifi/uccp420/uccp420.rc3
-rwxr-xr-xperipheral/wifi/uccp420/wifisetmac11
6 files changed, 44 insertions, 1 deletions
diff --git a/peripheral/wifi/uccp420/Android.mk b/peripheral/wifi/uccp420/Android.mk
index 590659d..1471e52 100644
--- a/peripheral/wifi/uccp420/Android.mk
+++ b/peripheral/wifi/uccp420/Android.mk
@@ -32,4 +32,14 @@ LOCAL_MODULE_TAGS := optional
include $(BUILD_SHARED_LIBRARY)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := wifisetmac
+LOCAL_SRC_FILES := wifisetmac
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_MODULE_PATH := $(TARGET_OUT)/bin
+
+include $(BUILD_PREBUILT)
+
endif
diff --git a/peripheral/wifi/uccp420/peripheral.mk b/peripheral/wifi/uccp420/peripheral.mk
index 708d995..97ea19e 100644
--- a/peripheral/wifi/uccp420/peripheral.mk
+++ b/peripheral/wifi/uccp420/peripheral.mk
@@ -14,6 +14,8 @@
# limitations under the License.
#
+LOCAL_PATH := hardware/bsp/imagination/peripheral/wifi/uccp420
+
# UCCP420 WIFI Firmware
UCCP420_WIFI_FW_SRC = vendor/bsp/imagination/peripheral/wifi/uccp420_firmware
UCCP420_WIFI_FW_DST = system/vendor/firmware/img/uccp420wlan
@@ -22,5 +24,11 @@ PRODUCT_COPY_FILES += \
$(UCCP420_WIFI_FW_SRC)/v4_5_8/MAC_LOADER.ldr:$(UCCP420_WIFI_FW_DST)/MAC_LOADER.ldr \
$(UCCP420_WIFI_FW_SRC)/v4_5_8/MCP_LOADER.ldr:$(UCCP420_WIFI_FW_DST)/MCP_LOADER.ldr
+BOARD_SEPOLICY_DIRS += \
+ $(LOCAL_PATH)/sepolicy
+
+DEVICE_PACKAGES += \
+ wifisetmac
+
WIFI_DRIVER_HAL_MODULE := wifi_driver.$(soc_name)
WIFI_DRIVER_HAL_PERIPHERAL := uccp420
diff --git a/peripheral/wifi/uccp420/sepolicy/file_contexts b/peripheral/wifi/uccp420/sepolicy/file_contexts
new file mode 100644
index 0000000..c62793f
--- /dev/null
+++ b/peripheral/wifi/uccp420/sepolicy/file_contexts
@@ -0,0 +1 @@
+/system/bin/wifisetmac u:object_r:wifisetmac_exec:s0
diff --git a/peripheral/wifi/uccp420/sepolicy/wifisetmac.te b/peripheral/wifi/uccp420/sepolicy/wifisetmac.te
new file mode 100644
index 0000000..415a726
--- /dev/null
+++ b/peripheral/wifi/uccp420/sepolicy/wifisetmac.te
@@ -0,0 +1,12 @@
+# Domain for wifisetmac
+type wifisetmac, domain;
+type wifisetmac_exec, exec_type, file_type;
+
+brillo_domain(wifisetmac)
+allow_crash_reporter(wifisetmac)
+
+allow wifisetmac shell_exec:file read;
+allow wifisetmac proc:file write;
+allow wifisetmac system_file:file execute_no_trans;
+allow wifisetmac mtd_device:dir search;
+allow wifisetmac mtd_device:chr_file { rw_file_perms };
diff --git a/peripheral/wifi/uccp420/uccp420.rc b/peripheral/wifi/uccp420/uccp420.rc
index fe4657c..72a731a 100644
--- a/peripheral/wifi/uccp420/uccp420.rc
+++ b/peripheral/wifi/uccp420/uccp420.rc
@@ -1,5 +1,6 @@
-# bcsp configuration
+# uucp420 configuration
# Tell the kernel driver where to find the firmware
on early-boot
write /sys/module/firmware_class/parameters/path /vendor/firmware
+ exec /system/bin/wifisetmac
diff --git a/peripheral/wifi/uccp420/wifisetmac b/peripheral/wifi/uccp420/wifisetmac
new file mode 100755
index 0000000..08e845a
--- /dev/null
+++ b/peripheral/wifi/uccp420/wifisetmac
@@ -0,0 +1,11 @@
+#!/system/bin/sh
+#
+# Initialize WiFi MAC addresses
+
+if [ -x /system/bin/proddata ]; then
+ mac0=`proddata read MAC_0`
+ mac1=`proddata read MAC_1`
+ echo "vif_macs=$mac0$mac1" > /proc/uccp420/params
+fi
+
+exit 0