|
@@ -200,7 +200,7 @@ void ata_acpi_associate(struct ata_host *host)
|
|
* RETURNS:
|
|
* RETURNS:
|
|
* 0 on success, -ENOENT if _GTM doesn't exist, -errno on failure.
|
|
* 0 on success, -ENOENT if _GTM doesn't exist, -errno on failure.
|
|
*/
|
|
*/
|
|
-int ata_acpi_gtm(const struct ata_port *ap, struct ata_acpi_gtm *gtm)
|
|
|
|
|
|
+int ata_acpi_gtm(struct ata_port *ap, struct ata_acpi_gtm *gtm)
|
|
{
|
|
{
|
|
struct acpi_buffer output = { .length = ACPI_ALLOCATE_BUFFER };
|
|
struct acpi_buffer output = { .length = ACPI_ALLOCATE_BUFFER };
|
|
union acpi_object *out_obj;
|
|
union acpi_object *out_obj;
|
|
@@ -259,15 +259,16 @@ EXPORT_SYMBOL_GPL(ata_acpi_gtm);
|
|
* RETURNS:
|
|
* RETURNS:
|
|
* 0 on success, -ENOENT if _STM doesn't exist, -errno on failure.
|
|
* 0 on success, -ENOENT if _STM doesn't exist, -errno on failure.
|
|
*/
|
|
*/
|
|
-int ata_acpi_stm(const struct ata_port *ap, struct ata_acpi_gtm *stm)
|
|
|
|
|
|
+int ata_acpi_stm(struct ata_port *ap, const struct ata_acpi_gtm *stm)
|
|
{
|
|
{
|
|
acpi_status status;
|
|
acpi_status status;
|
|
|
|
+ struct ata_acpi_gtm stm_buf = *stm;
|
|
struct acpi_object_list input;
|
|
struct acpi_object_list input;
|
|
union acpi_object in_params[3];
|
|
union acpi_object in_params[3];
|
|
|
|
|
|
in_params[0].type = ACPI_TYPE_BUFFER;
|
|
in_params[0].type = ACPI_TYPE_BUFFER;
|
|
in_params[0].buffer.length = sizeof(struct ata_acpi_gtm);
|
|
in_params[0].buffer.length = sizeof(struct ata_acpi_gtm);
|
|
- in_params[0].buffer.pointer = (u8 *)stm;
|
|
|
|
|
|
+ in_params[0].buffer.pointer = (u8 *)&stm_buf;
|
|
/* Buffers for id may need byteswapping ? */
|
|
/* Buffers for id may need byteswapping ? */
|
|
in_params[1].type = ACPI_TYPE_BUFFER;
|
|
in_params[1].type = ACPI_TYPE_BUFFER;
|
|
in_params[1].buffer.length = 512;
|
|
in_params[1].buffer.length = 512;
|