meta-facebook: yosemite4: add draft fan table

Description:
- Add draft fan table for yosemite4.
- Will set all PWMs to 60%.

Test Case:

1. Check status of phosphor-pid-control service.
root@bmc:~# systemctl status phosphor-pid-control
* phosphor-pid-control.service -
  Phosphor-Pid-Control Margin-based Fan Control Daemon
	 Loaded: loaded
           (/usr/lib/systemd/system/phosphor-pid-control.service;
           enabled; preset: enabled)
	 Active: active (running) since
			 Fri 2023-10-13 16:37:45 PDT; 12s ago
   Main PID: 1715 (swampd)
		CPU: 178ms
	 CGroup: /system.slice/phosphor-pid-control.service
			 `-1715 /usr/bin/swampd

...

2. Check fan PWM was set to 60%.
root@bmc:~# busctl get-property xyz.openbmc_project.FanSensor \
/xyz/openbmc_project/sensors/fan_pwm/FANBOARD1_FAN1_PWM \
xyz.openbmc_project.Sensor.Value Value
d 60

Change-Id: Iaf6e17026a1f360e3bdffce34c65e1bbff9435e9
Signed-off-by: Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/fans/phosphor-pid-control/config.json b/meta-facebook/meta-yosemite4/recipes-phosphor/fans/phosphor-pid-control/config.json
new file mode 100644
index 0000000..291e0c5
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/fans/phosphor-pid-control/config.json
@@ -0,0 +1,603 @@
+{
+    "sensors": [
+        {
+            "name": "MEDUSA_TEMP0_C",
+            "type": "temp",
+            "readPath": "/xyz/openbmc_project/sensors/temperature/MEDUSA_TEMP0_C",
+            "timeout": 0,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "MEDUSA_TEMP1_C",
+            "type": "temp",
+            "readPath": "/xyz/openbmc_project/sensors/temperature/MEDUSA_TEMP1_C",
+            "timeout": 0,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "MGNT_TEMP_C",
+            "type": "temp",
+            "readPath": "/xyz/openbmc_project/sensors/temperature/MGNT_TEMP_C",
+            "timeout": 0,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "SPIDER_TEMP0_C",
+            "type": "temp",
+            "readPath": "/xyz/openbmc_project/sensors/temperature/SPIDER_TEMP0_C",
+            "timeout": 0,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "SPIDER_TEMP1_C",
+            "type": "temp",
+            "readPath": "/xyz/openbmc_project/sensors/temperature/SPIDER_TEMP1_C",
+            "timeout": 0,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "MEDUSA_12VDELTA0_TEMP_C",
+            "type": "temp",
+            "readPath": "/xyz/openbmc_project/sensors/temperature/MEDUSA_12VDELTA0_TEMP_C",
+            "timeout": 0,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "MEDUSA_12VDELTA1_TEMP_C",
+            "type": "temp",
+            "readPath": "/xyz/openbmc_project/sensors/temperature/MEDUSA_12VDELTA1_TEMP_C",
+            "timeout": 0,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "MEDUSA_12VDELTA2_TEMP_C",
+            "type": "temp",
+            "readPath": "/xyz/openbmc_project/sensors/temperature/MEDUSA_12VDELTA2_TEMP_C",
+            "timeout": 0,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "MEDUSA_12VDELTA3_TEMP_C",
+            "type": "temp",
+            "readPath": "/xyz/openbmc_project/sensors/temperature/MEDUSA_12VDELTA3_TEMP_C",
+            "timeout": 0,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "MEDUSA_12VEFFUSE_TEMP_C",
+            "type": "temp",
+            "readPath": "/xyz/openbmc_project/sensors/temperature/MEDUSA_12VEFFUSE_TEMP_C",
+            "timeout": 0,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "MEDUSA_48VHSC0_TEMP_C",
+            "type": "temp",
+            "readPath": "/xyz/openbmc_project/sensors/temperature/MEDUSA_48VHSC0_TEMP_C",
+            "timeout": 0,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "MEDUSA_48VHSC1_TEMP_C",
+            "type": "temp",
+            "readPath": "/xyz/openbmc_project/sensors/temperature/MEDUSA_48VHSC1_TEMP_C",
+            "timeout": 0,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD0_FAN0_TACH_IL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN0_TACH_IL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD0_FAN0_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD0_FAN0_TACH_OL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN0_TACH_OL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD0_FAN0_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD0_FAN1_TACH_IL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN1_TACH_IL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD0_FAN1_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD0_FAN1_TACH_OL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN1_TACH_OL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD0_FAN1_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD0_FAN2_TACH_IL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN2_TACH_IL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD0_FAN2_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD0_FAN2_TACH_OL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN2_TACH_OL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD0_FAN2_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD0_FAN3_TACH_IL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN3_TACH_IL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD0_FAN3_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD0_FAN3_TACH_OL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN3_TACH_OL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD0_FAN3_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD0_FAN4_TACH_IL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN4_TACH_IL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD0_FAN4_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD0_FAN4_TACH_OL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN4_TACH_OL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD0_FAN4_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD0_FAN5_TACH_IL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN5_TACH_IL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD0_FAN5_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD0_FAN5_TACH_OL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN5_TACH_OL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD0_FAN5_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD1_FAN0_TACH_IL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN0_TACH_IL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD1_FAN0_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD1_FAN0_TACH_OL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN0_TACH_OL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD1_FAN0_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD1_FAN1_TACH_IL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN1_TACH_IL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD1_FAN1_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD1_FAN1_TACH_OL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN1_TACH_OL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD1_FAN1_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD1_FAN2_TACH_IL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN2_TACH_IL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD1_FAN2_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD1_FAN2_TACH_OL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN2_TACH_OL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD1_FAN2_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD1_FAN3_TACH_IL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN3_TACH_IL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD1_FAN3_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD1_FAN3_TACH_OL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN3_TACH_OL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD1_FAN3_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD1_FAN4_TACH_IL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN4_TACH_IL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD1_FAN4_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD1_FAN4_TACH_OL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN4_TACH_OL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD1_FAN4_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD1_FAN5_TACH_IL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN5_TACH_IL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD1_FAN5_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        },
+        {
+            "name": "FANBOARD1_FAN5_TACH_OL",
+            "type": "fan",
+            "readPath": "/xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN5_TACH_OL",
+            "writePath": "/xyz/openbmc_project/control/fanpwm/FANBOARD1_FAN5_PWM",
+            "min": 0,
+            "max": 255,
+            "ignoreDbusMinMax": true
+        }
+    ],
+    "zones": [
+        {
+            "id": 1,
+            "failsafePercent": 100.0,
+            "minThermalOutput": 0.0,
+            "cycleTimeBaseMS": 1000,
+            "updateThermalsTimeMS": 1000,
+            "accumulateSetPoint": true,
+            "pids": [
+                {
+                    "name": "All Fan",
+                    "type": "fan",
+                    "inputs": [
+                        "FANBOARD0_FAN0_TACH_IL",
+                        "FANBOARD0_FAN0_TACH_OL",
+                        "FANBOARD0_FAN1_TACH_IL",
+                        "FANBOARD0_FAN1_TACH_OL",
+                        "FANBOARD0_FAN2_TACH_IL",
+                        "FANBOARD0_FAN2_TACH_OL",
+                        "FANBOARD0_FAN3_TACH_IL",
+                        "FANBOARD0_FAN3_TACH_OL",
+                        "FANBOARD0_FAN4_TACH_IL",
+                        "FANBOARD0_FAN4_TACH_OL",
+                        "FANBOARD0_FAN5_TACH_IL",
+                        "FANBOARD0_FAN5_TACH_OL",
+                        "FANBOARD1_FAN0_TACH_IL",
+                        "FANBOARD1_FAN0_TACH_OL",
+                        "FANBOARD1_FAN1_TACH_IL",
+                        "FANBOARD1_FAN1_TACH_OL",
+                        "FANBOARD1_FAN2_TACH_IL",
+                        "FANBOARD1_FAN2_TACH_OL",
+                        "FANBOARD1_FAN3_TACH_IL",
+                        "FANBOARD1_FAN3_TACH_OL",
+                        "FANBOARD1_FAN4_TACH_IL",
+                        "FANBOARD1_FAN4_TACH_OL",
+                        "FANBOARD1_FAN5_TACH_IL",
+                        "FANBOARD1_FAN5_TACH_OL"
+                    ],
+                    "setpoint": 0.0,
+                    "pid": {
+                        "samplePeriod": 1,
+                        "proportionalCoeff": 0.0,
+                        "integralCoeff": 0.0,
+                        "derivativeCoeff": 0.0,
+                        "feedFwdOffsetCoeff": 0.0,
+                        "feedFwdGainCoeff": 1.0,
+                        "integralLimit_min": 0.0,
+                        "integralLimit_max": 0.0,
+                        "outLim_min": 0.0,
+                        "outLim_max": 100.0,
+                        "slewNeg": 0.0,
+                        "slewPos": 0.0,
+                        "positiveHysteresis": 0,
+                        "negativeHysteresis": 0
+                    }
+                },
+                {
+                    "name": "Stepwise_MEDUSA_TEMP0_C",
+                    "type": "stepwise",
+                    "inputs": [
+                        "MEDUSA_TEMP0_C"
+                    ],
+                    "setpoint": 0.0,
+                    "pid": {
+                        "samplePeriod": 1,
+                        "isCeiling": false,
+                        "reading": {
+                            "0": 20.0
+                        },
+                        "output": {
+                            "0": 60.0
+                        },
+                        "positiveHysteresis": 0,
+                        "negativeHysteresis": 0
+                    }
+                },
+                {
+                    "name": "Stepwise_MEDUSA_TEMP1_C",
+                    "type": "stepwise",
+                    "inputs": [
+                        "MEDUSA_TEMP1_C"
+                    ],
+                    "setpoint": 0.0,
+                    "pid": {
+                        "samplePeriod": 1,
+                        "isCeiling": false,
+                        "reading": {
+                            "0": 20.0
+                        },
+                        "output": {
+                            "0": 60.0
+                        },
+                        "positiveHysteresis": 0,
+                        "negativeHysteresis": 0
+                    }
+                },
+                {
+                    "name": "Stepwise_MGNT_TEMP_C",
+                    "type": "stepwise",
+                    "inputs": [
+                        "MGNT_TEMP_C"
+                    ],
+                    "setpoint": 0.0,
+                    "pid": {
+                        "samplePeriod": 1,
+                        "isCeiling": false,
+                        "reading": {
+                            "0": 20.0
+                        },
+                        "output": {
+                            "0": 60.0
+                        },
+                        "positiveHysteresis": 0,
+                        "negativeHysteresis": 0
+                    }
+                },
+                {
+                    "name": "Stepwise_SPIDER_TEMP0_C",
+                    "type": "stepwise",
+                    "inputs": [
+                        "SPIDER_TEMP0_C"
+                    ],
+                    "setpoint": 0.0,
+                    "pid": {
+                        "samplePeriod": 1,
+                        "isCeiling": false,
+                        "reading": {
+                            "0": 20.0
+                        },
+                        "output": {
+                            "0": 60.0
+                        },
+                        "positiveHysteresis": 0,
+                        "negativeHysteresis": 0
+                    }
+                },
+                {
+                    "name": "Stepwise_SPIDER_TEMP1_C",
+                    "type": "stepwise",
+                    "inputs": [
+                        "SPIDER_TEMP1_C"
+                    ],
+                    "setpoint": 0.0,
+                    "pid": {
+                        "samplePeriod": 1,
+                        "isCeiling": false,
+                        "reading": {
+                            "0": 20.0
+                        },
+                        "output": {
+                            "0": 60.0
+                        },
+                        "positiveHysteresis": 0,
+                        "negativeHysteresis": 0
+                    }
+                },
+                {
+                    "name": "Stepwise_MEDUSA_12VDELTA0_TEMP_C",
+                    "type": "stepwise",
+                    "inputs": [
+                        "MEDUSA_12VDELTA0_TEMP_C"
+                    ],
+                    "setpoint": 0.0,
+                    "pid": {
+                        "samplePeriod": 1,
+                        "isCeiling": false,
+                        "reading": {
+                            "0": 20.0
+                        },
+                        "output": {
+                            "0": 60.0
+                        },
+                        "positiveHysteresis": 0,
+                        "negativeHysteresis": 0
+                    }
+                },
+                {
+                    "name": "Stepwise_MEDUSA_12VDELTA1_TEMP_C",
+                    "type": "stepwise",
+                    "inputs": [
+                        "MEDUSA_12VDELTA1_TEMP_C"
+                    ],
+                    "setpoint": 0.0,
+                    "pid": {
+                        "samplePeriod": 1,
+                        "isCeiling": false,
+                        "reading": {
+                            "0": 20.0
+                        },
+                        "output": {
+                            "0": 60.0
+                        },
+                        "positiveHysteresis": 0,
+                        "negativeHysteresis": 0
+                    }
+                },
+                {
+                    "name": "Stepwise_MEDUSA_12VDELTA2_TEMP_C",
+                    "type": "stepwise",
+                    "inputs": [
+                        "MEDUSA_12VDELTA2_TEMP_C"
+                    ],
+                    "setpoint": 0.0,
+                    "pid": {
+                        "samplePeriod": 1,
+                        "isCeiling": false,
+                        "reading": {
+                            "0": 20.0
+                        },
+                        "output": {
+                            "0": 60.0
+                        },
+                        "positiveHysteresis": 0,
+                        "negativeHysteresis": 0
+                    }
+                },
+                {
+                    "name": "Stepwise_MEDUSA_12VDELTA3_TEMP_C",
+                    "type": "stepwise",
+                    "inputs": [
+                        "MEDUSA_12VDELTA3_TEMP_C"
+                    ],
+                    "setpoint": 0.0,
+                    "pid": {
+                        "samplePeriod": 1,
+                        "isCeiling": false,
+                        "reading": {
+                            "0": 20.0
+                        },
+                        "output": {
+                            "0": 60.0
+                        },
+                        "positiveHysteresis": 0,
+                        "negativeHysteresis": 0
+                    }
+                },
+                {
+                    "name": "Stepwise_MEDUSA_12VEFFUSE_TEMP_C",
+                    "type": "stepwise",
+                    "inputs": [
+                        "MEDUSA_12VEFFUSE_TEMP_C"
+                    ],
+                    "setpoint": 0.0,
+                    "pid": {
+                        "samplePeriod": 1,
+                        "isCeiling": false,
+                        "reading": {
+                            "0": 20.0
+                        },
+                        "output": {
+                            "0": 60.0
+                        },
+                        "positiveHysteresis": 0,
+                        "negativeHysteresis": 0
+                    }
+                },
+                {
+                    "name": "Stepwise_MEDUSA_48VHSC0_TEMP_C",
+                    "type": "stepwise",
+                    "inputs": [
+                        "MEDUSA_48VHSC0_TEMP_C"
+                    ],
+                    "setpoint": 0.0,
+                    "pid": {
+                        "samplePeriod": 1,
+                        "isCeiling": false,
+                        "reading": {
+                            "0": 20.0
+                        },
+                        "output": {
+                            "0": 60.0
+                        },
+                        "positiveHysteresis": 0,
+                        "negativeHysteresis": 0
+                    }
+                },
+                {
+                    "name": "Stepwise_MEDUSA_48VHSC1_TEMP_C",
+                    "type": "stepwise",
+                    "inputs": [
+                        "MEDUSA_48VHSC1_TEMP_C"
+                    ],
+                    "setpoint": 0.0,
+                    "pid": {
+                        "samplePeriod": 1,
+                        "isCeiling": false,
+                        "reading": {
+                            "0": 20.0
+                        },
+                        "output": {
+                            "0": 60.0
+                        },
+                        "positiveHysteresis": 0,
+                        "negativeHysteresis": 0
+                    }
+                }
+            ]
+        }
+    ]
+}
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/fans/phosphor-pid-control_%.bbappend b/meta-facebook/meta-yosemite4/recipes-phosphor/fans/phosphor-pid-control_%.bbappend
new file mode 100644
index 0000000..2913bf1
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/fans/phosphor-pid-control_%.bbappend
@@ -0,0 +1,10 @@
+FILESEXTRAPATHS:prepend:= "${THISDIR}/${PN}:"
+SRC_URI:append:yosemite4 = " file://config.json \
+                           "
+
+FILES:${PN}:append:yosemite4 = " ${datadir}/swampd/config.json"
+
+do_install:append:yosemite4() {
+    install -d ${D}${datadir}/swampd
+    install -m 0644 -D ${WORKDIR}/config.json ${D}${datadir}/swampd/config.json
+}