|
@@ -42,6 +42,7 @@ struct apd_private_data;
|
|
|
struct apd_device_desc {
|
|
|
unsigned int flags;
|
|
|
unsigned int fixed_clk_rate;
|
|
|
+ struct property_entry *properties;
|
|
|
int (*setup)(struct apd_private_data *pdata);
|
|
|
};
|
|
|
|
|
@@ -76,9 +77,17 @@ static struct apd_device_desc cz_i2c_desc = {
|
|
|
.fixed_clk_rate = 133000000,
|
|
|
};
|
|
|
|
|
|
+static struct property_entry uart_properties[] = {
|
|
|
+ PROPERTY_ENTRY_U32("reg-io-width", 4),
|
|
|
+ PROPERTY_ENTRY_U32("reg-shift", 2),
|
|
|
+ PROPERTY_ENTRY_BOOL("snps,uart-16550-compatible"),
|
|
|
+ { },
|
|
|
+};
|
|
|
+
|
|
|
static struct apd_device_desc cz_uart_desc = {
|
|
|
.setup = acpi_apd_setup,
|
|
|
.fixed_clk_rate = 48000000,
|
|
|
+ .properties = uart_properties,
|
|
|
};
|
|
|
#endif
|
|
|
|
|
@@ -125,6 +134,12 @@ static int acpi_apd_create_device(struct acpi_device *adev,
|
|
|
goto err_out;
|
|
|
}
|
|
|
|
|
|
+ if (dev_desc->properties) {
|
|
|
+ ret = device_add_properties(&adev->dev, dev_desc->properties);
|
|
|
+ if (ret)
|
|
|
+ goto err_out;
|
|
|
+ }
|
|
|
+
|
|
|
adev->driver_data = pdata;
|
|
|
pdev = acpi_create_platform_device(adev);
|
|
|
if (!IS_ERR_OR_NULL(pdev))
|