Kyle McMartin 4c76cc7
diff -uNrp kernel-2.6.35.fc14.orig/drivers/bluetooth/btusb.c kernel-2.6.35.fc14.new/drivers/bluetooth/btusb.c
Kyle McMartin 4c76cc7
--- kernel-2.6.35.fc14.orig/drivers/bluetooth/btusb.c	2010-11-12 12:35:49.390791080 +0100
Kyle McMartin 4c76cc7
+++ kernel-2.6.35.fc14.new/drivers/bluetooth/btusb.c	2010-11-12 12:48:22.090611963 +0100
Kyle McMartin 4c76cc7
@@ -68,6 +68,9 @@ static struct usb_device_id btusb_table[
Kyle McMartin 4c76cc7
 	/* Apple MacBookPro6,2 */
Kyle McMartin 4c76cc7
 	{ USB_DEVICE(0x05ac, 0x8218) },
Kyle McMartin 4c76cc7
 
Kyle McMartin 4c76cc7
+	/* Apple MacBookAir3,1, MacBookAir3,2 */
Kyle McMartin 4c76cc7
+	{ USB_DEVICE(0x05ac, 0x821b) },
Kyle McMartin 4c76cc7
+
Kyle McMartin 4c76cc7
 	/* AVM BlueFRITZ! USB v2.0 */
Kyle McMartin 4c76cc7
 	{ USB_DEVICE(0x057c, 0x3800) },
Kyle McMartin 4c76cc7
 
Kyle McMartin 4c76cc7
diff -uNrp kernel-2.6.35.fc14.orig/drivers/hid/hid-apple.c kernel-2.6.35.fc14.new/drivers/hid/hid-apple.c
Kyle McMartin 4c76cc7
--- kernel-2.6.35.fc14.orig/drivers/hid/hid-apple.c	2010-11-12 12:35:49.153805968 +0100
Kyle McMartin 4c76cc7
+++ kernel-2.6.35.fc14.new/drivers/hid/hid-apple.c	2010-11-12 12:48:35.689816431 +0100
Kyle McMartin 4c76cc7
@@ -59,6 +59,27 @@ struct apple_key_translation {
Kyle McMartin 4c76cc7
 	u8 flags;
Kyle McMartin 4c76cc7
 };
Kyle McMartin 4c76cc7
 
Kyle McMartin 4c76cc7
+static const struct apple_key_translation macbookair_fn_keys[] = {
Kyle McMartin 4c76cc7
+	{ KEY_BACKSPACE, KEY_DELETE },
Kyle McMartin 4c76cc7
+	{ KEY_ENTER,	KEY_INSERT },
Kyle McMartin 4c76cc7
+	{ KEY_F1,	KEY_BRIGHTNESSDOWN, APPLE_FLAG_FKEY },
Kyle McMartin 4c76cc7
+	{ KEY_F2,	KEY_BRIGHTNESSUP,   APPLE_FLAG_FKEY },
Kyle McMartin 4c76cc7
+	{ KEY_F3,	KEY_SCALE,          APPLE_FLAG_FKEY },
Kyle McMartin 4c76cc7
+	{ KEY_F4,	KEY_DASHBOARD,      APPLE_FLAG_FKEY },
Kyle McMartin 4c76cc7
+	{ KEY_F6,	KEY_PREVIOUSSONG,   APPLE_FLAG_FKEY },
Kyle McMartin 4c76cc7
+	{ KEY_F7,	KEY_PLAYPAUSE,      APPLE_FLAG_FKEY },
Kyle McMartin 4c76cc7
+	{ KEY_F8,	KEY_NEXTSONG,       APPLE_FLAG_FKEY },
Kyle McMartin 4c76cc7
+	{ KEY_F9,	KEY_MUTE,           APPLE_FLAG_FKEY },
Kyle McMartin 4c76cc7
+	{ KEY_F10,	KEY_VOLUMEDOWN,     APPLE_FLAG_FKEY },
Kyle McMartin 4c76cc7
+	{ KEY_F11,	KEY_VOLUMEUP,       APPLE_FLAG_FKEY },
Kyle McMartin 4c76cc7
+	{ KEY_F12,	KEY_EJECTCD,        APPLE_FLAG_FKEY },
Kyle McMartin 4c76cc7
+	{ KEY_UP,	KEY_PAGEUP },
Kyle McMartin 4c76cc7
+	{ KEY_DOWN,	KEY_PAGEDOWN },
Kyle McMartin 4c76cc7
+	{ KEY_LEFT,	KEY_HOME },
Kyle McMartin 4c76cc7
+	{ KEY_RIGHT,	KEY_END },
Kyle McMartin 4c76cc7
+	{ }
Kyle McMartin 4c76cc7
+};
Kyle McMartin 4c76cc7
+
Kyle McMartin 4c76cc7
 static const struct apple_key_translation apple_fn_keys[] = {
Kyle McMartin 4c76cc7
 	{ KEY_BACKSPACE, KEY_DELETE },
Kyle McMartin 4c76cc7
 	{ KEY_ENTER,	KEY_INSERT },
Kyle McMartin 4c76cc7
@@ -157,10 +178,14 @@ static int hidinput_apple_event(struct h
Kyle McMartin 4c76cc7
 	if (fnmode) {
Kyle McMartin 4c76cc7
 		int do_translate;
Kyle McMartin 4c76cc7
 
Kyle McMartin 4c76cc7
-		trans = apple_find_translation((hid->product < 0x21d ||
Kyle McMartin 4c76cc7
+		if(hid->product >= 0x023f && hid->product <= 0x0244 ) {
Kyle McMartin 4c76cc7
+			trans = apple_find_translation(macbookair_fn_keys, usage->code);
Kyle McMartin 4c76cc7
+		} else {
Kyle McMartin 4c76cc7
+			trans = apple_find_translation((hid->product < 0x21d ||
Kyle McMartin 4c76cc7
 					hid->product >= 0x300) ?
Kyle McMartin 4c76cc7
 					powerbook_fn_keys : apple_fn_keys,
Kyle McMartin 4c76cc7
 					usage->code);
Kyle McMartin 4c76cc7
+		}
Kyle McMartin 4c76cc7
 		if (trans) {
Kyle McMartin 4c76cc7
 			if (test_bit(usage->code, asc->pressed_fn))
Kyle McMartin 4c76cc7
 				do_translate = 1;
Kyle McMartin 4c76cc7
@@ -435,6 +460,18 @@ static const struct hid_device_id apple_
Kyle McMartin 4c76cc7
 		.driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
Kyle McMartin 4c76cc7
 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS),
Kyle McMartin 4c76cc7
 		.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
Kyle McMartin 4c76cc7
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI),
Kyle McMartin 4c76cc7
+		.driver_data = APPLE_HAS_FN },
Kyle McMartin 4c76cc7
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ISO),
Kyle McMartin 4c76cc7
+		.driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
Kyle McMartin 4c76cc7
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_JIS),
Kyle McMartin 4c76cc7
+		.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
Kyle McMartin 4c76cc7
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ANSI),
Kyle McMartin 4c76cc7
+		.driver_data = APPLE_HAS_FN },
Kyle McMartin 4c76cc7
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ISO),
Kyle McMartin 4c76cc7
+		.driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
Kyle McMartin 4c76cc7
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS),
Kyle McMartin 4c76cc7
+		.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
Kyle McMartin 4c76cc7
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI),
Kyle McMartin 4c76cc7
 		.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
Kyle McMartin 4c76cc7
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO),
Kyle McMartin 4c76cc7
diff -uNrp kernel-2.6.35.fc14.orig/drivers/hid/hid-core.c kernel-2.6.35.fc14.new/drivers/hid/hid-core.c
Kyle McMartin 4c76cc7
--- kernel-2.6.35.fc14.orig/drivers/hid/hid-core.c	2010-11-12 12:35:49.153805968 +0100
Kyle McMartin 4c76cc7
+++ kernel-2.6.35.fc14.new/drivers/hid/hid-core.c	2010-11-12 12:48:35.690816373 +0100
Kyle McMartin 4c76cc7
@@ -1273,6 +1273,12 @@ static const struct hid_device_id hid_bl
Kyle McMartin 4c76cc7
 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI) },
Kyle McMartin 4c76cc7
 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ISO) },
Kyle McMartin 4c76cc7
 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS) },
Kyle McMartin 4c76cc7
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI) },
Kyle McMartin 4c76cc7
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ISO) },
Kyle McMartin 4c76cc7
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_JIS) },
Kyle McMartin 4c76cc7
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ANSI) },
Kyle McMartin 4c76cc7
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ISO) },
Kyle McMartin 4c76cc7
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS) },
Kyle McMartin 4c76cc7
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI) },
Kyle McMartin 4c76cc7
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO) },
Kyle McMartin 4c76cc7
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS) },
Kyle McMartin 4c76cc7
@@ -1738,6 +1744,12 @@ static const struct hid_device_id hid_mo
Kyle McMartin 4c76cc7
 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI) },
Kyle McMartin 4c76cc7
 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ISO) },
Kyle McMartin 4c76cc7
 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS) },
Kyle McMartin 4c76cc7
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI) },
Kyle McMartin 4c76cc7
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ISO) },
Kyle McMartin 4c76cc7
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_JIS) },
Kyle McMartin 4c76cc7
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ANSI) },
Kyle McMartin 4c76cc7
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ISO) },
Kyle McMartin 4c76cc7
+	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS) },
Kyle McMartin 4c76cc7
 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) },
Kyle McMartin 4c76cc7
 	{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) },
Kyle McMartin 4c76cc7
 	{ }
Kyle McMartin 4c76cc7
diff -uNrp kernel-2.6.35.fc14.orig/drivers/hid/hid-ids.h kernel-2.6.35.fc14.new/drivers/hid/hid-ids.h
Kyle McMartin 4c76cc7
--- kernel-2.6.35.fc14.orig/drivers/hid/hid-ids.h	2010-11-12 12:35:49.153805968 +0100
Kyle McMartin 4c76cc7
+++ kernel-2.6.35.fc14.new/drivers/hid/hid-ids.h	2010-11-12 12:48:35.691816314 +0100
Kyle McMartin 4c76cc7
@@ -93,6 +93,12 @@
Kyle McMartin 4c76cc7
 #define USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI	0x0236
Kyle McMartin 4c76cc7
 #define USB_DEVICE_ID_APPLE_WELLSPRING3_ISO	0x0237
Kyle McMartin 4c76cc7
 #define USB_DEVICE_ID_APPLE_WELLSPRING3_JIS	0x0238
Kyle McMartin 4c76cc7
+#define USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI	0x023f
Kyle McMartin 4c76cc7
+#define USB_DEVICE_ID_APPLE_WELLSPRING4_ISO	0x0240
Kyle McMartin 4c76cc7
+#define USB_DEVICE_ID_APPLE_WELLSPRING4_JIS	0x0241
Kyle McMartin 4c76cc7
+#define USB_DEVICE_ID_APPLE_WELLSPRING4A_ANSI	0x0242
Kyle McMartin 4c76cc7
+#define USB_DEVICE_ID_APPLE_WELLSPRING4A_ISO	0x0243
Kyle McMartin 4c76cc7
+#define USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS	0x0244
Kyle McMartin 4c76cc7
 #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI  0x0239
Kyle McMartin 4c76cc7
 #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO   0x023a
Kyle McMartin 4c76cc7
 #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS   0x023b
Kyle McMartin 4c76cc7
diff -uNrp kernel-2.6.35.fc14.orig/drivers/hwmon/applesmc.c kernel-2.6.35.fc14.new/drivers/hwmon/applesmc.c
Kyle McMartin 4c76cc7
--- kernel-2.6.35.fc14.orig/drivers/hwmon/applesmc.c	2010-11-12 12:35:49.618776754 +0100
Kyle McMartin 4c76cc7
+++ kernel-2.6.35.fc14.new/drivers/hwmon/applesmc.c	2010-11-13 12:25:05.810472278 +0100
Kyle McMartin 4c76cc7
@@ -162,6 +162,10 @@ static const char *temperature_sensors_s
Kyle McMartin 4c76cc7
 /* Set 22: MacBook Pro 7,1 */
Kyle McMartin 4c76cc7
 	{ "TB0T", "TB1T", "TB2T", "TC0D", "TC0P", "TN0D", "TN0P", "TN0S",
Kyle McMartin 4c76cc7
 	  "TN1D", "TN1F", "TN1G", "TN1S", "Th1H", "Ts0P", "Ts0S", NULL },
Kyle McMartin 4c76cc7
+/* Set 23: MacBook Air 3,1 */
Kyle McMartin 4c76cc7
+	{ "TB0T", "TB1T", "TB2T", "TC0D", "TC0E", "TC0P", "TC1E", "TCZ3",
Kyle McMartin 4c76cc7
+	  "TCZ4", "TCZ5", "TG0E", "TG1E", "TG2E", "TGZ3", "TGZ4", "TGZ5",
Kyle McMartin 4c76cc7
+	  "TH0F", "TH0O", "TM0P" },
Kyle McMartin 4c76cc7
 };
Kyle McMartin 4c76cc7
 
Kyle McMartin 4c76cc7
 /* List of keys used to read/write fan speeds */
Kyle McMartin 4c76cc7
@@ -1524,11 +1528,21 @@ static __initdata struct dmi_match_data 
Kyle McMartin 4c76cc7
 	{ .accelerometer = 1, .light = 1, .temperature_set = 21 },
Kyle McMartin 4c76cc7
 /* MacBook Pro 7,1: accelerometer, backlight and temperature set 22 */
Kyle McMartin 4c76cc7
 	{ .accelerometer = 1, .light = 1, .temperature_set = 22 },
Kyle McMartin 4c76cc7
+/* MacBook Air 3,1: accelerometer, backlight and temperature set 15 */
Kyle McMartin 4c76cc7
+	{ .accelerometer = 0, .light = 0, .temperature_set = 23 },
Kyle McMartin 4c76cc7
 };
Kyle McMartin 4c76cc7
 
Kyle McMartin 4c76cc7
 /* Note that DMI_MATCH(...,"MacBook") will match "MacBookPro1,1".
Kyle McMartin 4c76cc7
  * So we need to put "Apple MacBook Pro" before "Apple MacBook". */
Kyle McMartin 4c76cc7
 static __initdata struct dmi_system_id applesmc_whitelist[] = {
Kyle McMartin 4c76cc7
+	{ applesmc_dmi_match, "Apple MacBook Air 3", {
Kyle McMartin 4c76cc7
+	  DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
Kyle McMartin 4c76cc7
+	  DMI_MATCH(DMI_PRODUCT_NAME, "MacBookAir3,2") },
Kyle McMartin 4c76cc7
+		&applesmc_dmi_data[23]},
Kyle McMartin 4c76cc7
+	{ applesmc_dmi_match, "Apple MacBook Air 3", {
Kyle McMartin 4c76cc7
+	  DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
Kyle McMartin 4c76cc7
+	  DMI_MATCH(DMI_PRODUCT_NAME, "MacBookAir3,1") },
Kyle McMartin 4c76cc7
+		&applesmc_dmi_data[23]},
Kyle McMartin 4c76cc7
 	{ applesmc_dmi_match, "Apple MacBook Air 2", {
Kyle McMartin 4c76cc7
 	  DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
Kyle McMartin 4c76cc7
 	  DMI_MATCH(DMI_PRODUCT_NAME, "MacBookAir2") },
Kyle McMartin 4c76cc7
diff -uNrp kernel-2.6.35.fc14.orig/drivers/input/mouse/bcm5974.c kernel-2.6.35.fc14.new/drivers/input/mouse/bcm5974.c
Kyle McMartin 4c76cc7
--- kernel-2.6.35.fc14.orig/drivers/input/mouse/bcm5974.c	2010-11-12 12:35:50.004752503 +0100
Kyle McMartin 4c76cc7
+++ kernel-2.6.35.fc14.new/drivers/input/mouse/bcm5974.c	2010-11-12 12:48:13.140136374 +0100
Kyle McMartin 4c76cc7
@@ -55,6 +55,14 @@
Kyle McMartin 4c76cc7
 #define USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI	0x0236
Kyle McMartin 4c76cc7
 #define USB_DEVICE_ID_APPLE_WELLSPRING3_ISO	0x0237
Kyle McMartin 4c76cc7
 #define USB_DEVICE_ID_APPLE_WELLSPRING3_JIS	0x0238
Kyle McMartin 4c76cc7
+/* MacbookAir3,2 (unibody), aka wellspring5 */
Kyle McMartin 4c76cc7
+#define USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI	0x023f
Kyle McMartin 4c76cc7
+#define USB_DEVICE_ID_APPLE_WELLSPRING4_ISO	0x0240
Kyle McMartin 4c76cc7
+#define USB_DEVICE_ID_APPLE_WELLSPRING4_JIS	0x0241
Kyle McMartin 4c76cc7
+/* MacbookAir3,1 (unibody), aka wellspring4 */
Kyle McMartin 4c76cc7
+#define USB_DEVICE_ID_APPLE_WELLSPRING4A_ANSI	0x0242
Kyle McMartin 4c76cc7
+#define USB_DEVICE_ID_APPLE_WELLSPRING4A_ISO	0x0243
Kyle McMartin 4c76cc7
+#define USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS	0x0244
Kyle McMartin 4c76cc7
 
Kyle McMartin 4c76cc7
 #define BCM5974_DEVICE(prod) {					\
Kyle McMartin 4c76cc7
 	.match_flags = (USB_DEVICE_ID_MATCH_DEVICE |		\
Kyle McMartin 4c76cc7
@@ -80,6 +88,14 @@ static const struct usb_device_id bcm597
Kyle McMartin 4c76cc7
 	BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI),
Kyle McMartin 4c76cc7
 	BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING3_ISO),
Kyle McMartin 4c76cc7
 	BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING3_JIS),
Kyle McMartin 4c76cc7
+	/* MacbookAir3,2 */
Kyle McMartin 4c76cc7
+	BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI),
Kyle McMartin 4c76cc7
+	BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING4_ISO),
Kyle McMartin 4c76cc7
+	BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING4_JIS),
Kyle McMartin 4c76cc7
+	/* MacbookAir3,1 */
Kyle McMartin 4c76cc7
+	BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING4A_ANSI),
Kyle McMartin 4c76cc7
+	BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING4A_ISO),
Kyle McMartin 4c76cc7
+	BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS),
Kyle McMartin 4c76cc7
 	/* Terminating entry */
Kyle McMartin 4c76cc7
 	{}
Kyle McMartin 4c76cc7
 };
Kyle McMartin 4c76cc7
@@ -234,6 +250,30 @@ static const struct bcm5974_config bcm59
Kyle McMartin 4c76cc7
 		{ DIM_X, DIM_X / SN_COORD, -4460, 5166 },
Kyle McMartin 4c76cc7
 		{ DIM_Y, DIM_Y / SN_COORD, -75, 6700 }
Kyle McMartin 4c76cc7
 	},
Kyle McMartin 4c76cc7
+	{
Kyle McMartin 4c76cc7
+		USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI,
Kyle McMartin 4c76cc7
+		USB_DEVICE_ID_APPLE_WELLSPRING4_ISO,
Kyle McMartin 4c76cc7
+		USB_DEVICE_ID_APPLE_WELLSPRING4_JIS,
Kyle McMartin 4c76cc7
+		HAS_INTEGRATED_BUTTON,
Kyle McMartin 4c76cc7
+		0x84, sizeof(struct bt_data),
Kyle McMartin 4c76cc7
+		0x81, TYPE2, FINGER_TYPE2, FINGER_TYPE2 + SIZEOF_ALL_FINGERS,
Kyle McMartin 4c76cc7
+		{ DIM_PRESSURE, DIM_PRESSURE / SN_PRESSURE, 0, 300 },
Kyle McMartin 4c76cc7
+		{ DIM_WIDTH, DIM_WIDTH / SN_WIDTH, 0, 2048 },
Kyle McMartin 4c76cc7
+		{ DIM_X, DIM_X / SN_COORD, -4460, 5166 },
Kyle McMartin 4c76cc7
+		{ DIM_Y, DIM_Y / SN_COORD, -75, 6700 }
Kyle McMartin 4c76cc7
+	},
Kyle McMartin 4c76cc7
+	{
Kyle McMartin 4c76cc7
+		USB_DEVICE_ID_APPLE_WELLSPRING4A_ANSI,
Kyle McMartin 4c76cc7
+		USB_DEVICE_ID_APPLE_WELLSPRING4A_ISO,
Kyle McMartin 4c76cc7
+		USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS,
Kyle McMartin 4c76cc7
+		HAS_INTEGRATED_BUTTON,
Kyle McMartin 4c76cc7
+		0x84, sizeof(struct bt_data),
Kyle McMartin 4c76cc7
+		0x81, TYPE2, FINGER_TYPE2, FINGER_TYPE2 + SIZEOF_ALL_FINGERS,
Kyle McMartin 4c76cc7
+		{ DIM_PRESSURE, DIM_PRESSURE / SN_PRESSURE, 0, 300 },
Kyle McMartin 4c76cc7
+		{ DIM_WIDTH, DIM_WIDTH / SN_WIDTH, 0, 2048 },
Kyle McMartin 4c76cc7
+		{ DIM_X, DIM_X / SN_COORD, -4460, 5166 },
Kyle McMartin 4c76cc7
+		{ DIM_Y, DIM_Y / SN_COORD, -75, 6700 }
Kyle McMartin 4c76cc7
+	},
Kyle McMartin 4c76cc7
 	{}
Kyle McMartin 4c76cc7
 };
Kyle McMartin 4c76cc7
 
Kyle McMartin 4c76cc7
diff -uNrp kernel-2.6.35.fc14.orig/drivers/video/backlight/mbp_nvidia_bl.c kernel-2.6.35.fc14.new/drivers/video/backlight/mbp_nvidia_bl.c
Kyle McMartin 4c76cc7
--- kernel-2.6.35.fc14.orig/drivers/video/backlight/mbp_nvidia_bl.c	2010-11-12 12:35:49.159805591 +0100
Kyle McMartin 4c76cc7
+++ kernel-2.6.35.fc14.new/drivers/video/backlight/mbp_nvidia_bl.c	2010-11-12 12:48:47.412131884 +0100
Kyle McMartin 4c76cc7
@@ -335,6 +335,24 @@ static const struct dmi_system_id __init
Kyle McMartin 4c76cc7
 		},
Kyle McMartin 4c76cc7
 		.driver_data	= (void *)&nvidia_chipset_data,
Kyle McMartin 4c76cc7
 	},
Kyle McMartin 4c76cc7
+	{
Kyle McMartin 4c76cc7
+		.callback	= mbp_dmi_match,
Kyle McMartin 4c76cc7
+		.ident		= "MacBookAir 3,1",
Kyle McMartin 4c76cc7
+		.matches	= {
Kyle McMartin 4c76cc7
+			DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
Kyle McMartin 4c76cc7
+			DMI_MATCH(DMI_PRODUCT_NAME, "MacBookAir3,1"),
Kyle McMartin 4c76cc7
+		},
Kyle McMartin 4c76cc7
+		.driver_data	= (void *)&nvidia_chipset_data,
Kyle McMartin 4c76cc7
+	},
Kyle McMartin 4c76cc7
+	{
Kyle McMartin 4c76cc7
+		.callback	= mbp_dmi_match,
Kyle McMartin 4c76cc7
+		.ident		= "MacBookAir 3,2",
Kyle McMartin 4c76cc7
+		.matches	= {
Kyle McMartin 4c76cc7
+			DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
Kyle McMartin 4c76cc7
+			DMI_MATCH(DMI_PRODUCT_NAME, "MacBookAir3,2"),
Kyle McMartin 4c76cc7
+		},
Kyle McMartin 4c76cc7
+		.driver_data	= (void *)&nvidia_chipset_data,
Kyle McMartin 4c76cc7
+	},
Kyle McMartin 4c76cc7
 	{ }
Kyle McMartin 4c76cc7
 };
Kyle McMartin 4c76cc7
 
Kyle McMartin 4c76cc7
diff -uNrp kernel-2.6.35.fc14.orig/sound/pci/hda/patch_cirrus.c kernel-2.6.35.fc14.new/sound/pci/hda/patch_cirrus.c
Kyle McMartin 4c76cc7
--- kernel-2.6.35.fc14.orig/sound/pci/hda/patch_cirrus.c	2010-11-12 12:35:49.005815268 +0100
Kyle McMartin 4c76cc7
+++ kernel-2.6.35.fc14.new/sound/pci/hda/patch_cirrus.c	2010-11-12 12:48:40.379542432 +0100
Kyle McMartin 4c76cc7
@@ -1139,6 +1139,7 @@ static const char *cs420x_models[CS420X_
Kyle McMartin 4c76cc7
 static struct snd_pci_quirk cs420x_cfg_tbl[] = {
Kyle McMartin 4c76cc7
 	SND_PCI_QUIRK(0x10de, 0xcb79, "MacBookPro 5,5", CS420X_MBP55),
Kyle McMartin 4c76cc7
 	SND_PCI_QUIRK(0x8086, 0x7270, "IMac 27 Inch", CS420X_IMAC27),
Kyle McMartin 4c76cc7
+	SND_PCI_QUIRK(0x10de, 0x0d94, "MacBookAir 3,1(2)", CS420X_MBP55),
Kyle McMartin 4c76cc7
 	{} /* terminator */
Kyle McMartin 4c76cc7
 };
Kyle McMartin 4c76cc7